ALSA:snd_pcm_readn需要不断的读延迟

时间:2013-02-06 09:57:46

标签: c linux audio alsa

如何从snd_pcm_readn()实现持续读取延迟?我试过(144帧读取,4声道麦克风,8000Hz)。

我期望每次调用snd_pcm_readn()时的读取延迟为18毫秒:

 18ms, 18ms, 18ms , 18ms, 18ms, 18ms, 18ms , 18ms, 18ms, 18ms, 18ms , 18ms ....

。但是我在示波器中观察到以下模式:

 2ms, 2ms, 2ms ,2ms , 64ms, 2ms, 2ms, 2ms 2ms ,, 64ms, 2ms, 2ms, 2ms, 2ms, 64ms ....

似乎在snd_pcm_readn()中发生了一些缓冲,如果数据被缓冲,则api返回得更快。虽然这个观察值平均为18ms,但我需要每次调用snd_pcm_readn()时持续18ms的阻塞行为。

(无论如何,平均阅读时间是18毫秒 - 我不想要平均行为 - 每次阅读都应该精确到18毫秒)

如何使用ALSA实现这一目标?

0 个答案:

没有答案