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 逻辑设备的建立
好文推荐:
2 Android Audio
2.1 Audio 框架 综述
Java API Framwork 应用框架
JNI (Java Native Interface) :连接Java层和Native层的桥梁
Native Framework 原生框架:包含Audi