欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

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

发布时间:2024/3/26 linux 72 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Linux ALSA源码分析(基于Linux 5.18) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

        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)接口

总结

以上是生活随笔为你收集整理的Linux ALSA源码分析(基于Linux 5.18)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。