關於ALSA的小結

這一年來的一個重要工作是音頻設備驅動方面,如驅動開發、調試debug、性能調優、音頻路由、回聲消除等。除此之外,熟悉了一下alsa-lib接口,Android音頻系統,包括設備抽象層和音頻策略。


遺憾的是一直沒有什麼機會接觸藍牙設備的集成和開發,可預知的未來無線設備會極大地普及。還有就是ffmpeg,以前經常用它來做一些興致突來能力而及的小工具,年初時計劃進一步在它的基礎上學習H264或AVS的解碼,但至今都未開始。問題一方面是我自身的懶惰,另一方面是公司不允許裝虛擬機(PC裝的是windows,畢竟辦公都必須在windows環境下,開發登陸到Linux服務器)。試過在cygwin上面建立ffmpeg開發環境,以失敗告終,ffplay無論如何都不能編譯。


而值得自豪的是,alsa-driver算是消化得差不多了。sound/core目錄裏面的幾大主體:control、hwdep和pcm,sound/soc目錄的soc-core和soc-dapm都基本理順了。還有info、jack、timer、rawmidi、usb-audio、ac97-bus,有空再研究。


關於control、hwdep、dapm、codec,寫了不少文章記錄我的學習成果,均在ALSA專欄。Card和pcm方面,由於內容太龐大,未整理出較完善的文檔,暫借用前輩的經驗,如下:

Linux音頻驅動之二:聲卡的創建:http://blog.csdn.net/droidphone/article/details/6289712

Linux音頻驅動之三:PCM設備的創建:http://blog.csdn.net/droidphone/article/details/6308006

alsa驅動分析之一:http://blog.csdn.net/wylhistory/article/details/5114217

alsa驅動分析之二:http://blog.csdn.net/wylhistory/article/details/5114230


然後繆談一些個人對於alsa開發的心得吧。

1、 清楚音頻相關概念和原理,如採樣率、採樣精度、peroid、ADC/DAC、DAI、pops等等;明白音頻數據流向,進而明白codec、i2s、dma各起到什麼作用。

2、多看內核文檔Documentation/sound/alsa,這些文檔起到概述作用,配合源碼可以讓人更清晰音頻概念和運作機理。

3、alsa-utils的幾個工具,多用aplay和amixer進行調試。

4、熟悉alsa配置腳本asound.rc的寫法:http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html,有時間可以練習寫一個類似aplay的播放器工具。

其實這些都是老生常談了,但很實用。


另外今天在網上找到一個wolfson音頻處理芯片的PPT,寫得很好,將音頻開發的大致流程和關鍵點都寫出來了。

Linux Audio for Android:http://download.csdn.net/detail/sepnic/3783997


----

2012/12/17

今天進資源區看了下這個PPT的評論,發現很多人在抱怨“英文的,看的不懂啊”。於此,我只能坦白說一句:如果這種程度的英文都無能爲力的話,我勸你還是不要做這行了吧!工作多年,看過的datasheet從來沒發現有中文的東西。大學時,C++程序設計、數據結構與算法、編譯原理、操作系統、數字信號處理這些課程全是英文教材,換成你們,是不是不用學了?

發佈了59 篇原創文章 · 獲贊 62 · 訪問量 64萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章