Android audio系統一audio框架

1,audio框架

APP層:
音樂播放器,視頻播放器。
播放器一般使用MediaPlayer,MediaRecorder來進行播放和錄音,MediaPlayer可以將音頻文件進行解碼,得到pcm流,然後使用AudioTrack進行播放。MediaRecorder是類似相反的過程。
Framework Java層:
AudioTrack —— 播放pcm流
AudioRecorder —— 錄音pam流
AudioManager , AudioSystem, AudioEffect 實現音量控制、音頻通路策略、音效設置等
Framework Native層:
AudioTrack —— 播放pcm流
AudioRecorder —— 錄音pam流
AudioEffect —— 音效處理
AudioPolicyService —— 音頻策略管理,音量管理,音效設置
AudioFlinger —— 音頻播放,錄音,混音,音效處理
Hal層:
向上對接AudioFlinger,向下通過讀寫聲卡card0節點,調用kernel驅動控制硬件,實現對音頻流數據的播放與錄音實現。
ALSA框架
可以參考:ALSA驅動分析
可以參考:tinyalsa工具使用

整體從下到上涉及知識點:

  1. 硬件電路知識,audio播放錄音原理,i2s、TDM協議,codec功能(功放芯片)
  2. linux驅動知識,ALSA框架
  3. c語言,audio Hal層接口功能
  4. c++語言,audio framework如何實現音頻流的播放與採集,音頻通路的策略管理,音效處理,音量調節等
  5. binder機制在audio系統中的作用
  6. java語言,AudioTrack與AudioRecorder如何使用去播放,錄音。AudioManager , AudioSystem, AudioEffect 如何實現音量控制、音頻通路策略控制、音效設置、參數傳遞等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章