<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multimedia.cx/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lord+Nightmare</id>
	<title>MultimediaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multimedia.cx/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lord+Nightmare"/>
	<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php/Special:Contributions/Lord_Nightmare"/>
	<updated>2026-07-11T00:21:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=16086</id>
		<title>Dialogic IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=16086"/>
		<updated>2025-10-22T23:11:00Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: further clarification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0010 &lt;br /&gt;
* Extension: vox, oki&lt;br /&gt;
* Company: [[Dialogic]], Oki Electric Industry&lt;br /&gt;
* Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The decoding algorithm is the same as the standard IMA ADPCM algorithm with the following modifications:&lt;br /&gt;
&lt;br /&gt;
* A different, smaller step table is used (refer to Appendix A for the table). The table contains 49 values ranging from indices 0..48.&lt;br /&gt;
* The predictor is always initialized to 0 at the start of decoding.&lt;br /&gt;
* The step table index is always initialized to index 0 at the start of decoding.&lt;br /&gt;
* When the index is modified by the ADPCM delta, it should be clamped within the 0..48 range, rather than 0..88.&lt;br /&gt;
* 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.&lt;br /&gt;
* The output samples are 12 bits in resolution and should be scaled as necessary.&lt;br /&gt;
&lt;br /&gt;
== Modified Step Table ==&lt;br /&gt;
&lt;br /&gt;
 int dialogic_ima_step[49] = { &lt;br /&gt;
   16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, &lt;br /&gt;
   50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143,&lt;br /&gt;
   157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, &lt;br /&gt;
   494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552 &lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Hardware Implementations ==&lt;br /&gt;
The following ICs can decode this codec:&lt;br /&gt;
* 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)&lt;br /&gt;
* OKI MSM5218 [codec]&lt;br /&gt;
* OKI MSM6295 [dec]&lt;br /&gt;
* OKI MSM6585&lt;br /&gt;
&lt;br /&gt;
[[https://console5.com/techwiki/images/f/f8/MSM5205.pdf MSM5205/MSM5218 Datasheet]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=16085</id>
		<title>Dialogic IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=16085"/>
		<updated>2025-10-22T23:10:02Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: fix an incorrect piece of information about the initial index value&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0010 &lt;br /&gt;
* Extension: vox, oki&lt;br /&gt;
* Company: [[Dialogic]], Oki Electric Industry&lt;br /&gt;
* Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The decoding algorithm is the same as the standard IMA ADPCM algorithm with the following modifications:&lt;br /&gt;
&lt;br /&gt;
* A different, smaller step table is used (refer to Appendix A for the table). The table contains 49 values ranging from indices 0..48.&lt;br /&gt;
* The predictor is always initialized to 0 at the start of decoding.&lt;br /&gt;
* The index is always initialized to index 0 (value of 16) at the start of decoding.&lt;br /&gt;
* When the index is modified by the ADPCM delta, it should be clamped within the 0..48 range, rather than 0..88.&lt;br /&gt;
* 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.&lt;br /&gt;
* The output samples are 12 bits in resolution and should be scaled as necessary.&lt;br /&gt;
&lt;br /&gt;
== Modified Step Table ==&lt;br /&gt;
&lt;br /&gt;
 int dialogic_ima_step[49] = { &lt;br /&gt;
   16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, &lt;br /&gt;
   50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143,&lt;br /&gt;
   157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, &lt;br /&gt;
   494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552 &lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Hardware Implementations ==&lt;br /&gt;
The following ICs can decode this codec:&lt;br /&gt;
* 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)&lt;br /&gt;
* OKI MSM5218 [codec]&lt;br /&gt;
* OKI MSM6295 [dec]&lt;br /&gt;
* OKI MSM6585&lt;br /&gt;
&lt;br /&gt;
[[https://console5.com/techwiki/images/f/f8/MSM5205.pdf MSM5205/MSM5218 Datasheet]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TwoCC&amp;diff=15469</id>
		<title>TwoCC</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TwoCC&amp;diff=15469"/>
		<updated>2020-01-03T00:52:39Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add more wikilinks for yamaha adpcm and oki/dialogic adpcm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The TwoCC is the audio counterpart to the [[:Category:Video FourCCs|video FourCC]]. It is the audio format identifier used in the [[RIFF]] based multimedia formats by [[Microsoft]] ([[WAV]] and [[AVI]]). The TwoCC is 2 bytes long and stored in little endian format on disk. You can register your TwoCC with Microsoft but it seems that only some companies perform this process.&lt;br /&gt;
&lt;br /&gt;
If you need help finding any codec mail me compn@ffmpeg.org&lt;br /&gt;
&lt;br /&gt;
* 0x0000	Microsoft Unknown Wave Format&lt;br /&gt;
* [[PCM#Microsoft_WAV.2FAVI.2FASF_Identifiers|0x0001	Microsoft PCM Format]]&lt;br /&gt;
* [[Microsoft_ADPCM|0x0002  Microsoft ADPCM CODEC for MSACM  msacm.msadpcm       msadp32.acm]]&lt;br /&gt;
* 0x0003   IEEE FLOAT   Microsoft IEEE754&lt;br /&gt;
* 0x0004	Compaq Computer VSELP (codec for Windows CE 2.0 devices)&lt;br /&gt;
* 0x0005   IBM CVSD   IBM Corporation&lt;br /&gt;
* [[PCM#Microsoft_WAV.2FAVI.2FASF_Identifiers|0x0006  Microsoft CCITT G.711 (A-Law and u-Law) CODEC for MSACM  msacm.msg711       msg711.acm]]&lt;br /&gt;
* [[PCM#Microsoft_WAV.2FAVI.2FASF_Identifiers|0x0007  Microsoft CCITT G.711 (A-Law and u-Law) CODEC for MSACM  msacm.msg711       msg711.acm]]&lt;br /&gt;
* 0x0008	Microsoft DTS&lt;br /&gt;
* 0x0009	Microsoft DRM&lt;br /&gt;
* 0x000A   WMSpeech   Microsoft&lt;br /&gt;
* 0x000B   Windows Media RT Voice   Microsoft&lt;br /&gt;
* [[Dialogic_IMA_ADPCM|0x0010	OKI ADPCM]]&lt;br /&gt;
* [[Microsoft_IMA_ADPCM|0x0011  IMA ADPCM CODEC for MSACM  msacm.imaadpcm       imaadp32.acm]]&lt;br /&gt;
* 0x0012	Videologic MediaSpace ADPCM&lt;br /&gt;
* 0x0013   Sierra ADPCM   Sierra Semiconductor Corp&lt;br /&gt;
* 0x0014   G723 ADPCM   Antex Electronics Corporation&lt;br /&gt;
* 0x0015   DIGISTD   DSP Solutions, Inc.&lt;br /&gt;
* 0x0016   DIGIFIX   DSP Solutions, Inc.&lt;br /&gt;
* [[Dialogic_IMA_ADPCM|0x0017	Dialogic OKI ADPCM]]&lt;br /&gt;
* 0x0018	MediaVision ADPCM&lt;br /&gt;
* 0x0019   CU CODEC  Mobile Voice   Hewlett-Packard Company&lt;br /&gt;
* 0x001A	Hewlett-Packard HP DYNAMIC VOICE&lt;br /&gt;
* [[Yamaha_ADPCM|0x0020	Yamaha ADPCM]]&lt;br /&gt;
* 0x0021   Sonarc   Speech Compression&lt;br /&gt;
* 0x0022  DSP Group TrueSpeech(TM) Audio Codec for MSACM V3.50  msacm.trspch       tssoft32.acm&lt;br /&gt;
* 0x0023   ECHOSC1   Echo Speech Corporation&lt;br /&gt;
* 0x0024   Audiofile AF36   Virtual Music, Inc.&lt;br /&gt;
* 0x0025   APTX   Audio Processing Technology&lt;br /&gt;
* 0x0026   Audiofile AF10   Virtual Music, Inc.&lt;br /&gt;
* 0x0027	Prosody 1612 codec for CTI Speech Card Aculab plc&lt;br /&gt;
* 0x0028   LRC   Merging Technologies S.A.&lt;br /&gt;
* 0x0030	Dolby Labs AC2&lt;br /&gt;
* 0x0031  Microsoft GSM 6.10 Audio CODEC for MSACM  msacm.msgsm610       msgsm32.acm&lt;br /&gt;
* 0x0032   MSNAudio   Microsoft&lt;br /&gt;
* 0x0033   Antex ADPCME   Antex Electronics Corporation&lt;br /&gt;
* 0x0034   Control Res. VQLPC   Control Resources Limited&lt;br /&gt;
* 0x0035   DigiReal   DSP Solutions, Inc.&lt;br /&gt;
* 0x0036   DigiADPCM   DSP Solutions, Inc.&lt;br /&gt;
* 0x0037   Control Res. CR10   Control Resources Limited&lt;br /&gt;
* 0x0038   NMS VBXADPCM   Natural MicroSystems&lt;br /&gt;
* 0x0039   CS IMAADPCM Roland RDAC  Crystal Semiconductor IMA ADPCM &lt;br /&gt;
* 0x003A   ECHOSC3   Echo Speech Corporation &lt;br /&gt;
* 0x003B   Rockwell ADPCM   Rockwell International &lt;br /&gt;
* 0x003C   Rockwell DIGITALK   Rockwell International &lt;br /&gt;
* 0x003D   XEBEC   Xebec Multimedia Solutions Limited &lt;br /&gt;
* 0x0040   G721 ADPCM   Antex Electronics Corporation&lt;br /&gt;
* 0x0041   G728 CELP   Antex Electronics Corporation&lt;br /&gt;
* 0x0042  Microsoft G.723.1 CODEC  MSACM  msacm.msg723       msg723.acm&lt;br /&gt;
* 0x0043	IBM AVC ADPCM&lt;br /&gt;
* 0x0044   MSG729   Microsoft&lt;br /&gt;
* 0x0045	ITU-T G.726 ADPCM&lt;br /&gt;
* 0x0050   MPEG (MP1/MP2)   ISO/IEC&lt;br /&gt;
* 0x0050  QDesign MPEG  QDesign Corporation     qmpeg.acm&lt;br /&gt;
* 0x0052	InSoft RT24 (ACM codec is an alternative codec)&lt;br /&gt;
* 0x0053   PAC   InSoft, Inc.&lt;br /&gt;
* 0x0055  MPEG Layer-3 Audio Codec for MSACM  msacm.l3ACM      l3codeca.acm&lt;br /&gt;
* 0x0057	AMR-NB&lt;br /&gt;
* 0x0058	AMR-WB&lt;br /&gt;
* 0x0059	Lucent G.723&lt;br /&gt;
* 0x0060   Cirrus   Cirrus Logic&lt;br /&gt;
* 0x0061	ESS Technology ESPCM / Duck DK4 ADPCM&lt;br /&gt;
* 0x0062 msacm.voxacm160  vct3216.acm  Voxware v1.1.6/1.1.8 File-Mode Codecs  Voxware, Inc. vct3216.acm&lt;br /&gt;
* 0x0062	Voxware file-mode codec / Duck DK3 ADPCM&lt;br /&gt;
* 0x0063   Canopus ATRAC   Canopus, co., Ltd.&lt;br /&gt;
* 0x0064   G726 ADPCM   APICOM&lt;br /&gt;
* 0x0065   G722 ADPCM   APICOM&lt;br /&gt;
* 0x0066   DSAT   Microsoft&lt;br /&gt;
* 0x0067   DSAT DISPLAY   Microsoft&lt;br /&gt;
* 0x0069  msacm.voxacm160  Voxware v1.1.8 Bitstream-Mode Codecs  Voxware, Inc.   vct3216.acm&lt;br /&gt;
* 0x0070	Voxware AC8 (Lernout &amp;amp; Hauspie CELP 4.8 kbps) lhacm.acm&lt;br /&gt;
* 0x0071	Voxware AC10 (Lernout &amp;amp; Hauspie CBS 8kbps) lhacm.acm&lt;br /&gt;
* 0x0072	Voxware AC16 (Lernout &amp;amp; Hauspie CBS 12kbps) lhacm.acm&lt;br /&gt;
* 0x0073	Voxware AC20 (Lernout &amp;amp; Hauspie CBS 16kbps) lhacm.acm&lt;br /&gt;
* 0x0074  Voxware MetaVoice Audio Compression Manager Driver  msacm.voxacm160      vct3216.acm&lt;br /&gt;
* 0x0075  Voxware RT29 Metasound Audio Compression Manager Driver  msacm.voxacm160      vct3216.acm&lt;br /&gt;
* 0x0076	Voxware RT29HW&lt;br /&gt;
* 0x0077	Voxware VR12&lt;br /&gt;
* 0x0078	Voxware VR18&lt;br /&gt;
* 0x0079	Voxware TQ40&lt;br /&gt;
* 0x007A	Voxware SC3&lt;br /&gt;
* 0x007B	Voxware SC3&lt;br /&gt;
* 0x0080   Softsound   Softsound, Ltd.&lt;br /&gt;
* 0x0081	Voxware TQ60&lt;br /&gt;
* 0x0082	Microsoft MSRT24 (ACM codec is an alternative codec)&lt;br /&gt;
* 0x0083   G729A   AT&amp;amp;T Labs, Inc.&lt;br /&gt;
* 0x0084   MVI MVI2   Motion Pixels&lt;br /&gt;
* 0x0085	DataFusion Systems G.726&lt;br /&gt;
* 0x0086	DataFusion Systems GSM610&lt;br /&gt;
* 0x0088   ISIAUDIO   Iterated Systems, Inc.&lt;br /&gt;
* 0x0089   ONLIVE   OnLive! Technologies, Inc.&lt;br /&gt;
* 0x008A   MULTITUDE FT SX20   Multitude, Inc.&lt;br /&gt;
* 0x008B   G.721 ADPCM   Infocom ITS A/S&lt;br /&gt;
* 0x008C   CONVEDIA G729   Convedia Corporation&lt;br /&gt;
* 0x008D	Not specified   congruency, Inc.&lt;br /&gt;
* 0x0091   SBC24   Siemens Business Communications Sys&lt;br /&gt;
* 0x0092   Dolby AC3 SPDIF   Sonic Foundry&lt;br /&gt;
* 0x0093	MediaSonic G.723&lt;br /&gt;
* 0x0094   Prosody 8KBPS   Aculab plc&lt;br /&gt;
* 0x0097   Zyxel ADPCM   ZyXEL Communications, Inc.&lt;br /&gt;
* 0x0098	Philips LPCBB     smlpcbb.acm&lt;br /&gt;
* 0x0099   PACKED   Studer Professional Audio AG&lt;br /&gt;
* 0x00A0   Malden PhonyTalk   Malden Electronics Ltd.&lt;br /&gt;
* 0x00A1   Racal Recorder GSM   Racal Recorders&lt;br /&gt;
* 0x00A2   Racal Recorder G720.a   Racal Recorders&lt;br /&gt;
* 0x00A3   Racal G723.1   Racal Recorders&lt;br /&gt;
* 0x00A4   Racal Tetra ACELP   Racal Recorders&lt;br /&gt;
* 0x00B0	NEC AAC NEC Corporation&lt;br /&gt;
* 0x00E1        Microsoft ADPCM&lt;br /&gt;
* 0x00f4  WRPR codec  &lt;br /&gt;
* 0x00FF	AAC&lt;br /&gt;
* 0x0100	Rhetorex ADPCM&lt;br /&gt;
* 0x0101	IBM mu-law / BeCubed Software IRAT&lt;br /&gt;
* 0x0102   ALAW   IBM a-law format&lt;br /&gt;
* 0x0103   ADPCM   IBM AVC Adaptive Differential Pulse Code Modulation&lt;br /&gt;
* 0x0111	Vivo G.723&lt;br /&gt;
* 0x0112	Vivo Siren&lt;br /&gt;
* 0x0120   PHILIPS CELP   Philips Speech Processing&lt;br /&gt;
* 0x0121   PHILIPS GRUNDIG   Philips Speech Processing&lt;br /&gt;
* 0x0123   DEC G723   Digital Equipment Corporation Digital G.723&lt;br /&gt;
* 0x0125	Sanyo LD ADPCM&lt;br /&gt;
* 0x0130 Sipro Lab Telecom ACELP.net audio codec Sipro Lab TelecomInc.    sl_anet.acm&lt;br /&gt;
* 0x0131	Sipro Lab Telecom ACELP.4800&lt;br /&gt;
* 0x0132	Sipro Lab Telecom ACELP.8V3&lt;br /&gt;
* 0x0133	Sipro Lab Telecom ACELP.G.729&lt;br /&gt;
* 0x0134	Sipro Lab Telecom ACELP.G.729A&lt;br /&gt;
* 0x0135	Sipro Lab Telecom ACELP.KELVIN&lt;br /&gt;
* 0x0136   VOICEAGE AMR   VoiceAge Corporation&lt;br /&gt;
* 0x0140   G726ADPCM   Dictaphone Corporation&lt;br /&gt;
* 0x0141   CELP68   Dictaphone Corporation&lt;br /&gt;
* 0x0142   CELP54   Dictaphone Corporation&lt;br /&gt;
* 0x0150	Qualcomm PureVoice&lt;br /&gt;
* 0x0151	Qualcomm HalfRate&lt;br /&gt;
* 0x0155   TUBGSM   Ring Zero Systems, Inc.&lt;br /&gt;
* 0x0160  Windows Media Audio  msacm.msaudio1       msaud32.acm&lt;br /&gt;
* 0x0161	Windows Media Audio V2 V7 V8 V9 / DivX audio (WMA) / Alex AC3 Audio msaud32.acm&lt;br /&gt;
* 0x0162   Windows Media Audio 9 Professional   Microsoft, Inc.&lt;br /&gt;
* 0x0163   Windows Media Audio 9 Lossless   Microsoft, Inc.&lt;br /&gt;
* 0x0164	WMA Pro over S/PDIF&lt;br /&gt;
* 0x0170   UNISYS NAP ADPCM   Unisys Corporation&lt;br /&gt;
* 0x0171   UNISYS NAP ULAW   Unisys Corporation&lt;br /&gt;
* 0x0172   UNISYS NAP ALAW   Unisys Corporation&lt;br /&gt;
* 0x0173   UNISYS NAP 16K   Unisys Corporation&lt;br /&gt;
* 0x0174	MM SYCOM ACM SYC008     	SyCom Technologies&lt;br /&gt;
* 0x0175   MM SYCOM ACM SYC701 G726L   SyCom Technologies&lt;br /&gt;
* 0x0176   MM SYCOM ACM SYC701 CELP54   SyCom Technologies&lt;br /&gt;
* 0x0177   MM SYCOM ACM SYC701 CELP68   SyCom Technologies&lt;br /&gt;
* 0x0178	Knowledge Adventure ADPCM&lt;br /&gt;
* 0x0180   MPEG2AAC   Fraunhofer IIS&lt;br /&gt;
* 0x0190   DTS DS   Digital Theater Systems, Inc.&lt;br /&gt;
* 0x0200	Creative Labs ADPCM&lt;br /&gt;
* 0x0202	Creative Labs FastSpeech8&lt;br /&gt;
* 0x0203	Creative Labs FastSpeech10&lt;br /&gt;
* 0x0210   UHER ADPCM   UHER informatic GmbH&lt;br /&gt;
* 0x0215  Ulead DV AudioACM Driver  msacm.dvACM     dvacm.acm&lt;br /&gt;
* 0x0216 Ulead DV Audio Codec Ulead Systems, Inc.    Dvacm.acm&lt;br /&gt;
* 0x0217  Ulead MP3 codec engine  msacm.ulmp3acm  Warning: Codec is disabled&lt;br /&gt;
* 0x0220   Quarterdeck   Quarterdeck Corporation&lt;br /&gt;
* 0x0230   I-Link VC   I-link Worldwide&lt;br /&gt;
* 0x0240   RAW SPORT   Aureal Semiconductor&lt;br /&gt;
* 0x0241   ESST AC3   ESS Technology&lt;br /&gt;
* 0x0250   IPI HSX   Interactive Products, Inc.&lt;br /&gt;
* 0x0251   IPI RPELP   Interactive Products, Inc.&lt;br /&gt;
* 0x0260   CS2   Consistent Software&lt;br /&gt;
* 0x0270	Sony ATRAC3 (SCX, same as MiniDisk LP2)&lt;br /&gt;
* 0x0271	Sony SCY&lt;br /&gt;
* 0x0272	Sony ATRAC3&lt;br /&gt;
* 0x0273	Sony SPC&lt;br /&gt;
* 0x0280	TELUM   Telum Inc.&lt;br /&gt;
* 0x0281	TELUMIA Telum Inc.&lt;br /&gt;
* 0x0285	Norcom Voice Systems ADPCM  Norcom Electronics Corporation&lt;br /&gt;
* 0x028e MSN Messenger Audio Codec msacm.siren     sirenacm.dll&lt;br /&gt;
* 0x0300	Fujitsu FM TOWNS SND&lt;br /&gt;
* 0x0301   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0302   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0303   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0304   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0305   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0306   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0307   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0308   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0350	DEVELOPMENT     Micronas Semiconductors, Inc.&lt;br /&gt;
* 0x0351   CELP833   Micronas Semiconductors, Inc.&lt;br /&gt;
* 0x03eb  DVMPEG Audio  Darim Vision Co., Ltd.     dvacmau.dll&lt;br /&gt;
* 0x0400	BTV Digital (Brooktree digital audio format)&lt;br /&gt;
* 0x0401  Intel Music Coder for MSACM msacm.imc    imc32.acm&lt;br /&gt;
* 0x0402  Indeo® audio software  msacm.iac2       iac25_32.ax&lt;br /&gt;
* 0x0450	QDesign Music&lt;br /&gt;
* 0x0500	On2 VP7 On2 Technologies AVC Audio&lt;br /&gt;
* 0x0501	On2 VP6 On2 Technologies&lt;br /&gt;
* 0x0680	AT&amp;amp;T Labs VME VMPCM&lt;br /&gt;
* 0x0681	AT&amp;amp;T Labs TPC&lt;br /&gt;
* 0x0700	YMPEG Alpha (dummy for MPEG-2 compressor)&lt;br /&gt;
* 0x08AE ClearJump Lightwave Lossless   http://www.clearjump.com&lt;br /&gt;
* 0x0AAC   HDX4 AAC   Jomigo GmbH&lt;br /&gt;
* 0x1000	Olivetti GSM&lt;br /&gt;
* 0x1001	Olivetti ADPCM&lt;br /&gt;
* 0x1002	Olivetti CELP&lt;br /&gt;
* 0x1003	Olivetti SBC&lt;br /&gt;
* 0x1004	Olivetti OPR&lt;br /&gt;
* 0x1100	Lernout &amp;amp; Hauspie codec&lt;br /&gt;
* 0x1101	Lernout &amp;amp; Hauspie CELP codec&lt;br /&gt;
* 0x1102	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1103	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1104	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1400	Norris Communication&lt;br /&gt;
* 0x1401	AT&amp;amp;T Labs ISIAudio&lt;br /&gt;
* 0x1500   Soundspace Musicompress   Soundspace Music Compression Netspeak GSM - nsgsm32.acm&lt;br /&gt;
* 0x1501	Netspeak Truespeech - nstsp32.acm&lt;br /&gt;
* 0x181C   VoxWare RT24 speech codec   Voxware Inc.&lt;br /&gt;
* 0x181E	Lucent elemedia AX24000P Music codec&lt;br /&gt;
* 0x1971	Sonic Foundry LOSSLESS   &lt;br /&gt;
* 0x1979	Innings Telecom Inc. ADPCM   &lt;br /&gt;
* 0x1C07	Lucent SX8300P speech codec&lt;br /&gt;
* 0x1C0C	Lucent SX5363S G.723 compliant codec&lt;br /&gt;
* 0x1F03	CUseeMe DigiTalk (ex-Rocwell)&lt;br /&gt;
* 0x1FC4   NCT ALF2CD codec   http://www.nctsoft.com&lt;br /&gt;
* 0x2000  AC-3ACM Codec  msacm.ac3acm     ac3acm.acm&lt;br /&gt;
* 0x2001   Dolby DTS   Dolby Labs&lt;br /&gt;
* 0x2002	RealAudio 1 / 2 14.4&lt;br /&gt;
* 0x2003	RealAudio 1 / 2 28.8&lt;br /&gt;
* 0x2004	RealAudio G2 / 8 Cook (low bitrate)&lt;br /&gt;
* 0x2005	RealAudio 3 / 4 / 5 Music (DNET)&lt;br /&gt;
* 0x2006	RealAudio 10 AAC (RAAC)&lt;br /&gt;
* 0x2007	RealAudio 10 AAC+ (RACP)&lt;br /&gt;
* 0x2500	Reserved range to * 0x2600  Microsoft&lt;br /&gt;
* 0x3313 makeAVIS (ffvfw fake AVI sound from AviSynth scripts)  ff_acm.acm&lt;br /&gt;
* 0x4143	Divio MPEG-4 AAC audio&lt;br /&gt;
* 0x4180	fortherecord MPEG AAC celp?&lt;br /&gt;
* 0x4201   Nokia adaptive multirate   Nokia Mobile Phones&lt;br /&gt;
* 0x4243   Divio's G726   Divio, Inc.&lt;br /&gt;
* 0x434C	LEAD Speech&lt;br /&gt;
* 0x564C	LEAD Vorbis&lt;br /&gt;
* 0x5756   WavPack Audio   xiph.org [open source]&lt;br /&gt;
* 0x6665	Litewave audio compressor (lw.zip from http://www.clearjump.com)&lt;br /&gt;
* 0x674f  Ogg Vorbis mode 1 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6750  Ogg Vorbis mode 2 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6751  Ogg Vorbis mode 3 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x676f  Ogg Vorbis mode 1+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6770  Ogg Vorbis mode 2+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6771  Ogg Vorbis mode 3+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x7000	3COM NBX  3Com Corporation&lt;br /&gt;
* 0x706D   FAAD AAC   (open source)&lt;br /&gt;
* 0x77A1        The True Audio&lt;br /&gt;
* 0x7A21	GSM-AMR (CBR, no SID) 	EmzAMRNBDec.dll 	(doesnt actually decode properly)&lt;br /&gt;
* 0x7A22	GSM-AMR (VBR, including SID) GSMA/3GPP	EmzAMRNBDec.dll 	(doesnt actually decode properly)&lt;br /&gt;
* 0x8180 (unverified) For the Record - http://www.fortherecord.com&lt;br /&gt;
* 0xA100   COMVERSEINFOSYS G723 1   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA101   COMVERSEINFOSYS AVQSBC   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA102   COMVERSEINFOSYS OLDSBC   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA103	Symbol Technology's G729A  Symbol Technologies Canada&lt;br /&gt;
* 0xA104	VoiceAge AMR WB VoiceAge Corporation&lt;br /&gt;
* 0xA105	Ingenient Technologies Inc. G726&lt;br /&gt;
* 0xA106   ISO/MPEG-4 advanced audio Coding   AAC.&lt;br /&gt;
* 0xA107   Encore Software Ltd's G726   Encore Software Ltd.&lt;br /&gt;
* 0xA109   Speex ACM Codec   xiph.org (Open Source)&lt;br /&gt;
* 0xC0CC GigaLink Audio Codec&lt;br /&gt;
* 0xDFAC DebugMode SonicFoundry Vegas FrameServer ACM Codec&lt;br /&gt;
* 0xe708	Unknown -&lt;br /&gt;
* 0xF1AC	Free Lossless Audio Codec FLAC&lt;br /&gt;
* 0xFFFC	VDOwave Audio&lt;br /&gt;
* 0xFFFE	Extensible wave format&lt;br /&gt;
* 0xFFFF	In Development / Unregistered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Multimedia Terminology]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=15468</id>
		<title>Dialogic IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=15468"/>
		<updated>2020-01-03T00:50:42Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: note about MSM5205 not saturating its accumulator, add more OKI chips, add link to datasheet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0010 &lt;br /&gt;
* Extension: vox, oki&lt;br /&gt;
* Company: [[Dialogic]], Oki Electric Industry&lt;br /&gt;
* Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The decoding algorithm is the same as the standard IMA ADPCM algorithm with the following modifications:&lt;br /&gt;
&lt;br /&gt;
* A different, smaller step table is used (refer to Appendix A for the table). The table contains 49 values ranging from indices 0..48.&lt;br /&gt;
* The predictor is always initialized to 0 at the start of decoding.&lt;br /&gt;
* The index is always initialized to 16 at the start of decoding.&lt;br /&gt;
* When the index is modified by the ADPCM delta, it should be clamped within the 0..48 range, rather than 0..88.&lt;br /&gt;
* 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.&lt;br /&gt;
* The output samples are 12 bits in resolution and should be scaled as necessary.&lt;br /&gt;
&lt;br /&gt;
== Modified Step Table ==&lt;br /&gt;
&lt;br /&gt;
 int dialogic_ima_step[49] = { &lt;br /&gt;
   16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, &lt;br /&gt;
   50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143,&lt;br /&gt;
   157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, &lt;br /&gt;
   494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552 &lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Hardware Implementations ==&lt;br /&gt;
The following ICs can decode this codec:&lt;br /&gt;
* 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)&lt;br /&gt;
* OKI MSM5218 [codec]&lt;br /&gt;
* OKI MSM6295 [dec]&lt;br /&gt;
* OKI MSM6585&lt;br /&gt;
&lt;br /&gt;
[[https://console5.com/techwiki/images/f/f8/MSM5205.pdf MSM5205/MSM5218 Datasheet]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TwoCC&amp;diff=15467</id>
		<title>TwoCC</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TwoCC&amp;diff=15467"/>
		<updated>2020-01-03T00:40:58Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add wikilink for MSADPCM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The TwoCC is the audio counterpart to the [[:Category:Video FourCCs|video FourCC]]. It is the audio format identifier used in the [[RIFF]] based multimedia formats by [[Microsoft]] ([[WAV]] and [[AVI]]). The TwoCC is 2 bytes long and stored in little endian format on disk. You can register your TwoCC with Microsoft but it seems that only some companies perform this process.&lt;br /&gt;
&lt;br /&gt;
If you need help finding any codec mail me compn@ffmpeg.org&lt;br /&gt;
&lt;br /&gt;
* 0x0000	Microsoft Unknown Wave Format&lt;br /&gt;
* [[PCM#Microsoft_WAV.2FAVI.2FASF_Identifiers|0x0001	Microsoft PCM Format]]&lt;br /&gt;
* [[Microsoft_ADPCM|0x0002  Microsoft ADPCM CODEC for MSACM  msacm.msadpcm       msadp32.acm]]&lt;br /&gt;
* 0x0003   IEEE FLOAT   Microsoft IEEE754&lt;br /&gt;
* 0x0004	Compaq Computer VSELP (codec for Windows CE 2.0 devices)&lt;br /&gt;
* 0x0005   IBM CVSD   IBM Corporation&lt;br /&gt;
* [[PCM#Microsoft_WAV.2FAVI.2FASF_Identifiers|0x0006  Microsoft CCITT G.711 (A-Law and u-Law) CODEC for MSACM  msacm.msg711       msg711.acm]]&lt;br /&gt;
* [[PCM#Microsoft_WAV.2FAVI.2FASF_Identifiers|0x0007  Microsoft CCITT G.711 (A-Law and u-Law) CODEC for MSACM  msacm.msg711       msg711.acm]]&lt;br /&gt;
* 0x0008	Microsoft DTS&lt;br /&gt;
* 0x0009	Microsoft DRM&lt;br /&gt;
* 0x000A   WMSpeech   Microsoft&lt;br /&gt;
* 0x000B   Windows Media RT Voice   Microsoft&lt;br /&gt;
* 0x0010	OKI ADPCM&lt;br /&gt;
* [[Microsoft_IMA_ADPCM|0x0011  IMA ADPCM CODEC for MSACM  msacm.imaadpcm       imaadp32.acm]]&lt;br /&gt;
* 0x0012	Videologic MediaSpace ADPCM&lt;br /&gt;
* 0x0013   Sierra ADPCM   Sierra Semiconductor Corp&lt;br /&gt;
* 0x0014   G723 ADPCM   Antex Electronics Corporation&lt;br /&gt;
* 0x0015   DIGISTD   DSP Solutions, Inc.&lt;br /&gt;
* 0x0016   DIGIFIX   DSP Solutions, Inc.&lt;br /&gt;
* 0x0017	Dialogic OKI ADPCM&lt;br /&gt;
* 0x0018	MediaVision ADPCM&lt;br /&gt;
* 0x0019   CU CODEC  Mobile Voice   Hewlett-Packard Company&lt;br /&gt;
* 0x001A	Hewlett-Packard HP DYNAMIC VOICE&lt;br /&gt;
* 0x0020	Yamaha ADPCM&lt;br /&gt;
* 0x0021   Sonarc   Speech Compression&lt;br /&gt;
* 0x0022  DSP Group TrueSpeech(TM) Audio Codec for MSACM V3.50  msacm.trspch       tssoft32.acm&lt;br /&gt;
* 0x0023   ECHOSC1   Echo Speech Corporation&lt;br /&gt;
* 0x0024   Audiofile AF36   Virtual Music, Inc.&lt;br /&gt;
* 0x0025   APTX   Audio Processing Technology&lt;br /&gt;
* 0x0026   Audiofile AF10   Virtual Music, Inc.&lt;br /&gt;
* 0x0027	Prosody 1612 codec for CTI Speech Card Aculab plc&lt;br /&gt;
* 0x0028   LRC   Merging Technologies S.A.&lt;br /&gt;
* 0x0030	Dolby Labs AC2&lt;br /&gt;
* 0x0031  Microsoft GSM 6.10 Audio CODEC for MSACM  msacm.msgsm610       msgsm32.acm&lt;br /&gt;
* 0x0032   MSNAudio   Microsoft&lt;br /&gt;
* 0x0033   Antex ADPCME   Antex Electronics Corporation&lt;br /&gt;
* 0x0034   Control Res. VQLPC   Control Resources Limited&lt;br /&gt;
* 0x0035   DigiReal   DSP Solutions, Inc.&lt;br /&gt;
* 0x0036   DigiADPCM   DSP Solutions, Inc.&lt;br /&gt;
* 0x0037   Control Res. CR10   Control Resources Limited&lt;br /&gt;
* 0x0038   NMS VBXADPCM   Natural MicroSystems&lt;br /&gt;
* 0x0039   CS IMAADPCM Roland RDAC  Crystal Semiconductor IMA ADPCM &lt;br /&gt;
* 0x003A   ECHOSC3   Echo Speech Corporation &lt;br /&gt;
* 0x003B   Rockwell ADPCM   Rockwell International &lt;br /&gt;
* 0x003C   Rockwell DIGITALK   Rockwell International &lt;br /&gt;
* 0x003D   XEBEC   Xebec Multimedia Solutions Limited &lt;br /&gt;
* 0x0040   G721 ADPCM   Antex Electronics Corporation&lt;br /&gt;
* 0x0041   G728 CELP   Antex Electronics Corporation&lt;br /&gt;
* 0x0042  Microsoft G.723.1 CODEC  MSACM  msacm.msg723       msg723.acm&lt;br /&gt;
* 0x0043	IBM AVC ADPCM&lt;br /&gt;
* 0x0044   MSG729   Microsoft&lt;br /&gt;
* 0x0045	ITU-T G.726 ADPCM&lt;br /&gt;
* 0x0050   MPEG (MP1/MP2)   ISO/IEC&lt;br /&gt;
* 0x0050  QDesign MPEG  QDesign Corporation     qmpeg.acm&lt;br /&gt;
* 0x0052	InSoft RT24 (ACM codec is an alternative codec)&lt;br /&gt;
* 0x0053   PAC   InSoft, Inc.&lt;br /&gt;
* 0x0055  MPEG Layer-3 Audio Codec for MSACM  msacm.l3ACM      l3codeca.acm&lt;br /&gt;
* 0x0057	AMR-NB&lt;br /&gt;
* 0x0058	AMR-WB&lt;br /&gt;
* 0x0059	Lucent G.723&lt;br /&gt;
* 0x0060   Cirrus   Cirrus Logic&lt;br /&gt;
* 0x0061	ESS Technology ESPCM / Duck DK4 ADPCM&lt;br /&gt;
* 0x0062 msacm.voxacm160  vct3216.acm  Voxware v1.1.6/1.1.8 File-Mode Codecs  Voxware, Inc. vct3216.acm&lt;br /&gt;
* 0x0062	Voxware file-mode codec / Duck DK3 ADPCM&lt;br /&gt;
* 0x0063   Canopus ATRAC   Canopus, co., Ltd.&lt;br /&gt;
* 0x0064   G726 ADPCM   APICOM&lt;br /&gt;
* 0x0065   G722 ADPCM   APICOM&lt;br /&gt;
* 0x0066   DSAT   Microsoft&lt;br /&gt;
* 0x0067   DSAT DISPLAY   Microsoft&lt;br /&gt;
* 0x0069  msacm.voxacm160  Voxware v1.1.8 Bitstream-Mode Codecs  Voxware, Inc.   vct3216.acm&lt;br /&gt;
* 0x0070	Voxware AC8 (Lernout &amp;amp; Hauspie CELP 4.8 kbps) lhacm.acm&lt;br /&gt;
* 0x0071	Voxware AC10 (Lernout &amp;amp; Hauspie CBS 8kbps) lhacm.acm&lt;br /&gt;
* 0x0072	Voxware AC16 (Lernout &amp;amp; Hauspie CBS 12kbps) lhacm.acm&lt;br /&gt;
* 0x0073	Voxware AC20 (Lernout &amp;amp; Hauspie CBS 16kbps) lhacm.acm&lt;br /&gt;
* 0x0074  Voxware MetaVoice Audio Compression Manager Driver  msacm.voxacm160      vct3216.acm&lt;br /&gt;
* 0x0075  Voxware RT29 Metasound Audio Compression Manager Driver  msacm.voxacm160      vct3216.acm&lt;br /&gt;
* 0x0076	Voxware RT29HW&lt;br /&gt;
* 0x0077	Voxware VR12&lt;br /&gt;
* 0x0078	Voxware VR18&lt;br /&gt;
* 0x0079	Voxware TQ40&lt;br /&gt;
* 0x007A	Voxware SC3&lt;br /&gt;
* 0x007B	Voxware SC3&lt;br /&gt;
* 0x0080   Softsound   Softsound, Ltd.&lt;br /&gt;
* 0x0081	Voxware TQ60&lt;br /&gt;
* 0x0082	Microsoft MSRT24 (ACM codec is an alternative codec)&lt;br /&gt;
* 0x0083   G729A   AT&amp;amp;T Labs, Inc.&lt;br /&gt;
* 0x0084   MVI MVI2   Motion Pixels&lt;br /&gt;
* 0x0085	DataFusion Systems G.726&lt;br /&gt;
* 0x0086	DataFusion Systems GSM610&lt;br /&gt;
* 0x0088   ISIAUDIO   Iterated Systems, Inc.&lt;br /&gt;
* 0x0089   ONLIVE   OnLive! Technologies, Inc.&lt;br /&gt;
* 0x008A   MULTITUDE FT SX20   Multitude, Inc.&lt;br /&gt;
* 0x008B   G.721 ADPCM   Infocom ITS A/S&lt;br /&gt;
* 0x008C   CONVEDIA G729   Convedia Corporation&lt;br /&gt;
* 0x008D	Not specified   congruency, Inc.&lt;br /&gt;
* 0x0091   SBC24   Siemens Business Communications Sys&lt;br /&gt;
* 0x0092   Dolby AC3 SPDIF   Sonic Foundry&lt;br /&gt;
* 0x0093	MediaSonic G.723&lt;br /&gt;
* 0x0094   Prosody 8KBPS   Aculab plc&lt;br /&gt;
* 0x0097   Zyxel ADPCM   ZyXEL Communications, Inc.&lt;br /&gt;
* 0x0098	Philips LPCBB     smlpcbb.acm&lt;br /&gt;
* 0x0099   PACKED   Studer Professional Audio AG&lt;br /&gt;
* 0x00A0   Malden PhonyTalk   Malden Electronics Ltd.&lt;br /&gt;
* 0x00A1   Racal Recorder GSM   Racal Recorders&lt;br /&gt;
* 0x00A2   Racal Recorder G720.a   Racal Recorders&lt;br /&gt;
* 0x00A3   Racal G723.1   Racal Recorders&lt;br /&gt;
* 0x00A4   Racal Tetra ACELP   Racal Recorders&lt;br /&gt;
* 0x00B0	NEC AAC NEC Corporation&lt;br /&gt;
* 0x00E1        Microsoft ADPCM&lt;br /&gt;
* 0x00f4  WRPR codec  &lt;br /&gt;
* 0x00FF	AAC&lt;br /&gt;
* 0x0100	Rhetorex ADPCM&lt;br /&gt;
* 0x0101	IBM mu-law / BeCubed Software IRAT&lt;br /&gt;
* 0x0102   ALAW   IBM a-law format&lt;br /&gt;
* 0x0103   ADPCM   IBM AVC Adaptive Differential Pulse Code Modulation&lt;br /&gt;
* 0x0111	Vivo G.723&lt;br /&gt;
* 0x0112	Vivo Siren&lt;br /&gt;
* 0x0120   PHILIPS CELP   Philips Speech Processing&lt;br /&gt;
* 0x0121   PHILIPS GRUNDIG   Philips Speech Processing&lt;br /&gt;
* 0x0123   DEC G723   Digital Equipment Corporation Digital G.723&lt;br /&gt;
* 0x0125	Sanyo LD ADPCM&lt;br /&gt;
* 0x0130 Sipro Lab Telecom ACELP.net audio codec Sipro Lab TelecomInc.    sl_anet.acm&lt;br /&gt;
* 0x0131	Sipro Lab Telecom ACELP.4800&lt;br /&gt;
* 0x0132	Sipro Lab Telecom ACELP.8V3&lt;br /&gt;
* 0x0133	Sipro Lab Telecom ACELP.G.729&lt;br /&gt;
* 0x0134	Sipro Lab Telecom ACELP.G.729A&lt;br /&gt;
* 0x0135	Sipro Lab Telecom ACELP.KELVIN&lt;br /&gt;
* 0x0136   VOICEAGE AMR   VoiceAge Corporation&lt;br /&gt;
* 0x0140   G726ADPCM   Dictaphone Corporation&lt;br /&gt;
* 0x0141   CELP68   Dictaphone Corporation&lt;br /&gt;
* 0x0142   CELP54   Dictaphone Corporation&lt;br /&gt;
* 0x0150	Qualcomm PureVoice&lt;br /&gt;
* 0x0151	Qualcomm HalfRate&lt;br /&gt;
* 0x0155   TUBGSM   Ring Zero Systems, Inc.&lt;br /&gt;
* 0x0160  Windows Media Audio  msacm.msaudio1       msaud32.acm&lt;br /&gt;
* 0x0161	Windows Media Audio V2 V7 V8 V9 / DivX audio (WMA) / Alex AC3 Audio msaud32.acm&lt;br /&gt;
* 0x0162   Windows Media Audio 9 Professional   Microsoft, Inc.&lt;br /&gt;
* 0x0163   Windows Media Audio 9 Lossless   Microsoft, Inc.&lt;br /&gt;
* 0x0164	WMA Pro over S/PDIF&lt;br /&gt;
* 0x0170   UNISYS NAP ADPCM   Unisys Corporation&lt;br /&gt;
* 0x0171   UNISYS NAP ULAW   Unisys Corporation&lt;br /&gt;
* 0x0172   UNISYS NAP ALAW   Unisys Corporation&lt;br /&gt;
* 0x0173   UNISYS NAP 16K   Unisys Corporation&lt;br /&gt;
* 0x0174	MM SYCOM ACM SYC008     	SyCom Technologies&lt;br /&gt;
* 0x0175   MM SYCOM ACM SYC701 G726L   SyCom Technologies&lt;br /&gt;
* 0x0176   MM SYCOM ACM SYC701 CELP54   SyCom Technologies&lt;br /&gt;
* 0x0177   MM SYCOM ACM SYC701 CELP68   SyCom Technologies&lt;br /&gt;
* 0x0178	Knowledge Adventure ADPCM&lt;br /&gt;
* 0x0180   MPEG2AAC   Fraunhofer IIS&lt;br /&gt;
* 0x0190   DTS DS   Digital Theater Systems, Inc.&lt;br /&gt;
* 0x0200	Creative Labs ADPCM&lt;br /&gt;
* 0x0202	Creative Labs FastSpeech8&lt;br /&gt;
* 0x0203	Creative Labs FastSpeech10&lt;br /&gt;
* 0x0210   UHER ADPCM   UHER informatic GmbH&lt;br /&gt;
* 0x0215  Ulead DV AudioACM Driver  msacm.dvACM     dvacm.acm&lt;br /&gt;
* 0x0216 Ulead DV Audio Codec Ulead Systems, Inc.    Dvacm.acm&lt;br /&gt;
* 0x0217  Ulead MP3 codec engine  msacm.ulmp3acm  Warning: Codec is disabled&lt;br /&gt;
* 0x0220   Quarterdeck   Quarterdeck Corporation&lt;br /&gt;
* 0x0230   I-Link VC   I-link Worldwide&lt;br /&gt;
* 0x0240   RAW SPORT   Aureal Semiconductor&lt;br /&gt;
* 0x0241   ESST AC3   ESS Technology&lt;br /&gt;
* 0x0250   IPI HSX   Interactive Products, Inc.&lt;br /&gt;
* 0x0251   IPI RPELP   Interactive Products, Inc.&lt;br /&gt;
* 0x0260   CS2   Consistent Software&lt;br /&gt;
* 0x0270	Sony ATRAC3 (SCX, same as MiniDisk LP2)&lt;br /&gt;
* 0x0271	Sony SCY&lt;br /&gt;
* 0x0272	Sony ATRAC3&lt;br /&gt;
* 0x0273	Sony SPC&lt;br /&gt;
* 0x0280	TELUM   Telum Inc.&lt;br /&gt;
* 0x0281	TELUMIA Telum Inc.&lt;br /&gt;
* 0x0285	Norcom Voice Systems ADPCM  Norcom Electronics Corporation&lt;br /&gt;
* 0x028e MSN Messenger Audio Codec msacm.siren     sirenacm.dll&lt;br /&gt;
* 0x0300	Fujitsu FM TOWNS SND&lt;br /&gt;
* 0x0301   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0302   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0303   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0304   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0305   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0306   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0307   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0308   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0350	DEVELOPMENT     Micronas Semiconductors, Inc.&lt;br /&gt;
* 0x0351   CELP833   Micronas Semiconductors, Inc.&lt;br /&gt;
* 0x03eb  DVMPEG Audio  Darim Vision Co., Ltd.     dvacmau.dll&lt;br /&gt;
* 0x0400	BTV Digital (Brooktree digital audio format)&lt;br /&gt;
* 0x0401  Intel Music Coder for MSACM msacm.imc    imc32.acm&lt;br /&gt;
* 0x0402  Indeo® audio software  msacm.iac2       iac25_32.ax&lt;br /&gt;
* 0x0450	QDesign Music&lt;br /&gt;
* 0x0500	On2 VP7 On2 Technologies AVC Audio&lt;br /&gt;
* 0x0501	On2 VP6 On2 Technologies&lt;br /&gt;
* 0x0680	AT&amp;amp;T Labs VME VMPCM&lt;br /&gt;
* 0x0681	AT&amp;amp;T Labs TPC&lt;br /&gt;
* 0x0700	YMPEG Alpha (dummy for MPEG-2 compressor)&lt;br /&gt;
* 0x08AE ClearJump Lightwave Lossless   http://www.clearjump.com&lt;br /&gt;
* 0x0AAC   HDX4 AAC   Jomigo GmbH&lt;br /&gt;
* 0x1000	Olivetti GSM&lt;br /&gt;
* 0x1001	Olivetti ADPCM&lt;br /&gt;
* 0x1002	Olivetti CELP&lt;br /&gt;
* 0x1003	Olivetti SBC&lt;br /&gt;
* 0x1004	Olivetti OPR&lt;br /&gt;
* 0x1100	Lernout &amp;amp; Hauspie codec&lt;br /&gt;
* 0x1101	Lernout &amp;amp; Hauspie CELP codec&lt;br /&gt;
* 0x1102	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1103	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1104	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1400	Norris Communication&lt;br /&gt;
* 0x1401	AT&amp;amp;T Labs ISIAudio&lt;br /&gt;
* 0x1500   Soundspace Musicompress   Soundspace Music Compression Netspeak GSM - nsgsm32.acm&lt;br /&gt;
* 0x1501	Netspeak Truespeech - nstsp32.acm&lt;br /&gt;
* 0x181C   VoxWare RT24 speech codec   Voxware Inc.&lt;br /&gt;
* 0x181E	Lucent elemedia AX24000P Music codec&lt;br /&gt;
* 0x1971	Sonic Foundry LOSSLESS   &lt;br /&gt;
* 0x1979	Innings Telecom Inc. ADPCM   &lt;br /&gt;
* 0x1C07	Lucent SX8300P speech codec&lt;br /&gt;
* 0x1C0C	Lucent SX5363S G.723 compliant codec&lt;br /&gt;
* 0x1F03	CUseeMe DigiTalk (ex-Rocwell)&lt;br /&gt;
* 0x1FC4   NCT ALF2CD codec   http://www.nctsoft.com&lt;br /&gt;
* 0x2000  AC-3ACM Codec  msacm.ac3acm     ac3acm.acm&lt;br /&gt;
* 0x2001   Dolby DTS   Dolby Labs&lt;br /&gt;
* 0x2002	RealAudio 1 / 2 14.4&lt;br /&gt;
* 0x2003	RealAudio 1 / 2 28.8&lt;br /&gt;
* 0x2004	RealAudio G2 / 8 Cook (low bitrate)&lt;br /&gt;
* 0x2005	RealAudio 3 / 4 / 5 Music (DNET)&lt;br /&gt;
* 0x2006	RealAudio 10 AAC (RAAC)&lt;br /&gt;
* 0x2007	RealAudio 10 AAC+ (RACP)&lt;br /&gt;
* 0x2500	Reserved range to * 0x2600  Microsoft&lt;br /&gt;
* 0x3313 makeAVIS (ffvfw fake AVI sound from AviSynth scripts)  ff_acm.acm&lt;br /&gt;
* 0x4143	Divio MPEG-4 AAC audio&lt;br /&gt;
* 0x4180	fortherecord MPEG AAC celp?&lt;br /&gt;
* 0x4201   Nokia adaptive multirate   Nokia Mobile Phones&lt;br /&gt;
* 0x4243   Divio's G726   Divio, Inc.&lt;br /&gt;
* 0x434C	LEAD Speech&lt;br /&gt;
* 0x564C	LEAD Vorbis&lt;br /&gt;
* 0x5756   WavPack Audio   xiph.org [open source]&lt;br /&gt;
* 0x6665	Litewave audio compressor (lw.zip from http://www.clearjump.com)&lt;br /&gt;
* 0x674f  Ogg Vorbis mode 1 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6750  Ogg Vorbis mode 2 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6751  Ogg Vorbis mode 3 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x676f  Ogg Vorbis mode 1+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6770  Ogg Vorbis mode 2+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6771  Ogg Vorbis mode 3+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x7000	3COM NBX  3Com Corporation&lt;br /&gt;
* 0x706D   FAAD AAC   (open source)&lt;br /&gt;
* 0x77A1        The True Audio&lt;br /&gt;
* 0x7A21	GSM-AMR (CBR, no SID) 	EmzAMRNBDec.dll 	(doesnt actually decode properly)&lt;br /&gt;
* 0x7A22	GSM-AMR (VBR, including SID) GSMA/3GPP	EmzAMRNBDec.dll 	(doesnt actually decode properly)&lt;br /&gt;
* 0x8180 (unverified) For the Record - http://www.fortherecord.com&lt;br /&gt;
* 0xA100   COMVERSEINFOSYS G723 1   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA101   COMVERSEINFOSYS AVQSBC   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA102   COMVERSEINFOSYS OLDSBC   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA103	Symbol Technology's G729A  Symbol Technologies Canada&lt;br /&gt;
* 0xA104	VoiceAge AMR WB VoiceAge Corporation&lt;br /&gt;
* 0xA105	Ingenient Technologies Inc. G726&lt;br /&gt;
* 0xA106   ISO/MPEG-4 advanced audio Coding   AAC.&lt;br /&gt;
* 0xA107   Encore Software Ltd's G726   Encore Software Ltd.&lt;br /&gt;
* 0xA109   Speex ACM Codec   xiph.org (Open Source)&lt;br /&gt;
* 0xC0CC GigaLink Audio Codec&lt;br /&gt;
* 0xDFAC DebugMode SonicFoundry Vegas FrameServer ACM Codec&lt;br /&gt;
* 0xe708	Unknown -&lt;br /&gt;
* 0xF1AC	Free Lossless Audio Codec FLAC&lt;br /&gt;
* 0xFFFC	VDOwave Audio&lt;br /&gt;
* 0xFFFE	Extensible wave format&lt;br /&gt;
* 0xFFFF	In Development / Unregistered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Multimedia Terminology]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TwoCC&amp;diff=15466</id>
		<title>TwoCC</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TwoCC&amp;diff=15466"/>
		<updated>2020-01-03T00:40:04Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add more wikilinks for PCM, u-law and a-law&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The TwoCC is the audio counterpart to the [[:Category:Video FourCCs|video FourCC]]. It is the audio format identifier used in the [[RIFF]] based multimedia formats by [[Microsoft]] ([[WAV]] and [[AVI]]). The TwoCC is 2 bytes long and stored in little endian format on disk. You can register your TwoCC with Microsoft but it seems that only some companies perform this process.&lt;br /&gt;
&lt;br /&gt;
If you need help finding any codec mail me compn@ffmpeg.org&lt;br /&gt;
&lt;br /&gt;
* 0x0000	Microsoft Unknown Wave Format&lt;br /&gt;
* [[PCM#Microsoft_WAV.2FAVI.2FASF_Identifiers|0x0001	Microsoft PCM Format]]&lt;br /&gt;
* 0x0002  Microsoft ADPCM CODEC for MSACM  msacm.msadpcm       msadp32.acm&lt;br /&gt;
* 0x0003   IEEE FLOAT   Microsoft IEEE754&lt;br /&gt;
* 0x0004	Compaq Computer VSELP (codec for Windows CE 2.0 devices)&lt;br /&gt;
* 0x0005   IBM CVSD   IBM Corporation&lt;br /&gt;
* [[PCM#Microsoft_WAV.2FAVI.2FASF_Identifiers|0x0006  Microsoft CCITT G.711 (A-Law and u-Law) CODEC for MSACM  msacm.msg711       msg711.acm]]&lt;br /&gt;
* [[PCM#Microsoft_WAV.2FAVI.2FASF_Identifiers|0x0007  Microsoft CCITT G.711 (A-Law and u-Law) CODEC for MSACM  msacm.msg711       msg711.acm]]&lt;br /&gt;
* 0x0008	Microsoft DTS&lt;br /&gt;
* 0x0009	Microsoft DRM&lt;br /&gt;
* 0x000A   WMSpeech   Microsoft&lt;br /&gt;
* 0x000B   Windows Media RT Voice   Microsoft&lt;br /&gt;
* 0x0010	OKI ADPCM&lt;br /&gt;
* [[Microsoft_IMA_ADPCM|0x0011  IMA ADPCM CODEC for MSACM  msacm.imaadpcm       imaadp32.acm]]&lt;br /&gt;
* 0x0012	Videologic MediaSpace ADPCM&lt;br /&gt;
* 0x0013   Sierra ADPCM   Sierra Semiconductor Corp&lt;br /&gt;
* 0x0014   G723 ADPCM   Antex Electronics Corporation&lt;br /&gt;
* 0x0015   DIGISTD   DSP Solutions, Inc.&lt;br /&gt;
* 0x0016   DIGIFIX   DSP Solutions, Inc.&lt;br /&gt;
* 0x0017	Dialogic OKI ADPCM&lt;br /&gt;
* 0x0018	MediaVision ADPCM&lt;br /&gt;
* 0x0019   CU CODEC  Mobile Voice   Hewlett-Packard Company&lt;br /&gt;
* 0x001A	Hewlett-Packard HP DYNAMIC VOICE&lt;br /&gt;
* 0x0020	Yamaha ADPCM&lt;br /&gt;
* 0x0021   Sonarc   Speech Compression&lt;br /&gt;
* 0x0022  DSP Group TrueSpeech(TM) Audio Codec for MSACM V3.50  msacm.trspch       tssoft32.acm&lt;br /&gt;
* 0x0023   ECHOSC1   Echo Speech Corporation&lt;br /&gt;
* 0x0024   Audiofile AF36   Virtual Music, Inc.&lt;br /&gt;
* 0x0025   APTX   Audio Processing Technology&lt;br /&gt;
* 0x0026   Audiofile AF10   Virtual Music, Inc.&lt;br /&gt;
* 0x0027	Prosody 1612 codec for CTI Speech Card Aculab plc&lt;br /&gt;
* 0x0028   LRC   Merging Technologies S.A.&lt;br /&gt;
* 0x0030	Dolby Labs AC2&lt;br /&gt;
* 0x0031  Microsoft GSM 6.10 Audio CODEC for MSACM  msacm.msgsm610       msgsm32.acm&lt;br /&gt;
* 0x0032   MSNAudio   Microsoft&lt;br /&gt;
* 0x0033   Antex ADPCME   Antex Electronics Corporation&lt;br /&gt;
* 0x0034   Control Res. VQLPC   Control Resources Limited&lt;br /&gt;
* 0x0035   DigiReal   DSP Solutions, Inc.&lt;br /&gt;
* 0x0036   DigiADPCM   DSP Solutions, Inc.&lt;br /&gt;
* 0x0037   Control Res. CR10   Control Resources Limited&lt;br /&gt;
* 0x0038   NMS VBXADPCM   Natural MicroSystems&lt;br /&gt;
* 0x0039   CS IMAADPCM Roland RDAC  Crystal Semiconductor IMA ADPCM &lt;br /&gt;
* 0x003A   ECHOSC3   Echo Speech Corporation &lt;br /&gt;
* 0x003B   Rockwell ADPCM   Rockwell International &lt;br /&gt;
* 0x003C   Rockwell DIGITALK   Rockwell International &lt;br /&gt;
* 0x003D   XEBEC   Xebec Multimedia Solutions Limited &lt;br /&gt;
* 0x0040   G721 ADPCM   Antex Electronics Corporation&lt;br /&gt;
* 0x0041   G728 CELP   Antex Electronics Corporation&lt;br /&gt;
* 0x0042  Microsoft G.723.1 CODEC  MSACM  msacm.msg723       msg723.acm&lt;br /&gt;
* 0x0043	IBM AVC ADPCM&lt;br /&gt;
* 0x0044   MSG729   Microsoft&lt;br /&gt;
* 0x0045	ITU-T G.726 ADPCM&lt;br /&gt;
* 0x0050   MPEG (MP1/MP2)   ISO/IEC&lt;br /&gt;
* 0x0050  QDesign MPEG  QDesign Corporation     qmpeg.acm&lt;br /&gt;
* 0x0052	InSoft RT24 (ACM codec is an alternative codec)&lt;br /&gt;
* 0x0053   PAC   InSoft, Inc.&lt;br /&gt;
* 0x0055  MPEG Layer-3 Audio Codec for MSACM  msacm.l3ACM      l3codeca.acm&lt;br /&gt;
* 0x0057	AMR-NB&lt;br /&gt;
* 0x0058	AMR-WB&lt;br /&gt;
* 0x0059	Lucent G.723&lt;br /&gt;
* 0x0060   Cirrus   Cirrus Logic&lt;br /&gt;
* 0x0061	ESS Technology ESPCM / Duck DK4 ADPCM&lt;br /&gt;
* 0x0062 msacm.voxacm160  vct3216.acm  Voxware v1.1.6/1.1.8 File-Mode Codecs  Voxware, Inc. vct3216.acm&lt;br /&gt;
* 0x0062	Voxware file-mode codec / Duck DK3 ADPCM&lt;br /&gt;
* 0x0063   Canopus ATRAC   Canopus, co., Ltd.&lt;br /&gt;
* 0x0064   G726 ADPCM   APICOM&lt;br /&gt;
* 0x0065   G722 ADPCM   APICOM&lt;br /&gt;
* 0x0066   DSAT   Microsoft&lt;br /&gt;
* 0x0067   DSAT DISPLAY   Microsoft&lt;br /&gt;
* 0x0069  msacm.voxacm160  Voxware v1.1.8 Bitstream-Mode Codecs  Voxware, Inc.   vct3216.acm&lt;br /&gt;
* 0x0070	Voxware AC8 (Lernout &amp;amp; Hauspie CELP 4.8 kbps) lhacm.acm&lt;br /&gt;
* 0x0071	Voxware AC10 (Lernout &amp;amp; Hauspie CBS 8kbps) lhacm.acm&lt;br /&gt;
* 0x0072	Voxware AC16 (Lernout &amp;amp; Hauspie CBS 12kbps) lhacm.acm&lt;br /&gt;
* 0x0073	Voxware AC20 (Lernout &amp;amp; Hauspie CBS 16kbps) lhacm.acm&lt;br /&gt;
* 0x0074  Voxware MetaVoice Audio Compression Manager Driver  msacm.voxacm160      vct3216.acm&lt;br /&gt;
* 0x0075  Voxware RT29 Metasound Audio Compression Manager Driver  msacm.voxacm160      vct3216.acm&lt;br /&gt;
* 0x0076	Voxware RT29HW&lt;br /&gt;
* 0x0077	Voxware VR12&lt;br /&gt;
* 0x0078	Voxware VR18&lt;br /&gt;
* 0x0079	Voxware TQ40&lt;br /&gt;
* 0x007A	Voxware SC3&lt;br /&gt;
* 0x007B	Voxware SC3&lt;br /&gt;
* 0x0080   Softsound   Softsound, Ltd.&lt;br /&gt;
* 0x0081	Voxware TQ60&lt;br /&gt;
* 0x0082	Microsoft MSRT24 (ACM codec is an alternative codec)&lt;br /&gt;
* 0x0083   G729A   AT&amp;amp;T Labs, Inc.&lt;br /&gt;
* 0x0084   MVI MVI2   Motion Pixels&lt;br /&gt;
* 0x0085	DataFusion Systems G.726&lt;br /&gt;
* 0x0086	DataFusion Systems GSM610&lt;br /&gt;
* 0x0088   ISIAUDIO   Iterated Systems, Inc.&lt;br /&gt;
* 0x0089   ONLIVE   OnLive! Technologies, Inc.&lt;br /&gt;
* 0x008A   MULTITUDE FT SX20   Multitude, Inc.&lt;br /&gt;
* 0x008B   G.721 ADPCM   Infocom ITS A/S&lt;br /&gt;
* 0x008C   CONVEDIA G729   Convedia Corporation&lt;br /&gt;
* 0x008D	Not specified   congruency, Inc.&lt;br /&gt;
* 0x0091   SBC24   Siemens Business Communications Sys&lt;br /&gt;
* 0x0092   Dolby AC3 SPDIF   Sonic Foundry&lt;br /&gt;
* 0x0093	MediaSonic G.723&lt;br /&gt;
* 0x0094   Prosody 8KBPS   Aculab plc&lt;br /&gt;
* 0x0097   Zyxel ADPCM   ZyXEL Communications, Inc.&lt;br /&gt;
* 0x0098	Philips LPCBB     smlpcbb.acm&lt;br /&gt;
* 0x0099   PACKED   Studer Professional Audio AG&lt;br /&gt;
* 0x00A0   Malden PhonyTalk   Malden Electronics Ltd.&lt;br /&gt;
* 0x00A1   Racal Recorder GSM   Racal Recorders&lt;br /&gt;
* 0x00A2   Racal Recorder G720.a   Racal Recorders&lt;br /&gt;
* 0x00A3   Racal G723.1   Racal Recorders&lt;br /&gt;
* 0x00A4   Racal Tetra ACELP   Racal Recorders&lt;br /&gt;
* 0x00B0	NEC AAC NEC Corporation&lt;br /&gt;
* 0x00E1        Microsoft ADPCM&lt;br /&gt;
* 0x00f4  WRPR codec  &lt;br /&gt;
* 0x00FF	AAC&lt;br /&gt;
* 0x0100	Rhetorex ADPCM&lt;br /&gt;
* 0x0101	IBM mu-law / BeCubed Software IRAT&lt;br /&gt;
* 0x0102   ALAW   IBM a-law format&lt;br /&gt;
* 0x0103   ADPCM   IBM AVC Adaptive Differential Pulse Code Modulation&lt;br /&gt;
* 0x0111	Vivo G.723&lt;br /&gt;
* 0x0112	Vivo Siren&lt;br /&gt;
* 0x0120   PHILIPS CELP   Philips Speech Processing&lt;br /&gt;
* 0x0121   PHILIPS GRUNDIG   Philips Speech Processing&lt;br /&gt;
* 0x0123   DEC G723   Digital Equipment Corporation Digital G.723&lt;br /&gt;
* 0x0125	Sanyo LD ADPCM&lt;br /&gt;
* 0x0130 Sipro Lab Telecom ACELP.net audio codec Sipro Lab TelecomInc.    sl_anet.acm&lt;br /&gt;
* 0x0131	Sipro Lab Telecom ACELP.4800&lt;br /&gt;
* 0x0132	Sipro Lab Telecom ACELP.8V3&lt;br /&gt;
* 0x0133	Sipro Lab Telecom ACELP.G.729&lt;br /&gt;
* 0x0134	Sipro Lab Telecom ACELP.G.729A&lt;br /&gt;
* 0x0135	Sipro Lab Telecom ACELP.KELVIN&lt;br /&gt;
* 0x0136   VOICEAGE AMR   VoiceAge Corporation&lt;br /&gt;
* 0x0140   G726ADPCM   Dictaphone Corporation&lt;br /&gt;
* 0x0141   CELP68   Dictaphone Corporation&lt;br /&gt;
* 0x0142   CELP54   Dictaphone Corporation&lt;br /&gt;
* 0x0150	Qualcomm PureVoice&lt;br /&gt;
* 0x0151	Qualcomm HalfRate&lt;br /&gt;
* 0x0155   TUBGSM   Ring Zero Systems, Inc.&lt;br /&gt;
* 0x0160  Windows Media Audio  msacm.msaudio1       msaud32.acm&lt;br /&gt;
* 0x0161	Windows Media Audio V2 V7 V8 V9 / DivX audio (WMA) / Alex AC3 Audio msaud32.acm&lt;br /&gt;
* 0x0162   Windows Media Audio 9 Professional   Microsoft, Inc.&lt;br /&gt;
* 0x0163   Windows Media Audio 9 Lossless   Microsoft, Inc.&lt;br /&gt;
* 0x0164	WMA Pro over S/PDIF&lt;br /&gt;
* 0x0170   UNISYS NAP ADPCM   Unisys Corporation&lt;br /&gt;
* 0x0171   UNISYS NAP ULAW   Unisys Corporation&lt;br /&gt;
* 0x0172   UNISYS NAP ALAW   Unisys Corporation&lt;br /&gt;
* 0x0173   UNISYS NAP 16K   Unisys Corporation&lt;br /&gt;
* 0x0174	MM SYCOM ACM SYC008     	SyCom Technologies&lt;br /&gt;
* 0x0175   MM SYCOM ACM SYC701 G726L   SyCom Technologies&lt;br /&gt;
* 0x0176   MM SYCOM ACM SYC701 CELP54   SyCom Technologies&lt;br /&gt;
* 0x0177   MM SYCOM ACM SYC701 CELP68   SyCom Technologies&lt;br /&gt;
* 0x0178	Knowledge Adventure ADPCM&lt;br /&gt;
* 0x0180   MPEG2AAC   Fraunhofer IIS&lt;br /&gt;
* 0x0190   DTS DS   Digital Theater Systems, Inc.&lt;br /&gt;
* 0x0200	Creative Labs ADPCM&lt;br /&gt;
* 0x0202	Creative Labs FastSpeech8&lt;br /&gt;
* 0x0203	Creative Labs FastSpeech10&lt;br /&gt;
* 0x0210   UHER ADPCM   UHER informatic GmbH&lt;br /&gt;
* 0x0215  Ulead DV AudioACM Driver  msacm.dvACM     dvacm.acm&lt;br /&gt;
* 0x0216 Ulead DV Audio Codec Ulead Systems, Inc.    Dvacm.acm&lt;br /&gt;
* 0x0217  Ulead MP3 codec engine  msacm.ulmp3acm  Warning: Codec is disabled&lt;br /&gt;
* 0x0220   Quarterdeck   Quarterdeck Corporation&lt;br /&gt;
* 0x0230   I-Link VC   I-link Worldwide&lt;br /&gt;
* 0x0240   RAW SPORT   Aureal Semiconductor&lt;br /&gt;
* 0x0241   ESST AC3   ESS Technology&lt;br /&gt;
* 0x0250   IPI HSX   Interactive Products, Inc.&lt;br /&gt;
* 0x0251   IPI RPELP   Interactive Products, Inc.&lt;br /&gt;
* 0x0260   CS2   Consistent Software&lt;br /&gt;
* 0x0270	Sony ATRAC3 (SCX, same as MiniDisk LP2)&lt;br /&gt;
* 0x0271	Sony SCY&lt;br /&gt;
* 0x0272	Sony ATRAC3&lt;br /&gt;
* 0x0273	Sony SPC&lt;br /&gt;
* 0x0280	TELUM   Telum Inc.&lt;br /&gt;
* 0x0281	TELUMIA Telum Inc.&lt;br /&gt;
* 0x0285	Norcom Voice Systems ADPCM  Norcom Electronics Corporation&lt;br /&gt;
* 0x028e MSN Messenger Audio Codec msacm.siren     sirenacm.dll&lt;br /&gt;
* 0x0300	Fujitsu FM TOWNS SND&lt;br /&gt;
* 0x0301   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0302   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0303   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0304   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0305   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0306   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0307   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0308   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0350	DEVELOPMENT     Micronas Semiconductors, Inc.&lt;br /&gt;
* 0x0351   CELP833   Micronas Semiconductors, Inc.&lt;br /&gt;
* 0x03eb  DVMPEG Audio  Darim Vision Co., Ltd.     dvacmau.dll&lt;br /&gt;
* 0x0400	BTV Digital (Brooktree digital audio format)&lt;br /&gt;
* 0x0401  Intel Music Coder for MSACM msacm.imc    imc32.acm&lt;br /&gt;
* 0x0402  Indeo® audio software  msacm.iac2       iac25_32.ax&lt;br /&gt;
* 0x0450	QDesign Music&lt;br /&gt;
* 0x0500	On2 VP7 On2 Technologies AVC Audio&lt;br /&gt;
* 0x0501	On2 VP6 On2 Technologies&lt;br /&gt;
* 0x0680	AT&amp;amp;T Labs VME VMPCM&lt;br /&gt;
* 0x0681	AT&amp;amp;T Labs TPC&lt;br /&gt;
* 0x0700	YMPEG Alpha (dummy for MPEG-2 compressor)&lt;br /&gt;
* 0x08AE ClearJump Lightwave Lossless   http://www.clearjump.com&lt;br /&gt;
* 0x0AAC   HDX4 AAC   Jomigo GmbH&lt;br /&gt;
* 0x1000	Olivetti GSM&lt;br /&gt;
* 0x1001	Olivetti ADPCM&lt;br /&gt;
* 0x1002	Olivetti CELP&lt;br /&gt;
* 0x1003	Olivetti SBC&lt;br /&gt;
* 0x1004	Olivetti OPR&lt;br /&gt;
* 0x1100	Lernout &amp;amp; Hauspie codec&lt;br /&gt;
* 0x1101	Lernout &amp;amp; Hauspie CELP codec&lt;br /&gt;
* 0x1102	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1103	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1104	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1400	Norris Communication&lt;br /&gt;
* 0x1401	AT&amp;amp;T Labs ISIAudio&lt;br /&gt;
* 0x1500   Soundspace Musicompress   Soundspace Music Compression Netspeak GSM - nsgsm32.acm&lt;br /&gt;
* 0x1501	Netspeak Truespeech - nstsp32.acm&lt;br /&gt;
* 0x181C   VoxWare RT24 speech codec   Voxware Inc.&lt;br /&gt;
* 0x181E	Lucent elemedia AX24000P Music codec&lt;br /&gt;
* 0x1971	Sonic Foundry LOSSLESS   &lt;br /&gt;
* 0x1979	Innings Telecom Inc. ADPCM   &lt;br /&gt;
* 0x1C07	Lucent SX8300P speech codec&lt;br /&gt;
* 0x1C0C	Lucent SX5363S G.723 compliant codec&lt;br /&gt;
* 0x1F03	CUseeMe DigiTalk (ex-Rocwell)&lt;br /&gt;
* 0x1FC4   NCT ALF2CD codec   http://www.nctsoft.com&lt;br /&gt;
* 0x2000  AC-3ACM Codec  msacm.ac3acm     ac3acm.acm&lt;br /&gt;
* 0x2001   Dolby DTS   Dolby Labs&lt;br /&gt;
* 0x2002	RealAudio 1 / 2 14.4&lt;br /&gt;
* 0x2003	RealAudio 1 / 2 28.8&lt;br /&gt;
* 0x2004	RealAudio G2 / 8 Cook (low bitrate)&lt;br /&gt;
* 0x2005	RealAudio 3 / 4 / 5 Music (DNET)&lt;br /&gt;
* 0x2006	RealAudio 10 AAC (RAAC)&lt;br /&gt;
* 0x2007	RealAudio 10 AAC+ (RACP)&lt;br /&gt;
* 0x2500	Reserved range to * 0x2600  Microsoft&lt;br /&gt;
* 0x3313 makeAVIS (ffvfw fake AVI sound from AviSynth scripts)  ff_acm.acm&lt;br /&gt;
* 0x4143	Divio MPEG-4 AAC audio&lt;br /&gt;
* 0x4180	fortherecord MPEG AAC celp?&lt;br /&gt;
* 0x4201   Nokia adaptive multirate   Nokia Mobile Phones&lt;br /&gt;
* 0x4243   Divio's G726   Divio, Inc.&lt;br /&gt;
* 0x434C	LEAD Speech&lt;br /&gt;
* 0x564C	LEAD Vorbis&lt;br /&gt;
* 0x5756   WavPack Audio   xiph.org [open source]&lt;br /&gt;
* 0x6665	Litewave audio compressor (lw.zip from http://www.clearjump.com)&lt;br /&gt;
* 0x674f  Ogg Vorbis mode 1 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6750  Ogg Vorbis mode 2 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6751  Ogg Vorbis mode 3 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x676f  Ogg Vorbis mode 1+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6770  Ogg Vorbis mode 2+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6771  Ogg Vorbis mode 3+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x7000	3COM NBX  3Com Corporation&lt;br /&gt;
* 0x706D   FAAD AAC   (open source)&lt;br /&gt;
* 0x77A1        The True Audio&lt;br /&gt;
* 0x7A21	GSM-AMR (CBR, no SID) 	EmzAMRNBDec.dll 	(doesnt actually decode properly)&lt;br /&gt;
* 0x7A22	GSM-AMR (VBR, including SID) GSMA/3GPP	EmzAMRNBDec.dll 	(doesnt actually decode properly)&lt;br /&gt;
* 0x8180 (unverified) For the Record - http://www.fortherecord.com&lt;br /&gt;
* 0xA100   COMVERSEINFOSYS G723 1   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA101   COMVERSEINFOSYS AVQSBC   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA102   COMVERSEINFOSYS OLDSBC   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA103	Symbol Technology's G729A  Symbol Technologies Canada&lt;br /&gt;
* 0xA104	VoiceAge AMR WB VoiceAge Corporation&lt;br /&gt;
* 0xA105	Ingenient Technologies Inc. G726&lt;br /&gt;
* 0xA106   ISO/MPEG-4 advanced audio Coding   AAC.&lt;br /&gt;
* 0xA107   Encore Software Ltd's G726   Encore Software Ltd.&lt;br /&gt;
* 0xA109   Speex ACM Codec   xiph.org (Open Source)&lt;br /&gt;
* 0xC0CC GigaLink Audio Codec&lt;br /&gt;
* 0xDFAC DebugMode SonicFoundry Vegas FrameServer ACM Codec&lt;br /&gt;
* 0xe708	Unknown -&lt;br /&gt;
* 0xF1AC	Free Lossless Audio Codec FLAC&lt;br /&gt;
* 0xFFFC	VDOwave Audio&lt;br /&gt;
* 0xFFFE	Extensible wave format&lt;br /&gt;
* 0xFFFF	In Development / Unregistered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Multimedia Terminology]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TwoCC&amp;diff=15465</id>
		<title>TwoCC</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TwoCC&amp;diff=15465"/>
		<updated>2020-01-03T00:37:10Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add wikilink for MS IMA ADPCM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The TwoCC is the audio counterpart to the [[:Category:Video FourCCs|video FourCC]]. It is the audio format identifier used in the [[RIFF]] based multimedia formats by [[Microsoft]] ([[WAV]] and [[AVI]]). The TwoCC is 2 bytes long and stored in little endian format on disk. You can register your TwoCC with Microsoft but it seems that only some companies perform this process.&lt;br /&gt;
&lt;br /&gt;
If you need help finding any codec mail me compn@ffmpeg.org&lt;br /&gt;
&lt;br /&gt;
* 0x0000	Microsoft Unknown Wave Format&lt;br /&gt;
* 0x0001	Microsoft PCM Format&lt;br /&gt;
* 0x0002  Microsoft ADPCM CODEC for MSACM  msacm.msadpcm       msadp32.acm&lt;br /&gt;
* 0x0003   IEEE FLOAT   Microsoft IEEE754&lt;br /&gt;
* 0x0004	Compaq Computer VSELP (codec for Windows CE 2.0 devices)&lt;br /&gt;
* 0x0005   IBM CVSD   IBM Corporation&lt;br /&gt;
* 0x0006  Microsoft CCITT G.711 (A-Law and u-Law) CODEC for MSACM  msacm.msg711       msg711.acm&lt;br /&gt;
* 0x0007  Microsoft CCITT G.711 (A-Law and u-Law) CODEC for MSACM  msacm.msg711       msg711.acm&lt;br /&gt;
* 0x0008	Microsoft DTS&lt;br /&gt;
* 0x0009	Microsoft DRM&lt;br /&gt;
* 0x000A   WMSpeech   Microsoft&lt;br /&gt;
* 0x000B   Windows Media RT Voice   Microsoft&lt;br /&gt;
* 0x0010	OKI ADPCM&lt;br /&gt;
* [[Microsoft_IMA_ADPCM|0x0011  IMA ADPCM CODEC for MSACM  msacm.imaadpcm       imaadp32.acm]]&lt;br /&gt;
* 0x0012	Videologic MediaSpace ADPCM&lt;br /&gt;
* 0x0013   Sierra ADPCM   Sierra Semiconductor Corp&lt;br /&gt;
* 0x0014   G723 ADPCM   Antex Electronics Corporation&lt;br /&gt;
* 0x0015   DIGISTD   DSP Solutions, Inc.&lt;br /&gt;
* 0x0016   DIGIFIX   DSP Solutions, Inc.&lt;br /&gt;
* 0x0017	Dialogic OKI ADPCM&lt;br /&gt;
* 0x0018	MediaVision ADPCM&lt;br /&gt;
* 0x0019   CU CODEC  Mobile Voice   Hewlett-Packard Company&lt;br /&gt;
* 0x001A	Hewlett-Packard HP DYNAMIC VOICE&lt;br /&gt;
* 0x0020	Yamaha ADPCM&lt;br /&gt;
* 0x0021   Sonarc   Speech Compression&lt;br /&gt;
* 0x0022  DSP Group TrueSpeech(TM) Audio Codec for MSACM V3.50  msacm.trspch       tssoft32.acm&lt;br /&gt;
* 0x0023   ECHOSC1   Echo Speech Corporation&lt;br /&gt;
* 0x0024   Audiofile AF36   Virtual Music, Inc.&lt;br /&gt;
* 0x0025   APTX   Audio Processing Technology&lt;br /&gt;
* 0x0026   Audiofile AF10   Virtual Music, Inc.&lt;br /&gt;
* 0x0027	Prosody 1612 codec for CTI Speech Card Aculab plc&lt;br /&gt;
* 0x0028   LRC   Merging Technologies S.A.&lt;br /&gt;
* 0x0030	Dolby Labs AC2&lt;br /&gt;
* 0x0031  Microsoft GSM 6.10 Audio CODEC for MSACM  msacm.msgsm610       msgsm32.acm&lt;br /&gt;
* 0x0032   MSNAudio   Microsoft&lt;br /&gt;
* 0x0033   Antex ADPCME   Antex Electronics Corporation&lt;br /&gt;
* 0x0034   Control Res. VQLPC   Control Resources Limited&lt;br /&gt;
* 0x0035   DigiReal   DSP Solutions, Inc.&lt;br /&gt;
* 0x0036   DigiADPCM   DSP Solutions, Inc.&lt;br /&gt;
* 0x0037   Control Res. CR10   Control Resources Limited&lt;br /&gt;
* 0x0038   NMS VBXADPCM   Natural MicroSystems&lt;br /&gt;
* 0x0039   CS IMAADPCM Roland RDAC  Crystal Semiconductor IMA ADPCM &lt;br /&gt;
* 0x003A   ECHOSC3   Echo Speech Corporation &lt;br /&gt;
* 0x003B   Rockwell ADPCM   Rockwell International &lt;br /&gt;
* 0x003C   Rockwell DIGITALK   Rockwell International &lt;br /&gt;
* 0x003D   XEBEC   Xebec Multimedia Solutions Limited &lt;br /&gt;
* 0x0040   G721 ADPCM   Antex Electronics Corporation&lt;br /&gt;
* 0x0041   G728 CELP   Antex Electronics Corporation&lt;br /&gt;
* 0x0042  Microsoft G.723.1 CODEC  MSACM  msacm.msg723       msg723.acm&lt;br /&gt;
* 0x0043	IBM AVC ADPCM&lt;br /&gt;
* 0x0044   MSG729   Microsoft&lt;br /&gt;
* 0x0045	ITU-T G.726 ADPCM&lt;br /&gt;
* 0x0050   MPEG (MP1/MP2)   ISO/IEC&lt;br /&gt;
* 0x0050  QDesign MPEG  QDesign Corporation     qmpeg.acm&lt;br /&gt;
* 0x0052	InSoft RT24 (ACM codec is an alternative codec)&lt;br /&gt;
* 0x0053   PAC   InSoft, Inc.&lt;br /&gt;
* 0x0055  MPEG Layer-3 Audio Codec for MSACM  msacm.l3ACM      l3codeca.acm&lt;br /&gt;
* 0x0057	AMR-NB&lt;br /&gt;
* 0x0058	AMR-WB&lt;br /&gt;
* 0x0059	Lucent G.723&lt;br /&gt;
* 0x0060   Cirrus   Cirrus Logic&lt;br /&gt;
* 0x0061	ESS Technology ESPCM / Duck DK4 ADPCM&lt;br /&gt;
* 0x0062 msacm.voxacm160  vct3216.acm  Voxware v1.1.6/1.1.8 File-Mode Codecs  Voxware, Inc. vct3216.acm&lt;br /&gt;
* 0x0062	Voxware file-mode codec / Duck DK3 ADPCM&lt;br /&gt;
* 0x0063   Canopus ATRAC   Canopus, co., Ltd.&lt;br /&gt;
* 0x0064   G726 ADPCM   APICOM&lt;br /&gt;
* 0x0065   G722 ADPCM   APICOM&lt;br /&gt;
* 0x0066   DSAT   Microsoft&lt;br /&gt;
* 0x0067   DSAT DISPLAY   Microsoft&lt;br /&gt;
* 0x0069  msacm.voxacm160  Voxware v1.1.8 Bitstream-Mode Codecs  Voxware, Inc.   vct3216.acm&lt;br /&gt;
* 0x0070	Voxware AC8 (Lernout &amp;amp; Hauspie CELP 4.8 kbps) lhacm.acm&lt;br /&gt;
* 0x0071	Voxware AC10 (Lernout &amp;amp; Hauspie CBS 8kbps) lhacm.acm&lt;br /&gt;
* 0x0072	Voxware AC16 (Lernout &amp;amp; Hauspie CBS 12kbps) lhacm.acm&lt;br /&gt;
* 0x0073	Voxware AC20 (Lernout &amp;amp; Hauspie CBS 16kbps) lhacm.acm&lt;br /&gt;
* 0x0074  Voxware MetaVoice Audio Compression Manager Driver  msacm.voxacm160      vct3216.acm&lt;br /&gt;
* 0x0075  Voxware RT29 Metasound Audio Compression Manager Driver  msacm.voxacm160      vct3216.acm&lt;br /&gt;
* 0x0076	Voxware RT29HW&lt;br /&gt;
* 0x0077	Voxware VR12&lt;br /&gt;
* 0x0078	Voxware VR18&lt;br /&gt;
* 0x0079	Voxware TQ40&lt;br /&gt;
* 0x007A	Voxware SC3&lt;br /&gt;
* 0x007B	Voxware SC3&lt;br /&gt;
* 0x0080   Softsound   Softsound, Ltd.&lt;br /&gt;
* 0x0081	Voxware TQ60&lt;br /&gt;
* 0x0082	Microsoft MSRT24 (ACM codec is an alternative codec)&lt;br /&gt;
* 0x0083   G729A   AT&amp;amp;T Labs, Inc.&lt;br /&gt;
* 0x0084   MVI MVI2   Motion Pixels&lt;br /&gt;
* 0x0085	DataFusion Systems G.726&lt;br /&gt;
* 0x0086	DataFusion Systems GSM610&lt;br /&gt;
* 0x0088   ISIAUDIO   Iterated Systems, Inc.&lt;br /&gt;
* 0x0089   ONLIVE   OnLive! Technologies, Inc.&lt;br /&gt;
* 0x008A   MULTITUDE FT SX20   Multitude, Inc.&lt;br /&gt;
* 0x008B   G.721 ADPCM   Infocom ITS A/S&lt;br /&gt;
* 0x008C   CONVEDIA G729   Convedia Corporation&lt;br /&gt;
* 0x008D	Not specified   congruency, Inc.&lt;br /&gt;
* 0x0091   SBC24   Siemens Business Communications Sys&lt;br /&gt;
* 0x0092   Dolby AC3 SPDIF   Sonic Foundry&lt;br /&gt;
* 0x0093	MediaSonic G.723&lt;br /&gt;
* 0x0094   Prosody 8KBPS   Aculab plc&lt;br /&gt;
* 0x0097   Zyxel ADPCM   ZyXEL Communications, Inc.&lt;br /&gt;
* 0x0098	Philips LPCBB     smlpcbb.acm&lt;br /&gt;
* 0x0099   PACKED   Studer Professional Audio AG&lt;br /&gt;
* 0x00A0   Malden PhonyTalk   Malden Electronics Ltd.&lt;br /&gt;
* 0x00A1   Racal Recorder GSM   Racal Recorders&lt;br /&gt;
* 0x00A2   Racal Recorder G720.a   Racal Recorders&lt;br /&gt;
* 0x00A3   Racal G723.1   Racal Recorders&lt;br /&gt;
* 0x00A4   Racal Tetra ACELP   Racal Recorders&lt;br /&gt;
* 0x00B0	NEC AAC NEC Corporation&lt;br /&gt;
* 0x00E1        Microsoft ADPCM&lt;br /&gt;
* 0x00f4  WRPR codec  &lt;br /&gt;
* 0x00FF	AAC&lt;br /&gt;
* 0x0100	Rhetorex ADPCM&lt;br /&gt;
* 0x0101	IBM mu-law / BeCubed Software IRAT&lt;br /&gt;
* 0x0102   ALAW   IBM a-law format&lt;br /&gt;
* 0x0103   ADPCM   IBM AVC Adaptive Differential Pulse Code Modulation&lt;br /&gt;
* 0x0111	Vivo G.723&lt;br /&gt;
* 0x0112	Vivo Siren&lt;br /&gt;
* 0x0120   PHILIPS CELP   Philips Speech Processing&lt;br /&gt;
* 0x0121   PHILIPS GRUNDIG   Philips Speech Processing&lt;br /&gt;
* 0x0123   DEC G723   Digital Equipment Corporation Digital G.723&lt;br /&gt;
* 0x0125	Sanyo LD ADPCM&lt;br /&gt;
* 0x0130 Sipro Lab Telecom ACELP.net audio codec Sipro Lab TelecomInc.    sl_anet.acm&lt;br /&gt;
* 0x0131	Sipro Lab Telecom ACELP.4800&lt;br /&gt;
* 0x0132	Sipro Lab Telecom ACELP.8V3&lt;br /&gt;
* 0x0133	Sipro Lab Telecom ACELP.G.729&lt;br /&gt;
* 0x0134	Sipro Lab Telecom ACELP.G.729A&lt;br /&gt;
* 0x0135	Sipro Lab Telecom ACELP.KELVIN&lt;br /&gt;
* 0x0136   VOICEAGE AMR   VoiceAge Corporation&lt;br /&gt;
* 0x0140   G726ADPCM   Dictaphone Corporation&lt;br /&gt;
* 0x0141   CELP68   Dictaphone Corporation&lt;br /&gt;
* 0x0142   CELP54   Dictaphone Corporation&lt;br /&gt;
* 0x0150	Qualcomm PureVoice&lt;br /&gt;
* 0x0151	Qualcomm HalfRate&lt;br /&gt;
* 0x0155   TUBGSM   Ring Zero Systems, Inc.&lt;br /&gt;
* 0x0160  Windows Media Audio  msacm.msaudio1       msaud32.acm&lt;br /&gt;
* 0x0161	Windows Media Audio V2 V7 V8 V9 / DivX audio (WMA) / Alex AC3 Audio msaud32.acm&lt;br /&gt;
* 0x0162   Windows Media Audio 9 Professional   Microsoft, Inc.&lt;br /&gt;
* 0x0163   Windows Media Audio 9 Lossless   Microsoft, Inc.&lt;br /&gt;
* 0x0164	WMA Pro over S/PDIF&lt;br /&gt;
* 0x0170   UNISYS NAP ADPCM   Unisys Corporation&lt;br /&gt;
* 0x0171   UNISYS NAP ULAW   Unisys Corporation&lt;br /&gt;
* 0x0172   UNISYS NAP ALAW   Unisys Corporation&lt;br /&gt;
* 0x0173   UNISYS NAP 16K   Unisys Corporation&lt;br /&gt;
* 0x0174	MM SYCOM ACM SYC008     	SyCom Technologies&lt;br /&gt;
* 0x0175   MM SYCOM ACM SYC701 G726L   SyCom Technologies&lt;br /&gt;
* 0x0176   MM SYCOM ACM SYC701 CELP54   SyCom Technologies&lt;br /&gt;
* 0x0177   MM SYCOM ACM SYC701 CELP68   SyCom Technologies&lt;br /&gt;
* 0x0178	Knowledge Adventure ADPCM&lt;br /&gt;
* 0x0180   MPEG2AAC   Fraunhofer IIS&lt;br /&gt;
* 0x0190   DTS DS   Digital Theater Systems, Inc.&lt;br /&gt;
* 0x0200	Creative Labs ADPCM&lt;br /&gt;
* 0x0202	Creative Labs FastSpeech8&lt;br /&gt;
* 0x0203	Creative Labs FastSpeech10&lt;br /&gt;
* 0x0210   UHER ADPCM   UHER informatic GmbH&lt;br /&gt;
* 0x0215  Ulead DV AudioACM Driver  msacm.dvACM     dvacm.acm&lt;br /&gt;
* 0x0216 Ulead DV Audio Codec Ulead Systems, Inc.    Dvacm.acm&lt;br /&gt;
* 0x0217  Ulead MP3 codec engine  msacm.ulmp3acm  Warning: Codec is disabled&lt;br /&gt;
* 0x0220   Quarterdeck   Quarterdeck Corporation&lt;br /&gt;
* 0x0230   I-Link VC   I-link Worldwide&lt;br /&gt;
* 0x0240   RAW SPORT   Aureal Semiconductor&lt;br /&gt;
* 0x0241   ESST AC3   ESS Technology&lt;br /&gt;
* 0x0250   IPI HSX   Interactive Products, Inc.&lt;br /&gt;
* 0x0251   IPI RPELP   Interactive Products, Inc.&lt;br /&gt;
* 0x0260   CS2   Consistent Software&lt;br /&gt;
* 0x0270	Sony ATRAC3 (SCX, same as MiniDisk LP2)&lt;br /&gt;
* 0x0271	Sony SCY&lt;br /&gt;
* 0x0272	Sony ATRAC3&lt;br /&gt;
* 0x0273	Sony SPC&lt;br /&gt;
* 0x0280	TELUM   Telum Inc.&lt;br /&gt;
* 0x0281	TELUMIA Telum Inc.&lt;br /&gt;
* 0x0285	Norcom Voice Systems ADPCM  Norcom Electronics Corporation&lt;br /&gt;
* 0x028e MSN Messenger Audio Codec msacm.siren     sirenacm.dll&lt;br /&gt;
* 0x0300	Fujitsu FM TOWNS SND&lt;br /&gt;
* 0x0301   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0302   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0303   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0304   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0305   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0306   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0307   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0308   Not specified   Fujitsu Corporation&lt;br /&gt;
* 0x0350	DEVELOPMENT     Micronas Semiconductors, Inc.&lt;br /&gt;
* 0x0351   CELP833   Micronas Semiconductors, Inc.&lt;br /&gt;
* 0x03eb  DVMPEG Audio  Darim Vision Co., Ltd.     dvacmau.dll&lt;br /&gt;
* 0x0400	BTV Digital (Brooktree digital audio format)&lt;br /&gt;
* 0x0401  Intel Music Coder for MSACM msacm.imc    imc32.acm&lt;br /&gt;
* 0x0402  Indeo® audio software  msacm.iac2       iac25_32.ax&lt;br /&gt;
* 0x0450	QDesign Music&lt;br /&gt;
* 0x0500	On2 VP7 On2 Technologies AVC Audio&lt;br /&gt;
* 0x0501	On2 VP6 On2 Technologies&lt;br /&gt;
* 0x0680	AT&amp;amp;T Labs VME VMPCM&lt;br /&gt;
* 0x0681	AT&amp;amp;T Labs TPC&lt;br /&gt;
* 0x0700	YMPEG Alpha (dummy for MPEG-2 compressor)&lt;br /&gt;
* 0x08AE ClearJump Lightwave Lossless   http://www.clearjump.com&lt;br /&gt;
* 0x0AAC   HDX4 AAC   Jomigo GmbH&lt;br /&gt;
* 0x1000	Olivetti GSM&lt;br /&gt;
* 0x1001	Olivetti ADPCM&lt;br /&gt;
* 0x1002	Olivetti CELP&lt;br /&gt;
* 0x1003	Olivetti SBC&lt;br /&gt;
* 0x1004	Olivetti OPR&lt;br /&gt;
* 0x1100	Lernout &amp;amp; Hauspie codec&lt;br /&gt;
* 0x1101	Lernout &amp;amp; Hauspie CELP codec&lt;br /&gt;
* 0x1102	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1103	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1104	Lernout &amp;amp; Hauspie SBC codec&lt;br /&gt;
* 0x1400	Norris Communication&lt;br /&gt;
* 0x1401	AT&amp;amp;T Labs ISIAudio&lt;br /&gt;
* 0x1500   Soundspace Musicompress   Soundspace Music Compression Netspeak GSM - nsgsm32.acm&lt;br /&gt;
* 0x1501	Netspeak Truespeech - nstsp32.acm&lt;br /&gt;
* 0x181C   VoxWare RT24 speech codec   Voxware Inc.&lt;br /&gt;
* 0x181E	Lucent elemedia AX24000P Music codec&lt;br /&gt;
* 0x1971	Sonic Foundry LOSSLESS   &lt;br /&gt;
* 0x1979	Innings Telecom Inc. ADPCM   &lt;br /&gt;
* 0x1C07	Lucent SX8300P speech codec&lt;br /&gt;
* 0x1C0C	Lucent SX5363S G.723 compliant codec&lt;br /&gt;
* 0x1F03	CUseeMe DigiTalk (ex-Rocwell)&lt;br /&gt;
* 0x1FC4   NCT ALF2CD codec   http://www.nctsoft.com&lt;br /&gt;
* 0x2000  AC-3ACM Codec  msacm.ac3acm     ac3acm.acm&lt;br /&gt;
* 0x2001   Dolby DTS   Dolby Labs&lt;br /&gt;
* 0x2002	RealAudio 1 / 2 14.4&lt;br /&gt;
* 0x2003	RealAudio 1 / 2 28.8&lt;br /&gt;
* 0x2004	RealAudio G2 / 8 Cook (low bitrate)&lt;br /&gt;
* 0x2005	RealAudio 3 / 4 / 5 Music (DNET)&lt;br /&gt;
* 0x2006	RealAudio 10 AAC (RAAC)&lt;br /&gt;
* 0x2007	RealAudio 10 AAC+ (RACP)&lt;br /&gt;
* 0x2500	Reserved range to * 0x2600  Microsoft&lt;br /&gt;
* 0x3313 makeAVIS (ffvfw fake AVI sound from AviSynth scripts)  ff_acm.acm&lt;br /&gt;
* 0x4143	Divio MPEG-4 AAC audio&lt;br /&gt;
* 0x4180	fortherecord MPEG AAC celp?&lt;br /&gt;
* 0x4201   Nokia adaptive multirate   Nokia Mobile Phones&lt;br /&gt;
* 0x4243   Divio's G726   Divio, Inc.&lt;br /&gt;
* 0x434C	LEAD Speech&lt;br /&gt;
* 0x564C	LEAD Vorbis&lt;br /&gt;
* 0x5756   WavPack Audio   xiph.org [open source]&lt;br /&gt;
* 0x6665	Litewave audio compressor (lw.zip from http://www.clearjump.com)&lt;br /&gt;
* 0x674f  Ogg Vorbis mode 1 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6750  Ogg Vorbis mode 2 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6751  Ogg Vorbis mode 3 CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x676f  Ogg Vorbis mode 1+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6770  Ogg Vorbis mode 2+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x6771  Ogg Vorbis mode 3+ CODEC for MSACM  msacm.vorbis      vorbis.acm&lt;br /&gt;
* 0x7000	3COM NBX  3Com Corporation&lt;br /&gt;
* 0x706D   FAAD AAC   (open source)&lt;br /&gt;
* 0x77A1        The True Audio&lt;br /&gt;
* 0x7A21	GSM-AMR (CBR, no SID) 	EmzAMRNBDec.dll 	(doesnt actually decode properly)&lt;br /&gt;
* 0x7A22	GSM-AMR (VBR, including SID) GSMA/3GPP	EmzAMRNBDec.dll 	(doesnt actually decode properly)&lt;br /&gt;
* 0x8180 (unverified) For the Record - http://www.fortherecord.com&lt;br /&gt;
* 0xA100   COMVERSEINFOSYS G723 1   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA101   COMVERSEINFOSYS AVQSBC   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA102   COMVERSEINFOSYS OLDSBC   Comverse Infosys Ltd.&lt;br /&gt;
* 0xA103	Symbol Technology's G729A  Symbol Technologies Canada&lt;br /&gt;
* 0xA104	VoiceAge AMR WB VoiceAge Corporation&lt;br /&gt;
* 0xA105	Ingenient Technologies Inc. G726&lt;br /&gt;
* 0xA106   ISO/MPEG-4 advanced audio Coding   AAC.&lt;br /&gt;
* 0xA107   Encore Software Ltd's G726   Encore Software Ltd.&lt;br /&gt;
* 0xA109   Speex ACM Codec   xiph.org (Open Source)&lt;br /&gt;
* 0xC0CC GigaLink Audio Codec&lt;br /&gt;
* 0xDFAC DebugMode SonicFoundry Vegas FrameServer ACM Codec&lt;br /&gt;
* 0xe708	Unknown -&lt;br /&gt;
* 0xF1AC	Free Lossless Audio Codec FLAC&lt;br /&gt;
* 0xFFFC	VDOwave Audio&lt;br /&gt;
* 0xFFFE	Extensible wave format&lt;br /&gt;
* 0xFFFF	In Development / Unregistered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Multimedia Terminology]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Creative_ADPCM&amp;diff=15425</id>
		<title>Creative ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Creative_ADPCM&amp;diff=15425"/>
		<updated>2019-04-05T17:12:48Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: This is definitely not a variation on IMA ADPCM, which is an Oki/Dialogic derivative, but is Jayant-based, like Yamaha ADPCM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Format tag: 0x200&lt;br /&gt;
* Company: [[Creative]]&lt;br /&gt;
&lt;br /&gt;
This is a variation of [[Yamaha ADPCM]], which is also used in [[Creative Voice]].&lt;br /&gt;
&lt;br /&gt;
== Decoding Process ==&lt;br /&gt;
&lt;br /&gt;
  get new nibble from stream&lt;br /&gt;
  sign = nibble &amp;amp; 8&lt;br /&gt;
  delta = nibble &amp;amp; 7&lt;br /&gt;
  diff = ((2 * delta + 1) * step) / 8&lt;br /&gt;
  if sign &amp;gt; 0&lt;br /&gt;
    newval = (oldval * 254 / 256) - diff&lt;br /&gt;
  else&lt;br /&gt;
    newval = (oldval * 254 / 256) + diff&lt;br /&gt;
  step = (ct_table[delta] * step) &amp;gt;&amp;gt; 8&lt;br /&gt;
  step = clip(step, 511, 32767)&lt;br /&gt;
  newval = clip(newval, -32769, 32767)&lt;br /&gt;
  output newval as 16-bit sample&lt;br /&gt;
&lt;br /&gt;
And here is the table used in step modification:&lt;br /&gt;
&lt;br /&gt;
  const int ct_table[8] = {&lt;br /&gt;
    0x00E6, 0x00E6, 0x00E6, 0x00E6,&lt;br /&gt;
    0x0133, 0x0199, 0x0200, 0x0266&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Yamaha_ADPCM&amp;diff=15424</id>
		<title>Yamaha ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Yamaha_ADPCM&amp;diff=15424"/>
		<updated>2019-04-04T03:13:03Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add reference to Jayant's paper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0020&lt;br /&gt;
* Extension: spb,mmf&lt;br /&gt;
* Company: Yamaha&lt;br /&gt;
* Sample: http://samples.mplayerhq.hu/A-codecs/format-0x20-laugh.mmf&lt;br /&gt;
* ACM Codec: https://web.archive.org/web/20160323215457/http://smaf-yamaha.com/jp/tools/dl/Yamaha-ADPCM-ACM-Driver-100-j.zip&lt;br /&gt;
&lt;br /&gt;
A variant of this codec is used by several Yamaha chips:&lt;br /&gt;
* Y8950(MSX-SOUND)&lt;br /&gt;
* YM2608（OPNA) [the external ADPCM channel only]&lt;br /&gt;
and may also be used on the following chips:&lt;br /&gt;
* YM2610(OPNB) [the external ADPCM_B channel only?]&lt;br /&gt;
* YMZ263B(MMA)&lt;br /&gt;
* YMZ280B(PCMD8)&lt;br /&gt;
A (possibly slightly changed) variant is used on the sound chip of Sega Dreamcast and NAOMI:&lt;br /&gt;
* Yamaha AICA Super Intelligent Sound Processor&lt;br /&gt;
The exact codec was also used by Yamaha [[SMAF]] MA-2 and onward):&lt;br /&gt;
* MA-2 (YMU759)&lt;br /&gt;
* MA-3 (YMU762)&lt;br /&gt;
* MA-5 (YMU765)&lt;br /&gt;
* MA-7 (YMU786)&lt;br /&gt;
&lt;br /&gt;
The functionality of this codec is explained fairly extensively in two datasheets:&lt;br /&gt;
* Y8950 application manual: http://www.datasheetarchive.com/pdf/download.php?id=212962c2fe1b63fdc5ab320ca05ff3efefc925&amp;amp;type=M&amp;amp;query=y-8950&lt;br /&gt;
* YM2608 datasheet (Japanese): http://nemesis.hacking-cult.org/MegaDrive/Documentation/YM2608J.PDF&lt;br /&gt;
* Translated version of YM2608 datasheet: http://nemesis.hacking-cult.org/MegaDrive/Documentation/YM2608J%20Translated.PDF&lt;br /&gt;
&lt;br /&gt;
The codec is almost a reference implementation of the codec described in Jayant's 1973 paper [https://archive.org/details/bstj52-7-1119] (Table VIII, 'DPCM' column, B=4).&lt;br /&gt;
This paper, along with its companion paper [https://archive.org/details/bstj52-7-1105] originally coined the term &amp;quot;ADPCM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15423</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15423"/>
		<updated>2019-04-04T03:10:33Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: fix links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* wFormatTag ID: WAVE_FORMAT_ADPCM&lt;br /&gt;
* 'short' ID: MS_ADPCM&lt;br /&gt;
* ACM Codec: 'msadp32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (builtin predictors are in the range [0..6] but others can be manually defined)&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 // These are the 'built in' set of 7 predictor value pairs; additional values can be added to this table by including them as metadata chunks in the WAVE header&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The adaptation table comes from Jayant's 1973 paper [https://archive.org/details/bstj52-7-1119] (Table VIII, 'DPCM' column, B=4).&lt;br /&gt;
This paper, along with its companion paper [https://archive.org/details/bstj52-7-1105] originally coined the term &amp;quot;ADPCM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The relevant values from the paper are:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }&lt;br /&gt;
and Microsoft added an implicit '3.0' value as a 9th entry, for a final table of:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4, 3.0 }&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of&lt;br /&gt;
 { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 }&lt;br /&gt;
in that order, so take the unsigned value of the (signed) nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15422</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15422"/>
		<updated>2019-04-04T03:08:52Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: clean up links to papers, changed to link to archive.org pages for said papers rather than direct to pdfs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* wFormatTag ID: WAVE_FORMAT_ADPCM&lt;br /&gt;
* 'short' ID: MS_ADPCM&lt;br /&gt;
* ACM Codec: 'msadp32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (builtin predictors are in the range [0..6] but others can be manually defined)&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 // These are the 'built in' set of 7 predictor value pairs; additional values can be added to this table by including them as metadata chunks in the WAVE header&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The adaptation table comes from Jayant's 1973 [[https://archive.org/details/bstj52-7-1119|paper]] (Table VIII, 'DPCM' column, B=4).&lt;br /&gt;
This paper, along with its companion [[https://archive.org/details/bstj52-7-1105|paper]] originally coined the term &amp;quot;ADPCM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The relevant values from the paper are:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }&lt;br /&gt;
and Microsoft added an implicit '3.0' value as a 9th entry, for a final table of:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4, 3.0 }&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of&lt;br /&gt;
 { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 }&lt;br /&gt;
in that order, so take the unsigned value of the (signed) nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15414</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15414"/>
		<updated>2019-02-20T20:53:28Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: fix an error in the last sentence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* wFormatTag ID: WAVE_FORMAT_ADPCM&lt;br /&gt;
* 'short' ID: MS_ADPCM&lt;br /&gt;
* ACM Codec: 'msadp32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (builtin predictors are in the range [0..6] but others can be manually defined)&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 // These are the 'built in' set of 7 predictor value pairs; additional values can be added to this table by including them as metadata chunks in the WAVE header&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The adaptation table comes from Jayant's 1973 paper https://ia902600.us.archive.org/31/items/bstj52-7-1119/bstj52-7-1119.pdf (Table VIII, 'DPCM' column, B=4).&lt;br /&gt;
This paper, along with its companion paper https://ia902601.us.archive.org/13/items/bstj52-7-1105/bstj52-7-1105.pdf originally coined the term &amp;quot;ADPCM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The relevant values from the paper are:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }&lt;br /&gt;
and Microsoft added an implicit '3.0' value as a 9th entry, for a final table of:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4, 3.0 }&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of&lt;br /&gt;
 { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 }&lt;br /&gt;
in that order, so take the unsigned value of the (signed) nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15382</id>
		<title>DVI IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15382"/>
		<updated>2018-10-12T02:30:52Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;According to the [[XAnim]] multimedia application, there are two variants of DVI [[IMA ADPCM]], both of which are encoded and decoded with the IMA ADPCM algorithm. The original variant encodes the top nibble of a byte first, then the bottom nibble. The revised variant has the opposite encoding order.&lt;br /&gt;
&lt;br /&gt;
== DVI4 ==&lt;br /&gt;
&lt;br /&gt;
The [https://www.freesoft.org/CIE/RFC/1890/10.htm DVI4] codec, as defined in [https://www.freesoft.org/CIE/RFC/1890/index.htm RFC1890] is a variant of [[IMA ADPCM]].&lt;br /&gt;
In DVI4 the block header stores the initial predictor state, unlike [[IMA ADPCM]] where the block header stores the first sample.&lt;br /&gt;
Otherwise, DVI4 is decoded identically to [[IMA ADPCM]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15381</id>
		<title>DVI IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15381"/>
		<updated>2018-10-12T02:29:08Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: fix heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;According to the [[XAnim]] multimedia application, there are two variants of DVI [[IMA ADPCM]], both of which are encoded and decoded with the IMA ADPCM algorithm. The original variant encodes the top nibble of a byte first, then the bottom nibble. The revised variant has the opposite encoding order.&lt;br /&gt;
&lt;br /&gt;
== DVI4 ==&lt;br /&gt;
&lt;br /&gt;
The [https://www.freesoft.org/CIE/RFC/1890/10.htm DVI4] codec, as defined in [https://www.freesoft.org/CIE/RFC/1890/index.htm RFC1890] is a variant of [[IMA ADPCM]] where, unlike [[IMA ADPCM]] where the header stores the first sample, in DVI4 the header stores the initial predictor state. &lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15380</id>
		<title>DVI IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15380"/>
		<updated>2018-10-12T02:28:39Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add description of DVI4 codec and links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;According to the [[XAnim]] multimedia application, there are two variants of DVI [[IMA ADPCM]], both of which are encoded and decoded with the IMA ADPCM algorithm. The original variant encodes the top nibble of a byte first, then the bottom nibble. The revised variant has the opposite encoding order.&lt;br /&gt;
&lt;br /&gt;
- DVI4 -&lt;br /&gt;
The [https://www.freesoft.org/CIE/RFC/1890/10.htm DVI4] codec, as defined in [https://www.freesoft.org/CIE/RFC/1890/index.htm RFC1890] is a variant of [[IMA ADPCM]] where, unlike [[IMA ADPCM]] where the header stores the first sample, in DVI4 the header stores the initial predictor state. &lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Yamaha_ADPCM&amp;diff=15379</id>
		<title>Yamaha ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Yamaha_ADPCM&amp;diff=15379"/>
		<updated>2018-10-12T01:55:53Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add note about AICA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0020&lt;br /&gt;
* Extension: spb,mmf&lt;br /&gt;
* Company: Yamaha&lt;br /&gt;
* Sample: http://samples.mplayerhq.hu/A-codecs/format-0x20-laugh.mmf&lt;br /&gt;
* ACM Codec: https://web.archive.org/web/20160323215457/http://smaf-yamaha.com/jp/tools/dl/Yamaha-ADPCM-ACM-Driver-100-j.zip&lt;br /&gt;
&lt;br /&gt;
A variant of this codec is used by several Yamaha chips:&lt;br /&gt;
* Y8950(MSX-SOUND)&lt;br /&gt;
* YM2608（OPNA) [the external ADPCM channel only]&lt;br /&gt;
and may also be used on the following chips:&lt;br /&gt;
* YM2610(OPNB) [the external ADPCM_B channel only?]&lt;br /&gt;
* YMZ263B(MMA)&lt;br /&gt;
* YMZ280B(PCMD8)&lt;br /&gt;
A (possibly slightly changed) variant is used on the sound chip of Sega Dreamcast and NAOMI:&lt;br /&gt;
* Yamaha AICA Super Intelligent Sound Processor&lt;br /&gt;
The exact codec was also used by Yamaha [[SMAF]] MA-2 and onward):&lt;br /&gt;
* MA-2 (YMU759)&lt;br /&gt;
* MA-3 (YMU762)&lt;br /&gt;
* MA-5 (YMU765)&lt;br /&gt;
* MA-7 (YMU786)&lt;br /&gt;
&lt;br /&gt;
The functionality of this codec is explained fairly extensively in two datasheets:&lt;br /&gt;
* Y8950 application manual: http://www.datasheetarchive.com/pdf/download.php?id=212962c2fe1b63fdc5ab320ca05ff3efefc925&amp;amp;type=M&amp;amp;query=y-8950&lt;br /&gt;
* YM2608 datasheet (Japanese): http://nemesis.hacking-cult.org/MegaDrive/Documentation/YM2608J.PDF&lt;br /&gt;
* Translated version of YM2608 datasheet: http://nemesis.hacking-cult.org/MegaDrive/Documentation/YM2608J%20Translated.PDF&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15332</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15332"/>
		<updated>2017-12-28T20:41:32Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add note about the predictor values, and that others can be added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* wFormatTag ID: WAVE_FORMAT_ADPCM&lt;br /&gt;
* 'short' ID: MS_ADPCM&lt;br /&gt;
* ACM Codec: 'msadp32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (builtin predictors are in the range [0..6] but others can be manually defined)&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 // These are the 'built in' set of 7 predictor value pairs; additional values can be added to this table by including them as metadata chunks in the WAVE header&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The adaptation table comes from Jayant's 1973 paper https://ia902600.us.archive.org/31/items/bstj52-7-1119/bstj52-7-1119.pdf (Table VIII, 'DPCM' column, B=4).&lt;br /&gt;
This paper, along with its companion paper https://ia902601.us.archive.org/13/items/bstj52-7-1105/bstj52-7-1105.pdf originally coined the term &amp;quot;ADPCM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The relevant values from the paper are:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }&lt;br /&gt;
and Microsoft added an implicit '3.0' value as a 9th entry, for a final table of:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4, 3.0 }&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of&lt;br /&gt;
 { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 }&lt;br /&gt;
in that order, so take the absolute value of the nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_IMA_ADPCM&amp;diff=15330</id>
		<title>Microsoft IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_IMA_ADPCM&amp;diff=15330"/>
		<updated>2017-10-30T06:23:41Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: Undo revision 15329 by Lord Nightmare (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0011&lt;br /&gt;
* FOURCC: 'm', 's', 0x00, 0x11&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* wFormatTag ID: WAVE_FORMAT_DVI_ADPCM&lt;br /&gt;
* 'short' ID: DVI_ADPCM&lt;br /&gt;
* ACM Codec: 'imaadp32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
A Microsoft media file (this includes [[Microsoft Wave|WAV]], [[Microsoft Audio/Video Interleaved|AVI]], and [[Microsoft Advanced Streaming Format|ASF]]) that is encoded with [[IMA ADPCM]] data has an audio format number of 0x11. The file will have a [[WAVEFORMATEX]] structure in its header which contains a field named nBlockAlign. This field reveals the size of a block of IMA-encoded data.&lt;br /&gt;
&lt;br /&gt;
Note that Microsoft IMA data can also occur in Apple Quicktime files using the fourcc 'msx0x11'. In this case, a [[WAVEFORMATEX]] header will be attached to the Quicktime file's audio stsd atom.&lt;br /&gt;
&lt;br /&gt;
If the IMA data is monaural, an individual chunk of data begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 bytes 0-1:   initial predictor (in little-endian format)&lt;br /&gt;
 byte 2:      initial index&lt;br /&gt;
 byte 3:      unknown, usually 0 and is probably reserved &lt;br /&gt;
&lt;br /&gt;
The remaining bytes in the chunk are the IMA nibbles. Each byte is decoded bottom nibble first, then top nibble as follows:&lt;br /&gt;
&lt;br /&gt;
 byte0 byte1 byte2 byte3 ...&lt;br /&gt;
  n1n0  n3n2  n5n4  n7n6 ... &lt;br /&gt;
&lt;br /&gt;
If the IMA data is stereo, a chunk begins with two preambles, one for the left audio channel and one for the right channel:&lt;br /&gt;
&lt;br /&gt;
 bytes 0-1:   initial predictor (in little-endian format) for left channel&lt;br /&gt;
 byte 2:      initial index for left channel&lt;br /&gt;
 byte 3:      unknown, usually 0 and is probably reserved&lt;br /&gt;
 bytes 4-5:   initial predictor (in little-endian format) for right channel&lt;br /&gt;
 byte 6:      initial index (for right channel)&lt;br /&gt;
 byte 7:      unknown, usually 0 and is probably reserved &lt;br /&gt;
&lt;br /&gt;
The remaining bytes in the chunk are the IMA nibbles. The first 4 bytes, or 8 nibbles, belong to the left channel and the next 4 bytes belong to the right channel. This interleaving continues until the end of the chunk:&lt;br /&gt;
&lt;br /&gt;
 byte0 byte1 byte2 byte3 ...&lt;br /&gt;
  n1n0  n3n2  n5n4  n7n6 ...(left channel)&lt;br /&gt;
 byte4 byte5 byte6 byte7 ...&lt;br /&gt;
  n1n0  n3n2  n5n4  n7n6 ...(right channel)&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_IMA_ADPCM&amp;diff=15329</id>
		<title>Microsoft IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_IMA_ADPCM&amp;diff=15329"/>
		<updated>2017-10-30T06:22:40Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: there's no point in storing both the short and long ID, the short ID is just the long id with WAVE_FORMAT removed...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0011&lt;br /&gt;
* FOURCC: 'm', 's', 0x00, 0x11&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* wFormatTag ID: WAVE_FORMAT_DVI_ADPCM&lt;br /&gt;
* ACM Codec: 'imaadp32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
A Microsoft media file (this includes [[Microsoft Wave|WAV]], [[Microsoft Audio/Video Interleaved|AVI]], and [[Microsoft Advanced Streaming Format|ASF]]) that is encoded with [[IMA ADPCM]] data has an audio format number of 0x11. The file will have a [[WAVEFORMATEX]] structure in its header which contains a field named nBlockAlign. This field reveals the size of a block of IMA-encoded data.&lt;br /&gt;
&lt;br /&gt;
Note that Microsoft IMA data can also occur in Apple Quicktime files using the fourcc 'msx0x11'. In this case, a [[WAVEFORMATEX]] header will be attached to the Quicktime file's audio stsd atom.&lt;br /&gt;
&lt;br /&gt;
If the IMA data is monaural, an individual chunk of data begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 bytes 0-1:   initial predictor (in little-endian format)&lt;br /&gt;
 byte 2:      initial index&lt;br /&gt;
 byte 3:      unknown, usually 0 and is probably reserved &lt;br /&gt;
&lt;br /&gt;
The remaining bytes in the chunk are the IMA nibbles. Each byte is decoded bottom nibble first, then top nibble as follows:&lt;br /&gt;
&lt;br /&gt;
 byte0 byte1 byte2 byte3 ...&lt;br /&gt;
  n1n0  n3n2  n5n4  n7n6 ... &lt;br /&gt;
&lt;br /&gt;
If the IMA data is stereo, a chunk begins with two preambles, one for the left audio channel and one for the right channel:&lt;br /&gt;
&lt;br /&gt;
 bytes 0-1:   initial predictor (in little-endian format) for left channel&lt;br /&gt;
 byte 2:      initial index for left channel&lt;br /&gt;
 byte 3:      unknown, usually 0 and is probably reserved&lt;br /&gt;
 bytes 4-5:   initial predictor (in little-endian format) for right channel&lt;br /&gt;
 byte 6:      initial index (for right channel)&lt;br /&gt;
 byte 7:      unknown, usually 0 and is probably reserved &lt;br /&gt;
&lt;br /&gt;
The remaining bytes in the chunk are the IMA nibbles. The first 4 bytes, or 8 nibbles, belong to the left channel and the next 4 bytes belong to the right channel. This interleaving continues until the end of the chunk:&lt;br /&gt;
&lt;br /&gt;
 byte0 byte1 byte2 byte3 ...&lt;br /&gt;
  n1n0  n3n2  n5n4  n7n6 ...(left channel)&lt;br /&gt;
 byte4 byte5 byte6 byte7 ...&lt;br /&gt;
  n1n0  n3n2  n5n4  n7n6 ...(right channel)&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_IMA_ADPCM&amp;diff=15328</id>
		<title>Microsoft IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_IMA_ADPCM&amp;diff=15328"/>
		<updated>2017-10-30T06:21:07Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add acm, wformattag and short id&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0011&lt;br /&gt;
* FOURCC: 'm', 's', 0x00, 0x11&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* wFormatTag ID: WAVE_FORMAT_DVI_ADPCM&lt;br /&gt;
* 'short' ID: DVI_ADPCM&lt;br /&gt;
* ACM Codec: 'imaadp32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
A Microsoft media file (this includes [[Microsoft Wave|WAV]], [[Microsoft Audio/Video Interleaved|AVI]], and [[Microsoft Advanced Streaming Format|ASF]]) that is encoded with [[IMA ADPCM]] data has an audio format number of 0x11. The file will have a [[WAVEFORMATEX]] structure in its header which contains a field named nBlockAlign. This field reveals the size of a block of IMA-encoded data.&lt;br /&gt;
&lt;br /&gt;
Note that Microsoft IMA data can also occur in Apple Quicktime files using the fourcc 'msx0x11'. In this case, a [[WAVEFORMATEX]] header will be attached to the Quicktime file's audio stsd atom.&lt;br /&gt;
&lt;br /&gt;
If the IMA data is monaural, an individual chunk of data begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 bytes 0-1:   initial predictor (in little-endian format)&lt;br /&gt;
 byte 2:      initial index&lt;br /&gt;
 byte 3:      unknown, usually 0 and is probably reserved &lt;br /&gt;
&lt;br /&gt;
The remaining bytes in the chunk are the IMA nibbles. Each byte is decoded bottom nibble first, then top nibble as follows:&lt;br /&gt;
&lt;br /&gt;
 byte0 byte1 byte2 byte3 ...&lt;br /&gt;
  n1n0  n3n2  n5n4  n7n6 ... &lt;br /&gt;
&lt;br /&gt;
If the IMA data is stereo, a chunk begins with two preambles, one for the left audio channel and one for the right channel:&lt;br /&gt;
&lt;br /&gt;
 bytes 0-1:   initial predictor (in little-endian format) for left channel&lt;br /&gt;
 byte 2:      initial index for left channel&lt;br /&gt;
 byte 3:      unknown, usually 0 and is probably reserved&lt;br /&gt;
 bytes 4-5:   initial predictor (in little-endian format) for right channel&lt;br /&gt;
 byte 6:      initial index (for right channel)&lt;br /&gt;
 byte 7:      unknown, usually 0 and is probably reserved &lt;br /&gt;
&lt;br /&gt;
The remaining bytes in the chunk are the IMA nibbles. The first 4 bytes, or 8 nibbles, belong to the left channel and the next 4 bytes belong to the right channel. This interleaving continues until the end of the chunk:&lt;br /&gt;
&lt;br /&gt;
 byte0 byte1 byte2 byte3 ...&lt;br /&gt;
  n1n0  n3n2  n5n4  n7n6 ...(left channel)&lt;br /&gt;
 byte4 byte5 byte6 byte7 ...&lt;br /&gt;
  n1n0  n3n2  n5n4  n7n6 ...(right channel)&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15327</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15327"/>
		<updated>2017-10-30T06:18:01Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: clarify 'short' ID&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* wFormatTag ID: WAVE_FORMAT_ADPCM&lt;br /&gt;
* 'short' ID: MS_ADPCM&lt;br /&gt;
* ACM Codec: 'msadp32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (should be in the range [0..6])&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The adaptation table comes from Jayant's 1973 paper https://ia902600.us.archive.org/31/items/bstj52-7-1119/bstj52-7-1119.pdf (Table VIII, 'DPCM' column, B=4).&lt;br /&gt;
This paper, along with its companion paper https://ia902601.us.archive.org/13/items/bstj52-7-1105/bstj52-7-1105.pdf originally coined the term &amp;quot;ADPCM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The relevant values from the paper are:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }&lt;br /&gt;
and Microsoft added an implicit '3.0' value as a 9th entry, for a final table of:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4, 3.0 }&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of&lt;br /&gt;
 { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 }&lt;br /&gt;
in that order, so take the absolute value of the nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=15326</id>
		<title>Dialogic IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=15326"/>
		<updated>2017-10-30T06:16:44Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: better format for the hardware implementations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0010 &lt;br /&gt;
* Extension: vox, oki&lt;br /&gt;
* Company: [[Dialogic]], Oki Electric Industry&lt;br /&gt;
* Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The decoding algorithm is the same as the standard IMA ADPCM algorithm with the following modifications:&lt;br /&gt;
&lt;br /&gt;
* A different, smaller step table is used (refer to Appendix A for the table). The table contains 49 values ranging from indices 0..48.&lt;br /&gt;
* The predictor is always initialized to 0 at the start of decoding.&lt;br /&gt;
* The index is always initialized to 16 at the start of decoding.&lt;br /&gt;
* When the index is modified by the ADPCM delta, it should be clamped within the 0..48 range, rather than 0..88.&lt;br /&gt;
* 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.&lt;br /&gt;
* The output samples are 12 bits in resolution and should be scaled as necessary.&lt;br /&gt;
&lt;br /&gt;
== Modified Step Table ==&lt;br /&gt;
&lt;br /&gt;
 int dialogic_ima_step[49] = { &lt;br /&gt;
   16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, &lt;br /&gt;
   50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143,&lt;br /&gt;
   157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, &lt;br /&gt;
   494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552 &lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Hardware Implementations ==&lt;br /&gt;
The following ICs can decode this codec:&lt;br /&gt;
* OKI MSM5205&lt;br /&gt;
* OKI MSM6295&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15325</id>
		<title>DVI IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15325"/>
		<updated>2017-10-30T06:09:41Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: I need to rethink this...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;According to the [[XAnim]] multimedia application, there are two variants of DVI [[IMA ADPCM]], both of which are encoded and decoded with the IMA ADPCM algorithm. The original variant encodes the top nibble of a byte first, then the bottom nibble. The revised variant has the opposite encoding order.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=15324</id>
		<title>Dialogic IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=15324"/>
		<updated>2017-10-30T03:42:43Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add note about hardware decoders for OKI/Dialogic IMA ADPCM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0010 &lt;br /&gt;
* Extension: vox, oki&lt;br /&gt;
* Company: [[Dialogic]], Oki Electric Industry&lt;br /&gt;
* Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The decoding algorithm is the same as the standard IMA ADPCM algorithm with the following modifications:&lt;br /&gt;
&lt;br /&gt;
* A different, smaller step table is used (refer to Appendix A for the table). The table contains 49 values ranging from indices 0..48.&lt;br /&gt;
* The predictor is always initialized to 0 at the start of decoding.&lt;br /&gt;
* The index is always initialized to 16 at the start of decoding.&lt;br /&gt;
* When the index is modified by the ADPCM delta, it should be clamped within the 0..48 range, rather than 0..88.&lt;br /&gt;
* 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.&lt;br /&gt;
* The output samples are 12 bits in resolution and should be scaled as necessary.&lt;br /&gt;
&lt;br /&gt;
== Modified Step Table ==&lt;br /&gt;
&lt;br /&gt;
 int dialogic_ima_step[49] = { &lt;br /&gt;
   16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, &lt;br /&gt;
   50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143,&lt;br /&gt;
   157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, &lt;br /&gt;
   494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552 &lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Hardware Implementations ==&lt;br /&gt;
The OKI MSM5205 and MSM6295 ADPCM player chips can hardware-decode data encoded in this codec. They are commonly found on arcade games.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15323</id>
		<title>DVI IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15323"/>
		<updated>2017-10-30T03:07:25Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add more information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;According to the [[XAnim]] multimedia application, there are two variants of DVI [[IMA ADPCM]], both of which are encoded and decoded with the IMA ADPCM algorithm. The original variant encodes the top nibble of a byte first, then the bottom nibble. The revised variant has the opposite encoding order.&lt;br /&gt;
&lt;br /&gt;
[[IMA ADPCM]] and [[Microsoft IMA ADPCM]] are both the same codec, an implementation of the Intel/DVI(R) IMA ADPCM standard, the only difference being encapsulation around (and nybble order of) the ADPCM data. The [[IMA ADPCM]] standard did not specify headers (RIFF/WAV/AU/etc) nor did it specify a nybble order for packing 4-bit ADPCM nybbles to a byte, while the [[Microsoft IMA ADPCM]] implementation does. It is possible that other [[IMA ADPCM]] implementations, such as the one in .AU and .AIFF files, is different in this regard.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15322</id>
		<title>DVI IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=DVI_IMA_ADPCM&amp;diff=15322"/>
		<updated>2017-10-30T02:51:56Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add info about the fact that DVI_IMA_ADPCM, IMA_ADPCM and Microsoft_IMA_ADPCM are all fundamentally the same codec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;According to the [[XAnim]] multimedia application, there are two variants of DVI [[IMA ADPCM]], both of which are encoded and decoded with the IMA ADPCM algorithm. The original variant encodes the top nibble of a byte first, then the bottom nibble. The revised variant has the opposite encoding order.&lt;br /&gt;
&lt;br /&gt;
[IMA ADPCM] and [Microsoft IMA ADPCM] are both the same codec, an implementation of the IMA/DVI ADPCM standard, the only difference being encapsulation around the ADPCM data. The [IMA ADPCM] standard did not specify RIFF/WAV file headers, while the [Microsoft IMA ADPCM] implementation does.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=IMA_ADPCM&amp;diff=15321</id>
		<title>IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=IMA_ADPCM&amp;diff=15321"/>
		<updated>2017-10-30T02:49:15Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add link to original IMA ADPCM specification document&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[Interactive Multimedia Association]] (IMA) developed an ADPCM algorithm designed to be used in entertainment multimedia applications. It is particularly fast to encode and decode and does not strictly require any multiplications or floating point operations.&lt;br /&gt;
&lt;br /&gt;
While the encoding and decoding algorithms remain more or less constant across different IMA implementations, the specific on-disk data formats vary. This page describes the common IMA decoding algorithm. See the [[:Category:IMA ADPCM Audio Codecs]] page for various formats used for storing the data on disk.&lt;br /&gt;
&lt;br /&gt;
== Decoding IMA ==&lt;br /&gt;
To decode IMA ADPCM, initialize 3 variables:&lt;br /&gt;
&lt;br /&gt;
* predictor: This is either initialized from the data chunk preamble specified in the format or is initialized to 0 at the start of the decoding process.&lt;br /&gt;
* step index: Similar to the initial predictor, this variable is initialized from the data chunk preamble or set to 0 at the start of the decoding process.&lt;br /&gt;
* step: This variable is initialized to ima_step_table[step_index].&lt;br /&gt;
&lt;br /&gt;
The encoded IMA bitstream is comprised of a series of 4-bit nibbles. This means that each byte represents 2 IMA nibbles. The specific data format will dictate whether the stream is decoded top nibble first or bottom nibble first, and whether there is stereo interleaving within the IMA nibbles. For this discussion, imagine the IMA bitstream as a series of nibbles representing a single audio channel:&lt;br /&gt;
&lt;br /&gt;
 n0 n1 n2 n3 n4 n5 ... &lt;br /&gt;
&lt;br /&gt;
Where each nibble represents both a table index and a sign/magnitude number during the decoding process. Transform each nibble in the stream into a signed, 16-bit PCM sample using the following process:&lt;br /&gt;
&lt;br /&gt;
 step_index = step_index + ima_index_table[(unsigned)nibble]&lt;br /&gt;
 &lt;br /&gt;
 diff = ((signed)nibble + 0.5) * step / 4&lt;br /&gt;
 &lt;br /&gt;
 predictor = predictor + diff&lt;br /&gt;
 &lt;br /&gt;
 step = ima_step_table[step_index]&lt;br /&gt;
&lt;br /&gt;
Regarding the step index and predictor calculations: Be sure to saturate the computed step index between 0 and 88 (table limits) and the predictor between -32768 and 32767 (signed 16-bit number range). It is possible for these values to outrange which could cause undesirable program behavior if unchecked.&lt;br /&gt;
&lt;br /&gt;
== Optimization ==&lt;br /&gt;
&lt;br /&gt;
A note about the following calculation:&lt;br /&gt;
&lt;br /&gt;
 diff = ((sign/mag.)nibble + 0.5) * step / 4&lt;br /&gt;
	&lt;br /&gt;
At first glance, it appears that this calculation requires floating point operations and an arbitrary (not power-of-2) multiplication. However, some numerical manipulations reveal some useful simplifications:&lt;br /&gt;
&lt;br /&gt;
 diff = ((step * nibble) + (step / 2)) / 4&lt;br /&gt;
 &lt;br /&gt;
 diff =	(step * nibble / 4) + (step / 8)&lt;br /&gt;
	&lt;br /&gt;
The step / 8 calculation can be expressed as a bit shift right by 3 (step SHR 3). The first part of the equation can also be simplified. Since a nibble only carries 4 bits, and those 4 bits are a sign/magnitude number, there are only 3 bits of magnitude information. If all 3 magnitude bits are set to 1:&lt;br /&gt;
&lt;br /&gt;
 nibble = 4 + 2 + 1&lt;br /&gt;
 &lt;br /&gt;
 step * nibble / 4 = (4 * step / 4) + (2 * step / 4) + (1 * step / 4) = step + (step / 2) + (step / 4)&lt;br /&gt;
&lt;br /&gt;
Thus, if bit 2 of the nibble is set, add step to diff. If bit 1 is set, add (step / 2 = step SHR 1) to diff. If bit 0 is set, add (step / 4 = step SHR 2) to diff. Finally, if the sign bit is set, subtract the final diff value from the predictor value; otherwise, add the final diff value to the predictor value. The usual algorithm is as follows:&lt;br /&gt;
&lt;br /&gt;
 sign = nibble &amp;amp; 8&lt;br /&gt;
 delta = nibble &amp;amp; 7&lt;br /&gt;
 diff = step &amp;gt;&amp;gt; 3&lt;br /&gt;
 if (delta &amp;amp; 4) diff += step&lt;br /&gt;
 if (delta &amp;amp; 2) diff += (step &amp;gt;&amp;gt; 1)&lt;br /&gt;
 if (delta &amp;amp; 1) diff += (step &amp;gt;&amp;gt; 2)&lt;br /&gt;
 if (sign) predictor -= diff&lt;br /&gt;
 else predictor += diff &lt;br /&gt;
&lt;br /&gt;
This method was particularly useful back when IMA was implemented on commodity CPUs which were relatively slow at multiplication. One multiplication per audio sample had a notable impact on program performance, as opposed to the series of branches, additions and logical bit operations. If multiplication performance is not an issue, it is possible to carry out the diff calculation with only one non-power-of-2 multiplication and no floating point numbers:&lt;br /&gt;
&lt;br /&gt;
 diff = ((((signed)nibble+0.5) * step) / 4) * (2 / 2)&lt;br /&gt;
 &lt;br /&gt;
 diff = (nibble + 0.5) * 2 * step / 8&lt;br /&gt;
 &lt;br /&gt;
 diff = (2 * nibble + 1) * step / 8&lt;br /&gt;
&lt;br /&gt;
[NOTE: something seems wrong here, e.g. for nibble = 3 and step = 3 we would get with the upper formula&lt;br /&gt;
diff = 0 + 1 + 0 = 1&lt;br /&gt;
and with the lower one&lt;br /&gt;
diff = (2 * 3 + 1) * 3 / 8 = 21 / 8 = 2&lt;br /&gt;
Since with ADPCM errors can propagate forever that seems like a really bad thing...&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
== Decoding Tables ==&lt;br /&gt;
&lt;br /&gt;
 int ima_index_table[16] = {&lt;br /&gt;
   -1, -1, -1, -1, 2, 4, 6, 8,&lt;br /&gt;
   -1, -1, -1, -1, 2, 4, 6, 8&lt;br /&gt;
 }; &lt;br /&gt;
&lt;br /&gt;
Note that many programs use slight deviations from the following table, but such deviations are negligible:&lt;br /&gt;
&lt;br /&gt;
 int ima_step_table[89] = { &lt;br /&gt;
   7, 8, 9, 10, 11, 12, 13, 14, 16, 17, &lt;br /&gt;
   19, 21, 23, 25, 28, 31, 34, 37, 41, 45, &lt;br /&gt;
   50, 55, 60, 66, 73, 80, 88, 97, 107, 118, &lt;br /&gt;
   130, 143, 157, 173, 190, 209, 230, 253, 279, 307,&lt;br /&gt;
   337, 371, 408, 449, 494, 544, 598, 658, 724, 796,&lt;br /&gt;
   876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, &lt;br /&gt;
   2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,&lt;br /&gt;
   5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, &lt;br /&gt;
   15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767 &lt;br /&gt;
 }; &lt;br /&gt;
&lt;br /&gt;
== IMA ADPCM Specification ==&lt;br /&gt;
A scanned, OCR'ed copy of the original IMA/DVI ADPCM specification document can be found at http://www.cs.columbia.edu/~hgs/audio/dvi/IMA_ADPCM.pdf with original page scans at http://www.cs.columbia.edu/~hgs/audio/dvi/&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15320</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15320"/>
		<updated>2017-10-30T02:41:16Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add wFormatTag ID&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* wFormatTag ID: WAVE_FORMAT_ADPCM or MS_ADPCM&lt;br /&gt;
* ACM Codec: 'msadp32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (should be in the range [0..6])&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The adaptation table comes from Jayant's 1973 paper https://ia902600.us.archive.org/31/items/bstj52-7-1119/bstj52-7-1119.pdf (Table VIII, 'DPCM' column, B=4).&lt;br /&gt;
This paper, along with its companion paper https://ia902601.us.archive.org/13/items/bstj52-7-1105/bstj52-7-1105.pdf originally coined the term &amp;quot;ADPCM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The relevant values from the paper are:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }&lt;br /&gt;
and Microsoft added an implicit '3.0' value as a 9th entry, for a final table of:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4, 3.0 }&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of&lt;br /&gt;
 { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 }&lt;br /&gt;
in that order, so take the absolute value of the nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15319</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15319"/>
		<updated>2017-10-29T02:07:19Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* ACM Codec: 'msadp32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (should be in the range [0..6])&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The adaptation table comes from Jayant's 1973 paper https://ia902600.us.archive.org/31/items/bstj52-7-1119/bstj52-7-1119.pdf (Table VIII, 'DPCM' column, B=4).&lt;br /&gt;
This paper, along with its companion paper https://ia902601.us.archive.org/13/items/bstj52-7-1105/bstj52-7-1105.pdf originally coined the term &amp;quot;ADPCM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The relevant values from the paper are:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }&lt;br /&gt;
and Microsoft added an implicit '3.0' value as a 9th entry, for a final table of:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4, 3.0 }&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of&lt;br /&gt;
 { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 }&lt;br /&gt;
in that order, so take the absolute value of the nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15318</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15318"/>
		<updated>2017-10-29T02:06:49Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add acm codec info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* ACM Codec: 'msadpm32.acm' (included in Windows 95+)&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (should be in the range [0..6])&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The adaptation table comes from Jayant's 1973 paper https://ia902600.us.archive.org/31/items/bstj52-7-1119/bstj52-7-1119.pdf (Table VIII, 'DPCM' column, B=4).&lt;br /&gt;
This paper, along with its companion paper https://ia902601.us.archive.org/13/items/bstj52-7-1105/bstj52-7-1105.pdf originally coined the term &amp;quot;ADPCM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The relevant values from the paper are:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }&lt;br /&gt;
and Microsoft added an implicit '3.0' value as a 9th entry, for a final table of:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4, 3.0 }&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of&lt;br /&gt;
 { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 }&lt;br /&gt;
in that order, so take the absolute value of the nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Yamaha_ADPCM&amp;diff=15317</id>
		<title>Yamaha ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Yamaha_ADPCM&amp;diff=15317"/>
		<updated>2017-10-29T02:05:04Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: clarify 'codec' link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0020&lt;br /&gt;
* Extension: spb,mmf&lt;br /&gt;
* Company: Yamaha&lt;br /&gt;
* Sample: http://samples.mplayerhq.hu/A-codecs/format-0x20-laugh.mmf&lt;br /&gt;
* ACM Codec: https://web.archive.org/web/20160323215457/http://smaf-yamaha.com/jp/tools/dl/Yamaha-ADPCM-ACM-Driver-100-j.zip&lt;br /&gt;
&lt;br /&gt;
A variant of this codec is used by several Yamaha chips:&lt;br /&gt;
* Y8950(MSX-SOUND)&lt;br /&gt;
* YM2608（OPNA) [the external ADPCM channel only]&lt;br /&gt;
and may also be used on the following chips:&lt;br /&gt;
* YM2610(OPNB) [the external ADPCM_B channel only?]&lt;br /&gt;
* YMZ263B(MMA)&lt;br /&gt;
* YMZ280B(PCMD8)&lt;br /&gt;
The codec was also used by Yamaha [[SMAF]] MA-2 and onward):&lt;br /&gt;
* MA-2 (YMU759)&lt;br /&gt;
* MA-3 (YMU762)&lt;br /&gt;
* MA-5 (YMU765)&lt;br /&gt;
* MA-7 (YMU786)&lt;br /&gt;
&lt;br /&gt;
The functionality of this codec is explained fairly extensively in two datasheets:&lt;br /&gt;
* Y8950 application manual: http://www.datasheetarchive.com/pdf/download.php?id=212962c2fe1b63fdc5ab320ca05ff3efefc925&amp;amp;type=M&amp;amp;query=y-8950&lt;br /&gt;
* YM2608 datasheet (Japanese): http://nemesis.hacking-cult.org/MegaDrive/Documentation/YM2608J.PDF&lt;br /&gt;
* Translated version of YM2608 datasheet: http://nemesis.hacking-cult.org/MegaDrive/Documentation/YM2608J%20Translated.PDF&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Yamaha_ADPCM&amp;diff=15316</id>
		<title>Yamaha ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Yamaha_ADPCM&amp;diff=15316"/>
		<updated>2017-10-29T00:41:39Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add link to codec, add references to SMAF chips using this codec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0020&lt;br /&gt;
* Extension: spb,mmf&lt;br /&gt;
* Company: Yamaha&lt;br /&gt;
* Sample: http://samples.mplayerhq.hu/A-codecs/format-0x20-laugh.mmf&lt;br /&gt;
* Codec: https://web.archive.org/web/20160323215457/http://smaf-yamaha.com/jp/tools/dl/Yamaha-ADPCM-ACM-Driver-100-j.zip&lt;br /&gt;
&lt;br /&gt;
A variant of this codec is used by several Yamaha chips:&lt;br /&gt;
* Y8950(MSX-SOUND)&lt;br /&gt;
* YM2608（OPNA) [the external ADPCM channel only]&lt;br /&gt;
and may also be used on the following chips:&lt;br /&gt;
* YM2610(OPNB) [the external ADPCM_B channel only?]&lt;br /&gt;
* YMZ263B(MMA)&lt;br /&gt;
* YMZ280B(PCMD8)&lt;br /&gt;
The codec was also used by Yamaha [[SMAF]] MA-2 and onward):&lt;br /&gt;
* MA-2 (YMU759)&lt;br /&gt;
* MA-3 (YMU762)&lt;br /&gt;
* MA-5 (YMU765)&lt;br /&gt;
* MA-7 (YMU786)&lt;br /&gt;
&lt;br /&gt;
The functionality of this codec is explained fairly extensively in two datasheets:&lt;br /&gt;
* Y8950 application manual: http://www.datasheetarchive.com/pdf/download.php?id=212962c2fe1b63fdc5ab320ca05ff3efefc925&amp;amp;type=M&amp;amp;query=y-8950&lt;br /&gt;
* YM2608 datasheet (Japanese): http://nemesis.hacking-cult.org/MegaDrive/Documentation/YM2608J.PDF&lt;br /&gt;
* Translated version of YM2608 datasheet: http://nemesis.hacking-cult.org/MegaDrive/Documentation/YM2608J%20Translated.PDF&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Yamaha_ADPCM&amp;diff=15315</id>
		<title>Yamaha ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Yamaha_ADPCM&amp;diff=15315"/>
		<updated>2017-10-28T23:40:45Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add notes about other chips which use the Yamaha ADPCM codec, and some sources&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0020&lt;br /&gt;
* Extension: spb,mmf&lt;br /&gt;
* Company: Yamaha&lt;br /&gt;
* Sample: http://samples.mplayerhq.hu/A-codecs/format-0x20-laugh.mmf&lt;br /&gt;
&lt;br /&gt;
A variant of this codec is used by several Yamaha chips:&lt;br /&gt;
* Y8950(MSX-SOUND)&lt;br /&gt;
* YM2608（OPNA) [the external ADPCM channel only]&lt;br /&gt;
and may also be used on the following chips:&lt;br /&gt;
* YM2610(OPNB) [the external ADPCM_B channel only?]&lt;br /&gt;
* YMZ263B(MMA)&lt;br /&gt;
* YMZ280B(PCMD8)&lt;br /&gt;
&lt;br /&gt;
The functionality of this codec is explained fairly extensively in two datasheets:&lt;br /&gt;
* Y8950 application manual: http://www.datasheetarchive.com/pdf/download.php?id=212962c2fe1b63fdc5ab320ca05ff3efefc925&amp;amp;type=M&amp;amp;query=y-8950&lt;br /&gt;
* YM2608 datasheet (Japanese): http://nemesis.hacking-cult.org/MegaDrive/Documentation/YM2608J.PDF&lt;br /&gt;
* Translated version of YM2608 datasheet: http://nemesis.hacking-cult.org/MegaDrive/Documentation/YM2608J%20Translated.PDF&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15313</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15313"/>
		<updated>2017-10-27T09:17:01Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add another Jayant paper, some clarification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (should be in the range [0..6])&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The adaptation table comes from Jayant's 1973 paper https://ia902600.us.archive.org/31/items/bstj52-7-1119/bstj52-7-1119.pdf (Table VIII, 'DPCM' column, B=4).&lt;br /&gt;
This paper, along with its companion paper https://ia902601.us.archive.org/13/items/bstj52-7-1105/bstj52-7-1105.pdf originally coined the term &amp;quot;ADPCM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The relevant values from the paper are:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }&lt;br /&gt;
and Microsoft added an implicit '3.0' value as a 9th entry, for a final table of:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4, 3.0 }&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of&lt;br /&gt;
 { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 }&lt;br /&gt;
in that order, so take the absolute value of the nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15312</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15312"/>
		<updated>2017-10-27T08:39:49Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (should be in the range [0..6])&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The AdaptationTable comes from Jayant's 1973 paper https://ia902600.us.archive.org/31/items/bstj52-7-1119/bstj52-7-1119.pdf Table VIII, 'DPCM' column, B=4. The values from this paper are:&lt;br /&gt;
 { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }&lt;br /&gt;
and Microsoft added an implicit '3.0' value as a 9th entry.&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of&lt;br /&gt;
 { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 }&lt;br /&gt;
in that order, so take the absolute value of the nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15311</id>
		<title>Microsoft ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM&amp;diff=15311"/>
		<updated>2017-10-27T08:38:23Z</updated>

		<summary type="html">&lt;p&gt;Lord Nightmare: add note about the origin of the adaptation table from Jayant's 1973 paper, and how it is derived&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Audio ID: 0x0002&lt;br /&gt;
* FOURCC: 'm','s',0x00,0x02&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
&lt;br /&gt;
This format is Microsoft's own custom variation of the ADPCM concept.&lt;br /&gt;
&lt;br /&gt;
MS ADPCM is organized in blocks. Each block has a preamble and a series of coded ADPCM nibbles. The total number of bytes in an individual ADPCM block is obtained through the nBlockAlign field of a media file's [[WAVEFORMATEX]] data structure.&lt;br /&gt;
&lt;br /&gt;
A monaural block begins with the following preamble:&lt;br /&gt;
&lt;br /&gt;
 byte 0       block predictor (should be in the range [0..6])&lt;br /&gt;
 bytes 1-2    initial delta&lt;br /&gt;
 bytes 3-4    sample 1&lt;br /&gt;
 bytes 5-6    sample 2 &lt;br /&gt;
&lt;br /&gt;
The initial delta and both samples are signed numbers (so take sign extension into account). The block predictor value is used as an index into two adaptation coefficient tables in order to initialize two coefficients, coeff1 and coeff2.&lt;br /&gt;
&lt;br /&gt;
The initial 2 samples from the block preamble are sent directly to the output. Sample 2 is first, then sample 1. The remaining samples are decoded from the ADPCM nibbles, which comprise the rest of the bytes in the block. The bytes are decoded from the upper nibble (bits 7-4) first, then the lower nibble. For each nibble:&lt;br /&gt;
&lt;br /&gt;
* predictor = ((sample1 * coeff1) + (sample2 * coeff2)) / 256&lt;br /&gt;
* predictor += (signed)nibble * delta (note that nibble is 2's complement)&lt;br /&gt;
* clamp predictor within signed 16-bit range&lt;br /&gt;
* PCM sample = predictor &lt;br /&gt;
* send PCM sample to the output&lt;br /&gt;
* shuffle samples: sample 2 = sample 1, sample 1 = calculated PCM sample&lt;br /&gt;
* compute next adaptive scale factor: delta = (AdaptationTable[nibble] * delta) / 256&lt;br /&gt;
* saturate delta to lower bound of 16&lt;br /&gt;
&lt;br /&gt;
For stereo data, the block preamble stores interleaved initialization values for the left and right channels:&lt;br /&gt;
&lt;br /&gt;
 byte 0        left channel block predictor (should be [0..6])&lt;br /&gt;
 byte 1        right channel block predictor (should be [0..6])&lt;br /&gt;
 bytes 2-3     left channel initial idelta&lt;br /&gt;
 bytes 4-5     right channel initial idelta&lt;br /&gt;
 bytes 6-7     left channel sample 1&lt;br /&gt;
 bytes 8-9     right channel sample 1&lt;br /&gt;
 bytes 10-11   left channel sample 2&lt;br /&gt;
 bytes 12-13   right channel sample 2 &lt;br /&gt;
&lt;br /&gt;
Following the preamble, the left and right ADPCM samples are interleaved within each byte. The upper nibble (bits 7-4) contains the left channel ADPCM code and the lower nibble contains the right channel ADPCM code.&lt;br /&gt;
&lt;br /&gt;
The following tables define the values used to decode MS ADPCM data:&lt;br /&gt;
&lt;br /&gt;
 int AdaptationTable [] = { &lt;br /&gt;
   230, 230, 230, 230, 307, 409, 512, 614, &lt;br /&gt;
   768, 614, 512, 409, 307, 230, 230, 230 &lt;br /&gt;
 } ;&lt;br /&gt;
 int AdaptCoeff1 [] = { 256, 512, 0, 192, 240, 460, 392 } ;&lt;br /&gt;
 int AdaptCoeff2 [] = { 0, -256, 0, 64, 0, -208, -232 } ;&lt;br /&gt;
&lt;br /&gt;
The AdaptationTable comes from Jayant's 1973 paper https://ia902600.us.archive.org/31/items/bstj52-7-1119/bstj52-7-1119.pdf Table VIII, 'DPCM' column, B=4. The values from this paper are { 0.9, 0.9, 0.9, 0.9, 1.2, 1.6, 2.0, 2.4 }, and Microsoft added an implicit '3.0' value as a 9th entry.&lt;br /&gt;
&lt;br /&gt;
To obtain the table used by Microsoft ADPCM, multiply the values from Jayant's table by 256 and round down. The adaptation table holds the absolute step size values for signed input nybbles of { 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1 } in that order, so take the absolute value of the nybble and use that as an offset into the table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Lord Nightmare</name></author>
	</entry>
</feed>