本文分析一个32位多通道pcm数据,一方面简单解释一下pcm数据格式,另外一方面看清楚实际数据的精度是多少。
说明:这是一个alsa采集到的10路32bit的pcm数据。
使用bc打开,16进制数据显示如下图:
- 图中左边是一个10通道32bit数据,右边是16bit的数据。
- 前面44个是wav头文件,到第三行C0 03为止。
图中划有蓝色线条的数据为一个点,因为是10通道数据,10个点是一个frame。
接下来,可以看出第一个frame中,前面的8个通道的数据都是0,第9个通道第一个点是00 68 A6 05,第10个通道第一个点是00 F1 43 07。
以第九个点为例子,可以用计算器计算出对应的点10进制的值。但是要注意,因为是little end,因此00 68 A6 05变成了05 A6 68 00
通过计算,发现其值为94791680。
使用audition打开文件,并且抽取单个声道的数据,调用Amplitude Statistics,可以看到
我们可以看到,这个数据中DC Offset是使用百分比表示,是4.41%,Sample Value是1446.41。
- 因为一个32bit的数据,其值范围是[-2^(31), 2^(31)-1]
- 32bit数据,整数是15位,小数16位,符号位1位
因此,看到DC offiset是:
94791680/(2^(31)-1)=4.41%
Sample Value:
94791680/(2^(16))=1446.06