A
specialisation of
Differential Pulse Code Modulation, Adaptive Pulse Code Modulation (
ADPCM) uses
predictive techniques to increase the
efficiency of
information coding. ADPCM is employed in many modern audio and video compression algorithms, including
H.323 Video Conferencing,
Voice over IP, and the
DECT and
WDCT digital cordless phone standards.
Differential PCM encodes each discrete information symbol by transmitting only the difference between the current signal and its predecessor. For most real-world signals, this can be far more efficient than vanilla Pulse Code Modulation: fewer bits may be used to represent the deltas than the total magnitude.
Adaptive DPCM works similarly to DPCM, but uses a pre-defined algorithm on each side to predict the likely value of the next information symbol delta: the difference between this prediction and the actual value is what is transmitted. A highly accurate algorithm, especially with the output symbols Shannon-Fano encoded, will give a highly efficient transmission method.
A simple example algorithm would be to presume that the previous delta will be the same as the next one. For an equally simple example input, a triangular wave, the encoding scheme works as follows:
A ^
m |
p 7| - -
l 6| -# -#
i 5| -# # #- -# # #-
t 4| -# # # # #- -# # # #
u 3| -# # # # # # #- -# # # # #
d 2| # # # # # # # # #- # # # # # #
e 1| # # # # # # # # # # #-# # # # # #
0 ----------------------------------->
Time
The sampled input is shown as # symbols, and the predicted next output is shown as - characters. Only after the first and second samples are sent is it possible to predict the next sample value; the first and subsequent predictions is accurate, with the exception of the turning points. A table of the source, delta, prediction, and the error is shown below:
------------------------------------------------------
| Source | 1 2 3 4 5 6 5 4 3 2 1 2 3 4 |
| Prev. Out | - 1 2 3 4 5 6 5 4 3 2 1 2 3 |
| Delta | - 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 |
| Predicted | - - 3 4 5 6 7 4 3 2 1 0 3 4 |
-------------------------------------------------------
| Error | - - 0 0 0 0 -2 0 0 0 0 2 0 0 |
------------------------------------------------------
It is the last line which is encoded and transmitted. For this simple case, there are only three possible outputs: the most common case is "no difference", meaning the algorithm was correct, and at every peak or trough in the triangle wave, there is a ±2 bit prediction error. This signal can therefore be coded with only three symbols, and ceil(log2(3))1 = 2 bits per source symbol (although it's possible to use alphabet extension to increase efficiency still further).
As with differential pulse code modulation, ADPCM may be lossy or lossless, depending on how the predictive error is encoded. CCITT's G.726 voice-compression standard is lossy; for encoding voice or other audio, the difference in output quality is often unnoticeable.
1: The minimum number of bits required to encode N values is log2(N), rounded up; therefore, ceil(log2(N)).
Sources:
Adaptive Differential Pulse Code Modulation, CCITT G.726, ITU-T
Introduction to Communication Systems, Ferrel G. Stremler, Addison-Wesley
Data Communications and Networks: An Engineering Approach, Irvine & Harle, Wiley