我想调用snd_pcm_readi()并每20 ms或每40 ms获取一次音频数据。我想知道如何同步获取数据......即每隔X ms ......
感谢您的回复。
答案 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
如果您只是从磁盘读取,则需要充足的缓冲区,然后只需唤醒并查看是否需要在下次唤醒之前阅读更多内容(考虑总延迟)。