背景:
在给imx6移植声卡驱动的时候出现一个怪异的现象:
codec做I2S主机,imx6做I2S从机,codec设置的采样率固定为8Khz,但是使用aplay命令播放8K采样率的PCM文件的时候出现播的很慢很慢,如果我把codec采样率设置到44.1K的时候,或者我使用aplay -r44100命令即骗aplay我播放的音频文件是44.1K的时候,播放就能正常!
出现此现象我一度以为是imx6的分频没设好,时钟不准,NND。
最后发现是alsa-lib搞的鬼。
解决:
/usr/share/alsa目录下有alsa-lib的配置文件,alsa.conf这个文件是配置的总入口,发现里面又导入了两个配置文件
在我的系统里没有发现.asoundrc这个文件。
而上面描述现象出现的根源就是/etc/asound.conf这个文件搞的鬼。
这个文件最后面有如下配置:
看到没有,默认导入了asymed这个插件,而asymed这个插件指定了播放和采集的采样率为44.1K,也就是说无论你播放的是什么采样率的文件,都会给你重采样到44.1K。
所以,我把上面两个44100改为8000,一切正常。