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]