Creative ADPCM: Difference between revisions
Jump to navigation
Jump to search
m (add to ADPCM category) |
(This is definitely not a variation on IMA ADPCM, which is an Oki/Dialogic derivative, but is Jayant-based, like Yamaha ADPCM) |
||
Line 2: | Line 2: | ||
* Company: [[Creative]] | * Company: [[Creative]] | ||
This is variation of [[ | This is a variation of [[Yamaha ADPCM]], which is also used in [[Creative Voice]]. | ||
== Decoding Process == | == Decoding Process == |
Latest revision as of 10:12, 5 April 2019
- 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 }