Creative ADPCM
Jump to navigation
Jump to search
- Format tag: 0x200
- Company: Creative
This is a variation of Yamaha ADPCM, which is also used in Creative Voice.
Decoding Process
get new nibble from stream sign = nibble & 8 delta = nibble & 7 diff = ((2 * delta + 1) * step) / 8 if sign > 0 newval = (oldval * 254 / 256) - diff else newval = (oldval * 254 / 256) + diff step = (ct_table[delta] * step) >> 8 step = clip(step, 511, 32767) newval = clip(newval, -32769, 32767) output newval as 16-bit sample
And here is the table used in step modification:
const int ct_table[8] = { 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x0133, 0x0199, 0x0200, 0x0266 }