Android Audio - HAL 層多聲卡同時錄音框架設計(多語言)

HAL 層多聲卡同時錄音框架設計 - 多語言

1. 聲卡工作原理

  • 定義
    聲卡(Codec), 從名字上看就能看出是一種專用於音頻 編(Encode) 解(Decode) 碼 的硬件芯片, 通常採用 I2C 協議與外部進行通信, 採用 I2S 協議傳輸音頻信號.
  • 核心參數
    採樣率(rate): 定義了每秒從連續信號中提取並組成離散信號的採樣個數.
    位寬(bit):
    通道數(channel): 表示音頻信號的數量, 通常分爲單聲道和立體聲.

2. 音頻格式

  • 常見
    ▪ MP3 ▪ WAVE ▪ PCM ▪ FLAC ▪ M4A
  • 其他
    ▪ RealAudio ▪ VQF ▪ OggVorbis ▪ APE ▪ AAC
    ▪ CD ▪ AIFF ▪ MPEG ▪ MPEG-4 ▪ MIDI ▪ WMA ▪ AMR

3. 動手來設計多聲卡錄音框架

  • 適用場景
    智能音箱 2麥, 4麥, 6麥, 8麥方案.

  • 如何設計
    需要用到多線程, 互斥鎖, 數據隊列, 一個總線程用於處理(合併, AEC)子線程採集到的數據, 多個子線程用於讀取聲卡數據, 互斥鎖保障了數據的原子性, 數據隊列用作於子線程寫入、總線程讀取的數據傳輸工作. 實際上就是用到了 buffer 原理.

  • 代碼設計

數據結構
Android Audio - HAL 層多聲卡同時錄音框架 - 數據隊列設計(C 和 C++通用)
多線程設計
Android Audio - HAL 層多聲卡同時錄音框架 - 多線程設計(C語言)
Android Audio - HAL 層多聲卡同時錄音框架 - 多線程設計(C++語言)
  • Android.mk 怎麼寫

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