Creative ADPCM: Difference between revisions

From MultimediaWiki
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 [[IMA ADPCM]], which is also used in [[Creative Voice]].
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

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
 }