[Audio]ALSA音频框架-简介

参考:
1. 奇小葩 https://blog.csdn.net/u012489236/article/details/98068122
2. 技术芯 https://blog.csdn.net/sinat_37817094/article/details/80490830
3. 哈迪斯_石头 https://blog.csdn.net/zqh6516336520/article/details/38226333
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 主要有如下特点:

  • 支持多种声卡设备、
  • 模块化的内核驱动程序 、
  • 支持 SMP(对称多处理)和多线程、
  • 提供应用开发函数库
  • 兼容OSS应用程序

系统框架

在这里插入图片描述

​ User空间:主要由Alsa Libray API对应用程序提供统一的API接口,各个APP应用程序只要调用 alsa-lib 提供的 API接口来实现放音、录音、控制。现在提供了两套基本的库,tinyalsa是一个简化的alsa-lib库,现在Android的系统中主要使用它。
​ ALSA CORE:alsa 核心层,向上提供逻辑设备(PCM/CTL/MIDI/TIMER/…)系统调用,向下驱动硬件设备(Machine/I2S/DMA/CODEC)
​ ASOC Core:是 ALSA 的标准框架,是 ALSA-driver 的核心部分,提供了各种音频设备驱动的通用方法和数据结构,为 Audio driver提供 ALSA Driver API
​ Hardware Driver:音频硬件设备驱动,由三大部分组成,分别是 Machine、Platform、Codec,提供的 ALSA Driver API 和相应音频设备的初始化及工作流程,实现具体的功能组件,这也是驱动开发人员需要具体实现的部分。

目录结构

.
├── 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_bus.c -->实现AC97标准总线。

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 的上升沿发送数据, 在下降沿接收数据, 实现全双工的数据传输。

  • last.c -->所有音频设备注册完成后打印ALSA devices List

下面是一个log示例:

[    1.814400] ALSA device list:
[    1.814432]   #0: rockchip,rt5640-codec
[    1.814440]   #1: RK-FPGA-I2S
  • sound_core.c -->注册音频核心层子系统
subsys_initcall(init_soundcore);
module_exit(cleanup_soundcore);
  • sound_firmware.c --> 加载音频驱动固件
EXPORT_SYMBOL(mod_firmware_load);

下面是目录及其说明

目录 说明
aoa 苹果板载音频驱动
arm arm音频设备支持
atmel Atmel ABDAC(音频字节流数模转换器)及AC97C(AC97控制器)支持
core 该目录包含了ALSA驱动的中间层,它是整个ALSA驱动的核心部分
driver 放置一些与CPU、BUS架构无关的公用代码
firewire 火线(IEEE-1394/FireWire/iLink)音频设备支持
hda HD Audio(高保真音频)支持
i2c ALSA自己的I2C控制代码
isa isa声卡的顶层目录,子目录包含各种isa声卡的代码
mips mips音频设备支持
oss 对oss的兼容支持
parisc 鸿蒙(harmony)音频设备支持(注:支持PA-RISC架构上的GSC音频设备)
pci pci音频设备支持
pcmcia pcmcia音频设备支持
ppc PowerPC 音频设备支持
sh SUPERH架构音频设备支持
soc 针对system-on-chip体系的中间层代码
sparc SPARC架构音频设备支持
spi SPI音频设备支持
synth 一些工具
usb USB音频设备支持

个人博客:https://www.letcos.top/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 前言 今天跟王总聊天,他狠狠地(形容词)叼了我,他说你为什么不写一些比较牛逼的文章,为什么总是写一些教别人如何安装...
    da4ac7fb9bd5阅读 4,910评论 0 49
  • 在移动设备中,Codec的作用可以归结为4种,分别是: 1.对PCM等信号进行D/A转换,把数字的音频信号转换为模...
    gbmaotai阅读 17,585评论 4 3
  • 一.声音参数基本概念: 声音是连续模拟量,计算机将它离散化之后用数字表示,就有了以下几个名词术语。 样本长度(sa...
    cs1001阅读 2,662评论 0 2
  • 一.声音参数基本概念: 声音是连续模拟量,计算机将它离散化之后用数字表示,就有了以下几个名词术语。 样本长度(sa...
    cs1001阅读 5,324评论 0 3
  • 修行自己 ——读《你是我今生最美的修行》有感 育才中学初一(15)班 曹燕 刚开始读的时候,似乎从来没想过题目。...
    简约语文阅读 611评论 0 1