如何解决Rate插件在alsa-lib中如何工作?
我正在嵌入式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 举报,一经查实,本站将立刻删除。