问题描述
我正在嵌入式Linux中使用alsa-lib。下一个是我的.asoundrc
。
pcm.rate16k {
type plug
slave {
pcm "hw:0,0"
rate 16000
}
}
当我使用命令aplay -D rate16k -c 1 -r 48000 -f S16_LE test_48k.raw
播放单声道音频文件(速率为48000Hz,格式为S16_LE)时,效果很好。
我很困惑的是在哪里执行了重采样过程。我阅读了alsa-project简介,并阅读了alsa-lib的源代码,并分析了 snd_pcm_open API。
snd_pcm_open ==> _snd_pcm_plug_open ==> _snd_pcm_hw_open ==> snd_pcm_hw_open ==> snd_pcm_hw_open_fd ,然后返回从属pcm指针。然后,play调用 snd_pcm_writei 写入音频数据,并最终调用 snd_pcm_mmap_writei 。
我尝试分析 snd_pcm_mmap_writei ,但是alsa-lib太复杂了,我仍然不知道速率如何转换。请提供帮助或尝试提供一些有关如何分析此过程的想法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)