Dialogic IMA ADPCM

From MultimediaWiki
Jump to navigation Jump to search

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]