Dialogic IMA ADPCM: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
(note about MSM5205 not saturating its accumulator, add more OKI chips, add link to datasheet) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
* Microsoft Audio ID: 0x0010 | * Microsoft Audio ID: 0x0010 | ||
* Extension: vox | * Extension: vox, oki | ||
* Company: [[Dialogic]] | * Company: [[Dialogic]], Oki Electric Industry | ||
* Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf | * Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf | ||
Line 25: | 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 30: | Line 39: | ||
[[Category:ADPCM Audio Codecs]] | [[Category:ADPCM Audio Codecs]] | ||
[[Category:IMA ADPCM Audio Codecs]] | [[Category:IMA ADPCM Audio Codecs]] | ||
Latest revision as of 17:50, 2 January 2020
- Microsoft Audio ID: 0x0010
- Extension: vox, oki
- Company: Dialogic, Oki Electric Industry
- Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf
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