对于麦克风,我将停止阈值理解为:如果声卡硬件环形缓冲区中的填充样本超过此阈值,则硬件停止从麦克风的模数转换器读取数据。因此环形缓冲区不会被覆盖。
对于扬声器,它是应该导致声卡的数模转换器停止播放音频的最大数据。任何进一步的数据都会导致溢出。
(如果我在上述假设中有误,请纠正我)
对于扬声器,当我将 ALSA snd_pcm_sw_params_set_stop_threshold() 设置为较低的值时,我可以看到欠载。我预计会有更多的超支。这是为什么?
谢谢
最佳答案
对于捕获设备,当可用帧数(即捕获但尚未从缓冲区中读取的帧)达到停止阈值时,就会发生溢出。 只有捕获设备才会发生超限。
对于播放设备,当可用帧数(即缓冲区中的可用空间)达到停止阈值时,就会发生数据不足。 Underrun 只会发生在播放设备上。
降低停止阈值将使 xruns 更有可能。
关于c - ALSA snd_pcm_sw_params_set_stop_threshold() 设置为较低的值会导致欠载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814986/