Difference between revisions of "Dialogic IMA ADPCM"

From MultimediaWiki
Jump to navigation Jump to search
(add mirrored PDF)
(note about MSM5205 not saturating its accumulator, add more OKI chips, add link to datasheet)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
* Extension: vox
* Microsoft Audio ID: 0x0010
* Company: [[Dialogic]]
* Extension: vox, oki
* Company: [[Dialogic]], Oki Electric Industry
* Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf
* Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf


Line 24: Line 25:
   494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552  
   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
[[https://console5.com/techwiki/images/f/f8/MSM5205.pdf MSM5205/MSM5218 Datasheet]]




Line 29: Line 39:
[[Category:ADPCM Audio Codecs]]
[[Category:ADPCM Audio Codecs]]
[[Category:IMA ADPCM Audio Codecs]]
[[Category:IMA ADPCM Audio Codecs]]
[[Category:Formats missing in FFmpeg]]

Latest revision as of 17:50, 2 January 2020

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]