JEITA CP-3451
- 86 -
Table 28 IMA-ADPCM Format fmt-ck and fact-ck Information (2)
IMA-ADPCM (DVI-ADPCM) Format
extByte[cbSize]
The values of each mode are as follows.
01F9.H (8.0 kHz, 4-bit monaural)
01F9.H (8.0 kHz, 4-bit stereo)
01F9.H (11.025 kHz, 4-bit monaural)
01F9.H (11.025 kHz, 4 bit stereo)
03F9.H (22.05 kHz, 4-bit monaural)
03F9.H (22.05 kHz, 4-bit stereo)
07F9.H (44.10 kHz, 4-bit monaural)
07F9.H (44.10 kHz, 4-bit stereo)
If the definition is, wSamplesPerBlock (an unsigned 16-bit integer
indicating the samples per channel-unit block), and
X = (nBlockAlign -(4 * nChannels))* 8
Y = wBitsPerSample * nChannels
then,
wSamplesPerBlock =(X/Y)+1
dwSampleLength
It is recommended that the actual number of samples that can be
played back be recorded.
The definition is as follows.
If X = ckSize_of_data-ck/nBlockAlign
then,
dwSampleLength = (X+1) * wSamplesPerBlock
The IMA-ADPCM audio data contained in data-ck is packed as shown in Figure 44, Figure 45, and Figure 46 when
it is recorded.
A feature of this format is the existence of a header at the start of each block. The header records the initial sample
value for that block and a step (quantization table) index. The audio data in each channel is independent, so the
number of header words is the same as the number of channels.
A header word consists of 4 bytes, and is defined as in Equation 5. The existence of a header means IMA-ADPCM
audio data can be played from any block. In other words, random access is possible on a per-block basis.
In Figure 44 to Figure 46, the left-hand byte stores the lower address and the right-hand byte holds the upper
address.
typedef struct {
signed int iSamp0;
// Initial sample value of the block
unsigned char bStepTableIndex;
// Step table index
unsigned char bReserved;
// reserved byte
} IMA_ADPCMBLOCKHEADER;
- - -[Equation 5]