Android 音頻系統[相當好zz]

來源:互聯網
上載者:User

地址:http://blog.csdn.net/qianjin0703/article/details/6387662

 

0. 專用術語

1. 物理結構

2. 系統架構

 

本文基於Freescale IMX平台Codec ALC5625為例。

0. 專用術語

 ASLA - Advanced Sound Linux Architecture

 OSS - 以前的Linux音頻體繫結構,被ASLA取代併兼容

 Codec - Coder/Decoder

 I2S/PCM/AC97 - Codec與CPU間音訊通訊協定/介面/匯流排

 DAI - Digital Audio Interface 其實就是I2S/PCM/AC97

 DAC - Digit to Analog Conversion

 ADC - Analog to Digit Conversion

 DSP - Digital Signal Processor

 Mixer - 混音器,將來自不同通道的幾種音頻類比訊號混合成一種類比訊號

 Mute - 消音,屏蔽訊號通道

 PCM - Pulse Code Modulation 一種從音頻類比訊號轉換成數字訊號的技術,區別於PCM音頻通訊協定

 採樣頻率 - ADC的頻率,每秒採樣的次數,典型值如44.1KHZ

 量化精度 - 比如24bit,就是將音頻類比訊號按照2的24次方進行等分

 SSI - Serial Sound Interface

 DAPM - Dynamic Audio Power Management

 

1. 物理結構

 音訊轉碼器Codec負責處理音頻資訊,包括ADC,DAC,Mixer,DSP,輸入輸出以及音量控制等所有與音頻相關的功能。

 Codec與處理器之間通過I2C匯流排和數字音頻介面DAI進行通訊。

 I2C匯流排 - 實現對Codec寄存器資料的讀寫。

 DAI - 實現音頻資料在CPU和Codec間的通訊。

以Codec作為研究對象,它的輸入有Mic(Microphone),PhoneIn電話訊號等,輸出有耳機HP(HeadPhone),擴音器Speaker和PhoneOut電話訊號。另外需要注意在Codec與CPU端間也有音頻數字訊號的輸入輸出。

1) 播放音樂

 

2) 錄音

 

3) 電話

--- 打電話 ---                                                           --- 接聽---

   

4) 通過藍芽打電話

--- 打電話 ---                                                           --- 接聽---   

 

  

 

 2. 系統架構

  Android的音頻系統擁有一個比較標準和健全的架構,從上層應用,java framework服務AudioMananger,本地服務AudioFlinger,抽象層AlsaHAL,本地庫,再調用external的 Alsa-lib外部支援庫,最後到底層驅動的codec,可謂"五髒俱全"。

 以系統啟動AuidoFlinger為例,簡要窺探Alsa Sound的組織架構。

Java服務AudioManager作為服務端,本地服務AudioFlinger作為用戶端,兩者通過Binder機制互動。 AudioFlinger對硬體功能的具體實現(比如setMode設定電話/藍芽/錄音等模式)交給硬體抽象層AlsaHAL完成。抽象層可以調用本地 標準介面,比如mASLADevice->route,或者直接調用Alsa-lib庫去操作底層驅動。

 

 Linux的音頻驅動結構相對複雜,源碼位於核心目錄下的/sound/soc/,其中/codec檔案夾下存放與平台無關的轉碼器驅動,/imx檔案夾下存放於freescale imx平台相關的音頻驅動,主要可分為SSI驅動和DAI驅動。

以音效卡驅動的資料結構為切入點分析,

1) struct snd_soc_codec - 由與平台無關的codec驅動實現。

2) struct snd_soc_platform - 由與imx平台相關的DAI驅動實現,主要實現了音頻資料的DMA傳輸功能。

3) struct snd_soc_dai_link - 將平台相關的DAI與平台無關的codec聯絡起來。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.