日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux ALSA源码分析(基于Linux 5.18)

發(fā)布時(shí)間:2024/3/26 linux 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux ALSA源码分析(基于Linux 5.18) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????????Linux ALSA音頻驅(qū)動(dòng)框架詳細(xì)的描述的ALSA驅(qū)動(dòng)框架的分層及各模塊的主要作用,現(xiàn)在從源碼的角度來分析ALSA驅(qū)動(dòng)。

1、ALSA驅(qū)動(dòng)代碼文件結(jié)構(gòu)

????????在Linux5.18代碼樹中,Alsa的代碼文件結(jié)構(gòu)如下:

linux/sound$ tree -d . ├── ac97 ├── aoa │?? ├── codecs │?? ├── core │?? ├── fabrics │?? └── soundbus │?? └── i2sbus ├── arm ├── atmel ├── core │?? ├── oss │?? └── seq │?? └── oss ├── drivers │?? ├── mpu401 │?? ├── opl3 │?? ├── opl4 │?? ├── pcsp │?? └── vx ├── firewire │?? ├── bebob │?? ├── dice │?? ├── digi00x │?? ├── fireface │?? ├── fireworks │?? ├── motu │?? ├── oxfw │?? └── tascam ├── hda │?? └── ext ├── i2c │?? └── other ├── isa │?? ├── ad1816a │?? ├── ad1848 │?? ├── cs423x │?? ├── es1688 │?? ├── galaxy │?? ├── gus │?? ├── msnd │?? ├── opti9xx │?? ├── sb │?? ├── wavefront │?? └── wss ├── mips ├── oss │?? └── dmasound ├── parisc ├── pci │?? ├── ac97 │?? ├── ali5451 │?? ├── asihpi │?? ├── au88x0 │?? ├── aw2 │?? ├── ca0106 │?? ├── cs46xx │?? ├── cs5535audio │?? ├── ctxfi │?? ├── echoaudio │?? ├── emu10k1 │?? ├── hda │?? ├── ice1712 │?? ├── korg1212 │?? ├── lola │?? ├── lx6464es │?? ├── mixart │?? ├── nm256 │?? ├── oxygen │?? ├── pcxhr │?? ├── riptide │?? ├── rme9652 │?? ├── trident │?? ├── vx222 │?? └── ymfpci ├── pcmcia │?? ├── pdaudiocf │?? └── vx ├── ppc ├── sh ├── soc │?? ├── adi │?? ├── amd │?? │?? ├── acp │?? │?? ├── include │?? │?? ├── raven │?? │?? ├── renoir │?? │?? ├── vangogh │?? │?? └── yc │?? ├── atmel │?? ├── au1x │?? ├── bcm │?? ├── cirrus │?? ├── codecs │?? ├── dwc │?? ├── fsl │?? ├── generic │?? ├── hisilicon │?? ├── img │?? ├── intel │?? │?? ├── atom │?? │?? │?? └── sst │?? │?? ├── avs │?? │?? ├── boards │?? │?? ├── catpt │?? │?? ├── common │?? │?? ├── keembay │?? │?? └── skylake │?? ├── jz4740 │?? ├── kirkwood │?? ├── mediatek │?? │?? ├── common │?? │?? ├── mt2701 │?? │?? ├── mt6797 │?? │?? ├── mt8173 │?? │?? ├── mt8183 │?? │?? ├── mt8192 │?? │?? └── mt8195 │?? ├── meson │?? ├── mxs │?? ├── pxa │?? ├── qcom │?? │?? └── qdsp6 │?? ├── rockchip │?? ├── samsung │?? ├── sh │?? │?? └── rcar │?? ├── sof │?? │?? ├── amd │?? │?? ├── imx │?? │?? ├── intel │?? │?? ├── mediatek │?? │?? │?? ├── mt8186 │?? │?? │?? └── mt8195 │?? │?? └── xtensa │?? ├── spear │?? ├── sprd │?? ├── sti │?? ├── stm │?? ├── sunxi │?? ├── tegra │?? ├── ti │?? ├── uniphier │?? ├── ux500 │?? ├── xilinx │?? └── xtensa ├── sparc ├── spi ├── synth │?? └── emux ├── usb │?? ├── 6fire │?? ├── bcd2000 │?? ├── caiaq │?? ├── hiface │?? ├── line6 │?? ├── misc │?? └── usx2y ├── virtio ├── x86 └── xen

??????? core????????????????該目錄包含了ALSA驅(qū)動(dòng)的中間層,它是整個(gè)ALSA驅(qū)動(dòng)的核心部分。

??????? core/oss???????? 包含模擬舊的OSS架構(gòu)的PCM和Mixer模塊。

??????? core/seq???????? 有關(guān)音序器相關(guān)的代碼。

??????? include??????????? ALSA驅(qū)動(dòng)的公共頭文件目錄,該目錄的頭文件需要導(dǎo)出給用戶空間的應(yīng)用程序使用,通常驅(qū)動(dòng)模塊私有的頭文件不應(yīng)放置在這里。

????????drivers???????????? 放置一些與CPU、BUS架構(gòu)無關(guān)的公用代碼。

??????? i2c?????????????????? ALSA自己的I2C控制代碼。

??????? pci?????????????????? pci聲卡的頂層目錄,子目錄包含各種pci聲卡的代碼。

??????? isa?????????????????? isa聲卡的頂層目錄,子目錄包含各種isa聲卡的代碼。

??????? soc????????????????? 針對system-on-chip體系的中間層代碼

??????? soc/codecs????? 針對soc體系的各種codec的代碼,與平臺(tái)無關(guān)。

ALSA API可以分解成以下幾個(gè)主要的接口:

1.聲卡和設(shè)備管理接口(Management of Cards and Devices):提供管理聲卡注冊和請求可用設(shè)備的通用功能2.PCM接口:管理數(shù)字音頻回放(playback)和錄音(capture)的接口。本文后續(xù)總結(jié)重點(diǎn)放在這個(gè)接口上,因?yàn)樗情_發(fā)數(shù)字音頻程序最常用到的接口。3.Raw MIDI接口:支持MIDI(Musical Instrument Digital Interface),標(biāo)準(zhǔn)的電子樂器。這些API提供對聲卡上MIDI總線的訪問。這個(gè)原始接口基于MIDI事件工作,由程序員負(fù)責(zé)管理協(xié)議以及時(shí)間處理。4.過程信息接口(Proc Info API)4.定時(shí)器(Timer)接口:為同步音頻事件提供對聲卡上時(shí)間處理硬件的訪問。5.時(shí)序器(Sequencer)接口6.混音器(Mixer)接口

總結(jié)

以上是生活随笔為你收集整理的Linux ALSA源码分析(基于Linux 5.18)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。