ALSA 直通延迟
ALSA passthrough latency
我正在使用 ALSA 开发带有音频直通功能的嵌入式 Linux 应用程序。它有非常严格的延迟要求。
输出缓冲区尽可能小,这会导致偶尔(可能每小时一次)输出不足。这是可以接受的。但是,当它发生时,它会在捕获缓冲区中导致 "backup",结果是延迟逐渐增加。
似乎没有可靠的方法来知道为了丢弃相同数量的输入而丢失了多少输出数据。我可以试验,但即使它是一个嵌入式应用程序,它也需要独立于设备,所以我们需要一个可靠的解决方案。
有谁知道确定丢失了多少数据的方法,或者它是否始终是一个缓冲区,或者有其他建议?
如果您不希望 PCM 设备在 underrun/overrun 上停止,请通过将停止阈值设置为边界值来将它们配置为不停止。然后他们将继续运行,可用帧的数量将继续增加(用于捕获)或减少(用于播放)。 (并非所有这些帧都可用;环形缓冲区只是环绕。)
我正在使用 ALSA 开发带有音频直通功能的嵌入式 Linux 应用程序。它有非常严格的延迟要求。
输出缓冲区尽可能小,这会导致偶尔(可能每小时一次)输出不足。这是可以接受的。但是,当它发生时,它会在捕获缓冲区中导致 "backup",结果是延迟逐渐增加。
似乎没有可靠的方法来知道为了丢弃相同数量的输入而丢失了多少输出数据。我可以试验,但即使它是一个嵌入式应用程序,它也需要独立于设备,所以我们需要一个可靠的解决方案。
有谁知道确定丢失了多少数据的方法,或者它是否始终是一个缓冲区,或者有其他建议?
如果您不希望 PCM 设备在 underrun/overrun 上停止,请通过将停止阈值设置为边界值来将它们配置为不停止。然后他们将继续运行,可用帧的数量将继续增加(用于捕获)或减少(用于播放)。 (并非所有这些帧都可用;环形缓冲区只是环绕。)