在ALSA中每20毫秒获取音频数据?

时间:2010-10-09 00:17:15

标签: audio alsa

我想调用snd_pcm_readi()并每20 ms或每40 ms获取一次音频数据。我想知道如何同步获取数据......即每隔X ms ......

感谢您的回复。

1 个答案:

答案 0 :(得分:2)

对于实时音频读取或回放,您通常会创建一个专用的高优先级工作线程来调用,然后使用一些环形缓冲区。你的线程应该避免锁定。

alsa例子:

http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2latency_8c-example.html#a36

http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html

如果您只是从磁盘读取,则需要充足的缓冲区,然后只需唤醒并查看是否需要在下次唤醒之前阅读更多内容(考虑总延迟)。