android系統中ALSA架構audio -EPIPE錯誤分析及對策 – Android移動開發技術文章_手機開發 Android移動開發教學課程

 

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

 

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

 

作者sundesheng125

發佈留言