2013-04-04 42 views
1

對於麥克風,我理解停止閾值爲:如果聲卡硬件環形緩衝區中的填充樣本超過此閾值,硬件將停止從麥克風的模數轉換器讀取數據。因此環形緩衝區不會被覆蓋。ALSA snd_pcm_sw_params_set_stop_threshold()降至較低值會導致欠載

對於音箱來說,使用聲卡的數模轉換器應該會導致停止播放音頻的最大數據量。任何進一步的數據都應該導致超限。

(糾正我,如果我錯了,在上面的假設)

有關揚聲器,當我設置ALSA snd_pcm_sw_params_set_stop_threshold(),以一個較低的值,我可以看到數據不足。我預計會有更多超支。爲什麼是這樣 ?

由於

回答

3

對於捕獲設備中,當可用的幀的數目(即,幀中捕獲但尚未從緩衝器讀取)到達停止閾值的溢出發生。 超限可能只發生在捕獲設備上。

對於回放設備,當可用幀的數量(即,緩衝區中的空閒空間)達到停止閾值時發生欠載運行。 Underruns只能在播放設備中發生。

降低停止閾值將使xruns更有可能。

+0

這個緩衝區是硬件緩衝區還是ALSA保持的驅動程序緩衝區? – 2013-04-04 17:03:39

+0

是的。 (這是相同的緩衝區。) – 2013-04-04 21:22:21

+0

這是一個很好的信息。感謝CL澄清它。早些時候,我認爲有兩個單獨的緩衝區 - 一個是驅動程序,另一個是硬件。 – 2013-04-05 03:58:54