首先問題現象如題,具體的情況是我在一個執行緒中先catpure然后playback,結果在playback相關函式呼叫中發現,snd_pcm_writei會持續性的發生underrun現象(回傳值為-32)。正常的人聲是可以聽到的,就是伴隨著”滋滋“聲。
首先在我的程式中針對cature和playback設備的引數配置都是參照arecord(aplay)原始碼進行撰寫的。所以引數應該不會有什么問題。
接著我試驗了”arecord 引數 | aplay 引數“ 這個測驗方法,發現它是沒有幾乎沒有underrun現象的(或偶爾一個),但是這種方式是行程間通訊,使用到了管道符號”|“,我的程式沒有行程間通訊,只有開執行緒。
請問了,有誰知道怎樣在一個程式中設計capture,playback通訊嗎,如果可以的話,給一些代碼參考啊
uj5u.com熱心網友回復:
問題解決,呼叫snd_pcm_hw_params_set_period_size_near和snd_pcm_hw_params_set_buffer_size_near時,傳遞合適的引數就行uj5u.com熱心網友回復:
多試一下 還有有可能自己解決的
uj5u.com熱心網友回復:
試了后,發現其實一個執行緒一邊capture一邊playback也能解決underrun問題。這個還是得用窮舉法,不停的地試alsa的引數,才有解決的可能啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/146666.html
標籤:應用程序開發區
下一篇:求助sed的使用
