Linux ALSA源码分析(基于Linux 5.18)
创始人
2024-06-02 20:26:25
0

        Linux ALSA音频驱动框架详细的描述的ALSA驱动框架的分层及各模块的主要作用,现在从源码的角度来分析ALSA驱动。

1、ALSA驱动代码文件结构

        在Linux5.18代码树中,Alsa的代码文件结构如下:

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驱动的中间层,它是整个ALSA驱动的核心部分。

        core/oss         包含模拟旧的OSS架构的PCM和Mixer模块。

        core/seq         有关音序器相关的代码。

        include            ALSA驱动的公共头文件目录,该目录的头文件需要导出给用户空间的应用程序使用,通常驱动模块私有的头文件不应放置在这里。

        drivers             放置一些与CPU、BUS架构无关的公用代码。

        i2c                   ALSA自己的I2C控制代码。

        pci                   pci声卡的顶层目录,子目录包含各种pci声卡的代码。

        isa                   isa声卡的顶层目录,子目录包含各种isa声卡的代码。

        soc                  针对system-on-chip体系的中间层代码

        soc/codecs      针对soc体系的各种codec的代码,与平台无关。

ALSA API可以分解成以下几个主要的接口:

    1.声卡和设备管理接口(Management of Cards and Devices):提供管理声卡注册和请求可用设备的通用功能2.PCM接口:管理数字音频回放(playback)和录音(capture)的接口。本文后续总结重点放在这个接口上,因为它是开发数字音频程序最常用到的接口。3.Raw MIDI接口:支持MIDI(Musical Instrument Digital Interface),标准的电子乐器。这些API提供对声卡上MIDI总线的访问。这个原始接口基于MIDI事件工作,由程序员负责管理协议以及时间处理。4.过程信息接口(Proc Info API)4.定时器(Timer)接口:为同步音频事件提供对声卡上时间处理硬件的访问。5.时序器(Sequencer)接口6.混音器(Mixer)接口

相关内容

热门资讯

猪八戒吃西瓜怎么改为夸张句 猪八戒吃西瓜怎么改为夸张句猪八戒张开了宇宙一般的血盆大口吞下了地球般大的西瓜
一个木一个羽念什么 一个木一个羽念什么    栩,读作xǔ。  栩 xǔ  〈名〉  形声。从木,羽声。亦称“杼”。本义...
赛尔号雷神天明闪怎么打 赛尔号雷神天明闪怎么打赛尔号中雷伊雷神天明闪建议使用特训后的雷伊打,现在打起来比较简单,带过地面石、...
古文言中有哪个字韵脚是“an”... 古文言中有哪个字韵脚是“an”而且有“用”的意思Ban:办,半,般,班,拌,搬,板,伴,瓣Can:蚕...
与长江三峡水电站相关的重要地理... 与长江三峡水电站相关的重要地理分界线是什么?第二阶梯与第一阶梯分界线因为这个地区海拔高度落差大,水的...
传奇的魔法神石怎么样获得? 传奇的魔法神石怎么样获得?魔法神石是在幽明领地的BOSS爆的说不定的``GM喜欢他在那里爆就在那里爆...
华谊公司旗下艺人有哪些优秀艺人... 华谊公司旗下艺人有哪些优秀艺人?华谊兄弟旗下的艺人多达四十多人,但有名的不是很多华谊旗下有很多很不错...
丁磊说大多数的中国学生不具备独... 丁磊说大多数的中国学生不具备独立思考能力,他为何这么说?是因为现在有很多的学生都非常依赖自己的父母,...
为何18岁男子脑死亡火化前妈妈... 为何18岁男子脑死亡火化前妈妈大喊别离开下一秒突然复活?我觉得应该是哪里出现了纰漏,这名男子并没有死...
关于宇宙的科普电影 关于宇宙的科普电影银河系漫游指南 绝对是是吧,《旅行到宇宙边缘》旅行到宇宙边缘
北京工商大学会计专业考研科目都... 北京工商大学会计专业考研科目都有什么?专业复习用书都用什么?初始考802管理学指定参考书是周三多《管...
作者为什么要写丁香结? 作者为什么要写丁香结?“丁香结”的本义是小小的花苞圆圆的,鼓鼓的,恰如衣襟上的盘花扣。象征意义是人生...
原核生物和真核生物的区别 原核生物和真核生物的区别真核有复杂的内膜系统(细胞器),原核生物无真核有细胞核,原核无成型的细胞核基...
怎样不吃药摆脱抑郁症 怎样不吃药摆脱抑郁症以前靠心理治疗,但是后面有一段时期加重了。但是药的副作用太大,可以不吃药吗?想开...
诺曼底登陆的作用和对二战的意义 诺曼底登陆的作用和对二战的意义改变了二战的战局,加快盟军胜利的到来。
怎么样才能学习学得“细”呢? 怎么样才能学习学得“细”呢?细是注意细节地方,平时做题多思考,尽量全面一些,不要学习时觉的理解了就完...
去年几滴相思水,化做树下种花泪... 去年几滴相思水,化做树下种花泪,谁家少年踏春来,折下枝头红玫瑰!这首诗的意思是什么?暗示爱意。指思念...
小花仙找主人! 小花仙找主人!我只要你帮我照顾花朵,每月一个礼物可以吗?我有额外条件:一个星期星期一,三,五一定要上...
手机在信号不好的时候 对方打不... 手机在信号不好的时候 对方打不进来 能设置来电转移吗rt 是否需要开通什么业务 怎么办理不需要去移...
与看透生死或看透人生有关的歌曲... 与看透生死或看透人生有关的歌曲 比如悟我觉得三国演义主题曲有一种世态苍爽的感觉 ,得意的笑 潇洒走...