2015-11-03 64 views
0

我正在使用ALSA进行带有音频直通的嵌入式Linux应用程序。它有非常严格的延迟要求。ALSA直通延迟

输出缓冲区尽可能小,导致输出偶然(可能每小时一次)欠载。这是可以接受的。但是,当它发生时,会导致捕获缓冲区中的“备份”,并导致延迟时间的增加。

似乎没有一种可靠的方法可以知道丢失了多少输出数据以丢弃相同数量的输入。我可以尝试,但即使它是嵌入式应用程序,它也需要独立于设备,所以我们需要一个可靠的解决方案。

有谁知道一种方法来确定丢失了多少数据,或者如果它总是一个缓冲区,或有其他建议?

回答

1

如果您不希望PCM设备在欠载/超载时停止,请通过将停止阈值设置为边界值来将其配置为不停止。然后它们将继续运行,并且可用帧的数量将继续增加(用于捕获)或减少(用于回放)。 (并非所有这些帧都可用;环形缓冲区只是环绕。)

+0

非常感谢。 – DCBillen