ADPCM自适应差分PCM编码,和PCM编码的差别就在于差分两个字。。如果已经了解的PCM编码,请继续往下看。
差分编码就是用下一个采样点与现在采样点的电平差进行编码。。而不是直接用一个二进制数表示当前的电平大小。。自适应的编码方式加上了预测,使得可以用比较少的位率完整的存储每个样本的电平值。。
比如8 Bit的PCM,编码从00H-FFH。现在有三个点,电平大小是零电平,正的-6dB,0dB。则对应的PCM编码是80H,C0H,FFH。这样需要三个Byte来存储。
而ADPCM会进行预测,它已知第一个点是零电平,并且也已知前一个点的电平,它就会根据之前的采样点和现在的采样点预测下一个点也就是第二个点的电平。当然预测不可能精准。。可能预测成了24H或者C3H之类,于是就一个较低位数的二进制数来描述实际值与预测值的差距。比如,用4Bit 或者5Bit。下一次预测可能预测成F0之类的。。解码的过程反之。。这样就能获得50%-62.5%的压缩率。。
所以,ADPCM算法的好坏,取决于预测的准确性。。。也只能用来压缩音频信号之类的有规律的信号,如果是随机信号,那就没得玩了。。