天天看點

android系統中ALSA架構audio -EPIPE錯誤分析及對策

    使用ALSA架構的驅動程式,在實際開發使用過程中,比較常見的錯誤有-EPIPE,也就是-32?為什麼會出現呢?肯定是系統内部不和諧了!EPIPE的錯誤在播放時出現就是因為驅動buffer沒有資料可以丢給codec所緻,通俗一點就是上層給下面喂資料的速度慢了,下面餓暈了,是以抱怨你上層慢啊,給你一個-EPIPE錯誤出來,自己去找原因。在錄音的時候,出現EPIPE也是有原因的,ALSA的驅動也有一塊專門用來存儲錄音資料的buffer,上層從該buffer搬運資料再存儲起來就能得到我們需要的錄音檔案。一旦驅動的buffer滿了,就會出現EPIPE的錯誤,因為你上層讀錄音buffer資料的速度慢了,這就不能抱怨下層不給面子了。通過分析出現原因後,我們得找找對策,說起來容易,做的可能因為系統的原因并不是想的那麼容易。

    在播放的時候,如果會出現這種-EPIPE的錯誤,請調整下發資料的資料,加快一點點!錄音的時候出現這種錯誤的時候,請讀得更快一點!可以提高任務的優先級來處理,也可以把驅動buffer擴大一下,給系統更多一點的緩沖時間!都退一步,和諧社會,和諧系統!

繼續閱讀