Audio ALSA音訊框架 簡介

2021-10-04 07:56:43 字數 2438 閱讀 6805

參考:

1. 奇小葩

2. 技術芯

3. 哈迪斯_石頭

4. linux kernel:4.4

​ alsa是advanced linux sound architecture的縮寫,即高階linux聲音架構,在linux作業系統上提供了對音訊和midi的支援。在linux 2.6的核心版本後,alsa目前已經成為了linux的主流音訊體系結構。除了 alsa-driver,alsa 包含在使用者空間的 alsa-lib 函式庫,具有更加友好的程式設計介面,並且完全相容於 oss,開發者可以通過這些高階 api 使用驅動,不必直接與核心驅動 api 進行互動。

​ alsa 主要有如下特點: .

├── ac97_bus.c

├── aoa

├── arm

├── atmel

├── core

├── drivers

├── firewire

├── hda

├── i2c

├── isa

├── last.c

├── mips

├── oss

├── parisc

├── pci

├── pcmcia

├── ppc

├── sh

├── soc

├── sound_core.c

├── sound_firmware.c

├── sparc

├── spi

├── synth

└── usb

ac97 標準把音訊裝置中的數字部分和模擬部分分開, 並規定數字訊號處理由cpu 來負責,或者採用專門的dsp 晶元; 而模擬部分, 即a/d、d/a 轉換與mix 混音操作, 則由codec 晶元(coder2decoder: 編碼/解碼器) 完成。

音訊處理的流程如下:

①codec 取樣音訊資料, 把模擬訊號轉換成數碼訊號通過ac2link 和ac 控制單元傳送給cpu 或dsp 處理。

②cpu 對數字訊號處理後交由ac 控制單元通過ac2link 傳輸給codec 進行混音處理,再轉換成模擬訊號輸出。其中ac 控制單元是ac97 codec 的控制器。ac2link 是ac97 標準定義的全雙工的序列介面, 負責傳輸音訊資料、暫存器控制命令和狀態資訊。

ac2link 由4 根序列匯流排和乙個nreset 訊號線組成。序列匯流排分別是: 位時鐘訊號線(b it_cl k ) , 幀同步訊號線(sync ) , 資料輸出(sda ta _ou t ) 和資料輸入(sda ta _in ) 訊號線。它按照ac97 rev211 標準規定的ac2link數字串列埠介面協議[ 1 ]進行資料的傳輸。ac2link在b it _cl k 的上公升沿傳送資料, 在下降沿接收資料, 實現全雙工的資料傳輸。

下面是乙個log示例:

[    1.814400] alsa device list:

[ 1.814432] #0: rockchip,rt5640-codec

[ 1.814440] #1: rk-fpga-i2s

subsys_initcall(init_soundcore);

module_exit(cleanup_soundcore);

export_symbol(mod_firmware_load);
下面是目錄及其說明

目錄說明

aoa蘋果板載音訊驅動

armarm音訊裝置支援

atmel

atmel abdac(音訊位元組流數模轉換器)及ac97c(ac97控制器)支援

core

該目錄包含了alsa驅動的中間層,它是整個alsa驅動的核心部分

driver

放置一些與cpu、bus架構無關的公用**

firewire

火線(ieee-1394/firewire/ilink)音訊裝置支援

hdahd audio(高保真音訊)支援

i2calsa自己的i2c控制**

isaisa音效卡的頂層目錄,子目錄包含各種isa音效卡的**

mips

mips音訊裝置支援

oss對oss的相容支援

parisc

鴻蒙(harmony)音訊裝置支援(注:支援pa-risc架構上的gsc音訊裝置)

pcipci音訊裝置支援

pcmcia

pcmcia音訊裝置支援

ppcpowerpc 音訊裝置支援

shsuperh架構音訊裝置支援

soc針對system-on-chip體系的中間層**

sparc

sparc架構音訊裝置支援

spispi音訊裝置支援

synth

一些工具

usbusb音訊裝置支援

個人部落格:

iPhone OS的音訊技術簡介

iphone os的音訊技術為使用者提供了豐富的音訊體驗。它包括音訊回放,高質量的錄音和觸發裝置的振動功能等。核心音訊 core audio family 核心音訊框架家族 core audio family of frameworks 提供了音訊的本地支援,如下圖所示。開發者也能通過核心音訊訪問手...

使用opus音訊編碼流程簡介

直接切入主題 1.建立乙個opusencoder型別的物件。opus encoder create 2.對編碼物件進行引數設定。opus encoder ctl 包括位元率,頻寬,是否使用vbr等引數資訊。3.當然就是音訊編碼啦。opus encode 該函式返回編碼的後的音訊長度。4.使用完成之後...

《音訊編譯碼》 AAC格式簡介

aac的音訊檔案格式有以下兩種 adif audio data interchange format 音訊資料交換格式。這種格式的特徵是可以確定的找到這個音訊資料的開始,不需進行在音訊資料流中間開始的解碼,即它的解碼必須在明確定義的開始處進行。故這種格式常用在磁碟檔案中。adts audio dat...