Dialogic IMA ADPCM

From MultimediaWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Dialogic ADPCM is a variation of the standard IMA ADPCM algorithm that is optimized for monaural voice data. The encoder operates on 12-bit input samples and outputs 4-bit encoding for each sample. This yields a 3:1 compression ratio.

Dialogic ADPCM data is transported in raw files bearing the extension VOX. For each byte in the file, the high nibble (bits 7-4) is decoded first, then the low nibble.

The decoding algorithm is the same as the standard IMA ADPCM algorithm with the following modifications:

  • A different, smaller step table is used (refer to Appendix A for the table). The table contains 49 values ranging from indices 0..48.
  • The predictor is always initialized to 0 at the start of decoding.
  • The index is always initialized to 16 at the start of decoding.
  • When the index is modified by the ADPCM delta, it should be clamped within the 0..48 range, rather than 0..88.
  • When the diff is applied to the predictor, it should be clamped within a signed 12-bit range (-2048..2047) rather than a signed 16-bit range.
  • The output samples are 12 bits in resolution and should be scaled as necessary.

Modified Step Table

int dialogic_ima_step[49] = { 
  16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 
  50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143,
  157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 
  494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552 
};

Hardware Implementations

The following ICs can decode this codec:

  • OKI MSM5205 [dec] (Note that this particular chip, unlike any of the other OKI ADPCM decoder/codec chips, does not saturate the accumulator at its limits)
  • OKI MSM5218 [codec]
  • OKI MSM6295 [dec]
  • OKI MSM6585

[MSM5205/MSM5218 Datasheet]