ALSA snd_pcm_sw_params_set_stop_threshold()到较低值导致欠载

时间:2013-04-04 15:06:56

标签: c linux alsa

对于麦克风,我理解停止阈值为:如果声卡硬件环形缓冲区中的填充样本超过此阈值,则硬件停止从麦克风的模数转换器读取。因此,环形缓冲区不会被覆盖。

对于扬声器,它是声音卡的数模转换器停止播放音频的最大数据。任何进一步的数据都应该导致超支。

(如果我在上述假设中出错,请纠正我)

对于扬声器,当我将ALSA snd_pcm_sw_params_set_stop_threshold()设置为较低值时,我可以看到欠载。我期待更多的超支。这是为什么?

由于

1 个答案:

答案 0 :(得分:4)

对于捕获设备,当可用帧的数量(即,捕获但尚未从缓冲区读取的帧)达到停止阈值时发生溢出。 超载只能通过捕获设备发生。

对于回放设备,当可用帧的数量(即缓冲区中的可用空间)达到停止阈值时发生欠载。 欠载只能在播放设备上发生。

降低停止阈值会使xruns更有可能。