音频开发之必知必会

本文深入探讨音频开发,涵盖Linux ALSA系统架构,包括物理链路和逻辑设备篇,以及Android Audio框架,详细阐述AudioTrack、AudioPolicyService、AudioFlinger等组件的工作原理和流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Linux ALSA

1.1 Linux ALSA 综述

(1)Linux ALSA 音频系统架构 图(5部分)

              +--------+  +--------+  +--------+
              |tinyplay|  |tinycap |  |tinymix |
              +--------+  +--------+  +--------+
                   |           ^           ^ 
                   V           |           V
              +--------------------------------+
              |        ALSA Library API        |
              |      (tinyalsa, alsa-lib)      |
              +--------------------------------+
  user space                   ^
-------------------------------|---------------------
  kernel space                 V
              +--------------------------------+
              |           ALSA CORE            |
              | +-------+ +-------+ +------+   |
              | |  PCM  | |CONTROL| | MIDI |...|
              | +-------+ +-------+ +------+   |
              +--------------------------------+
                               |
              +--------------------------------+
              |           ASoC CORE            |
              +--------------------------------+
                               |
              +--------------------------------+
              |        hardware driver         |
              |  +-------+ +--------+ +-----+  |
              |  |Machine| |Platform| |Codec|  |
              |  +-------+ +--------+ +-----+  |
              +--------------------------------+

1.2 物理链路篇

(1)ALSA/ASoC 中硬件设备关系图

+------------------------------------------+
|                 Machine                  |
|  +--------------+      +--------------+  |
|  |   Platform   |      |     Codec    |  |
|  |              | I2S  |              |  |
|  |       cpu_dai|<---->|codec_dai     |  |
|  |              |      |              |  |
|  +--------------+      +--------------+  |
+------------------------------------------+

(2)Platform:cpu dai 和 pcm dma

(3)Codec:

普通:AIF、DAC、ADC、Mixer、PGA、Line-in、Line-out 部件

高端: EQ、DSP、SRC、DRC、AGC、Echo-Canceller、Noise-Suppression 

(4)Machine:dai_link 

(5)PCM 数据流向图

        copy_from_user           DMA                 I2S           DAC
              ^                   ^                   ^             ^
+---------+   |    +----------+   |   +-----------+   |   +-----+   |   +------+
|userspace+-------->DMA Buffer+------->I2S TX FIFO+------->CODEC+------->SPK/HP|
+---------+        +----------+       +-----------+       +-----+       +------+

1.3 逻辑设备篇

(1)声卡的建立

(2)PCM 逻辑设备的建立

好文推荐:

Linux 音频驱动(一)

Linux 音频驱动二

2 Android Audio

2.1  Audio 框架 综述

Java API Framwork 应用框架

JNI (Java Native Interface) :连接Java层和Native层的桥梁

Native Framework 原生框架:包含Audi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值