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 怎麼寫