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

Xof*_*ofo 5 audio alsa

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

感谢您的回复.

jus*_*tin 3

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

阿尔萨的例子:

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

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