Linux audio 音頻

Linux 音頻、Android 音頻

https://www.cnblogs.com/linhaostudy/p/8169383.html

 

https://www.jianshu.com/p/0f5fe8f51b66

簡介

LINUX下音頻驅動開發,要遵循標準的ALSA架構,
下面分別從硬件架構、軟件架構、驅動程序,3個方面分析。

硬件架構

硬件上音頻總線接口有很多,如I2S、PCM、TDM、SLIMBUS等,以I2S爲例分析:

 

I2S接口.png

  • 播放流程
  1. 使用I2C對CODEC做初始化配置。
  2. 音頻數據從外部flash讀取到內存中。
  3. 數據經過DMA送到I2S的TXFIFO。
  4. 數據由TXFIFO送到CODEC硬件。
  5. 在CODEC硬件裏,數據從數字信號轉變成模擬信號。
  6. 模擬信號經過喇叭播放出來,就實現了聲音的播放。
  • 錄音流程
    與播放流程相反,在第5步,從模擬信號變成數字信號,其他都一樣

軟件架構-ALSA

安卓的整體音頻架構

 

ALSA.png

 

從上到下分別是:

  1. APP-HAL,安卓中的音頻框架,用於適配LINUX內核。
  2. ALSA-lib,LINUX內核音頻驅動框架。
  3. machine-codec驅動,硬件音頻驅動程序。

驅動程序

按照ALSA驅動框架要實現的接口有:

 

 

driver.png

 

各個部分功能分別是:

  1. DTS,音頻硬件參數配置。
  2. 如I2S,PCM,SLIMBUSCPU DAI,CPU上的音頻接口驅動,等。
  3. platform,基於CPU的DMA接口封裝,用於實現音頻數據在內存和DMA之間流動。
  4. CODEC DAI,CODEC上的音頻接口驅動。
  5. CODEC,CODEC自身驅動。
  6. I2C,實現CODEC的配置接口。
  7. machine,設備層面組裝所有驅動,實現音頻通路。


鏈接:https://www.jianshu.com/p/0f5fe8f51b66
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章