Adaptive differential pulse-code modulation

From HandWiki
Revision as of 18:23, 6 February 2024 by Sherlock (talk | contribs) (url)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Short description: Technique used to encode voices in telephony

Adaptive differential pulse-code modulation (ADPCM) is a variant of differential pulse-code modulation (DPCM) that varies the size of the quantization step, to allow further reduction of the required data bandwidth for a given signal-to-noise ratio.

Typically, the adaptation to signal statistics in ADPCM consists simply of an adaptive scale factor before quantizing the difference in the DPCM encoder.[1]

ADPCM was developed for speech coding by P. Cummiskey, Nikil S. Jayant and James L. Flanagan at Bell Labs in 1973.[2]

In telephony

In telephony, a standard audio signal for a single phone call is encoded as 8000 analog samples per second, of 8 bits each, giving a 64 kbit/s digital signal known as DS0. The default signal compression encoding on a DS0 is either μ-law (mu-law) PCM (North America and Japan) or A-law PCM (Europe and most of the rest of the world). These are logarithmic compression systems where a 13- or 14-bit linear PCM sample number is mapped into an 8-bit value. This system is described by international standard G.711. Where circuit costs are high and loss of voice quality is acceptable, it sometimes makes sense to compress the voice signal even further. An ADPCM algorithm is used to map a series of 8-bit μ-law (or a-law) PCM samples into a series of 4-bit ADPCM samples. In this way, the capacity of the line is doubled. The technique is detailed in the G.726 standard.

ADPCM techniques are used in voice over IP communications. In the early 1990s, ADPCM was also used by Interactive Multimedia Association to develop the legacy audio codecs ADPCM DVI, IMA ADPCM, and DVI4.[3]

Split-band or subband ADPCM

G.722[4] is an ITU-T standard wideband speech codec operating at 48, 56 and 64 kbit/s, based on subband coding with two channels and ADPCM coding of each.[5] Before the digitization process, it catches the analog signal and divides it in frequency bands with quadrature mirror filters (QMF) to get two subbands of the signal. When the ADPCM bitstream of each subband is obtained, the results are multiplexed, and the next step is storage or transmission of the data. The decoder has to perform the reverse process, that is, demultiplex and decode each subband of the bitstream and recombine them.

Adpcm en.svg

Referring to the coding process, in some applications as voice coding, the subband that includes the voice is coded with more bits than the others. It is a way to reduce the file size.

Software

The Windows Sound System supported ADPCM in WAV files.[6]

The FFmpeg audio codecs supporting ADPCM are adpcm_ima_qt, adpcm_ima_wav, adpcm_ms, adpcm_swf and adpcm_yamaha.[7][8]

The DSP in the GameCube supports ADPCM encoding on 64 simultaneous audio channels.

See also

References

  1. Ken C. Pohlmann (2005). Principles of Digital Audio. McGraw-Hill Professional. ISBN 978-0-07-144156-8. https://books.google.com/books?id=VZw6z9a03ikC&q=adpcm+adaptive+differential+pulse-code+modulation&pg=PA122. 
  2. Cummiskey, P.; Jayant, Nikil S.; Flanagan, James L. (September 1973). "Adaptive quantization in differential PCM coding of speech". The Bell System Technical Journal 52 (7): 1105–1118. doi:10.1002/j.1538-7305.1973.tb02007.x. 
  3. Recommended Practices for Enhancing Digital Audio Compatibility in Multimedia Systems – legacy IMA ADPCM specification, Retrieved on 2009-07-06.
  4. ITU-T G.722 page. ITU-T Recommendation G.722 (11/88), "7 kHz audio-coding within 64 kbit/s".
  5. Jerry D. Gibson; Toby Berger; Tom Lookabaugh (1998). Digital Compression for Multimedia. Morgan Kaufmann. ISBN 978-1-55860-369-1. https://books.google.com/books?id=aqQ2Ry6spu0C&q=G.722+adpcm+subband+split&pg=PA265. 
  6. "Differences Between PCM/ADPCM Wave Files Explained". KB 89879 Revision 3.0. Microsoft Knowledge Base. 2011-09-24. http://support.microsoft.com/kb/89879. 
  7. "FFmpeg General Documentation - Audio Codecs". FFmpeg.org. http://ffmpeg.org/general.html#Audio-Codecs. 
  8. "FFmpeg/adpcmenc.c at ee4aa388b2231e988eccdab652c55df080d6ad45 · FFmpeg/FFmpeg". 2017-02-15. https://github.com/FFmpeg/FFmpeg/blob/ee4aa388b2231e988eccdab652c55df080d6ad45/libavcodec/adpcmenc.c#L709-L726.