高级 Linux 声音架构 (ALSA) 现在是 Linux 系统中最流行的架构,可为 Linux 操作系统提供音频和 MIDI 功能。
ALSA 具有以下重要特性:
- 高效支持从消费类声卡到专业多通道音频接口的所有类型的音频接口。
- 完全模块化的声音驱动程序。
- SMP 和线程安全设计。
- 用户空间库 (alsa-lib) 可简化应用程序编程并提供更高级别的功能。
- 支持较旧的 Open Sound System (OSS) API,为大多数 OSS 程序提供二进制兼容性。
ALSA 片上系统 (ASoC) 层专为 SoC 音频而设计。ASoC 层的总体项目目标为嵌入式片上系统处理器和便携式音频编解码器提供更好的 ALSA 支持。
ASoC 层还提供以下特性:
- 编解码器独立性。允许在其他平台和计算机上重复使用编解码器驱动程序。
- 在编解码器和 SoC 之间轻松设置 I2S/PCM 音频接口。每个 SoC 接口和编解码器都在内核中注册其音频接口功能。
- 动态音频电源管理 (DAPM)。DAPM 是一种 ASoC 技术,旨在最大限度地降低音频子系统的功耗、无论采用何种音频用例。DAPM 始终保证最低的音频功率状态,并且对用户空间音频组件完全透明。DAPM 是移动器件或具有复杂音频要求的器件的理想选择。
- 减少爆裂声和咔嗒声。通过按正确的顺序(包括使用数字静音)为编解码器上电/断电,可以减少爆裂声和咔嗒声。ASoC 在更改电源状态时向编解码器发送信号。
- 机器专用控制装置。允许机器向声卡添加控件,例如扬声器放大器的音量控制。
ASoC 将嵌入式音频系统拆分为多个可重用组件驱动程序:
- 编解码器类驱动程序:编解码器类驱动程序与平台无关,包含音频控制、音频接口功能、编解码器 DAPM 定义和编解码器 IO 功能。如果需要,该类别可扩展到 BT、FM 和调制解调器 IC。编解码器类驱动程序应该是可在任何架构和计算机上运行的通用代码。
- 平台类驱动程序:平台类驱动程序包括音频 DMA 引擎驱动程序、数字音频接口 (DAI) 驱动程序(例如 I2S、AC97、PCM)以及该平台的任何音频 DSP 驱动程序。
- 机器类驱动程序:机器类驱动程序就如同胶水,用于描述其他组件驱动程序并将其绑定在一起以形成 ALSA“声卡器件”。它处理任何机器特定控件和机器级别音频事件(例如在播放开始时打开放大器)。
有关 ASoC 的更多详细信息,请参见 Linux 操作系统源树中 Linux 内核文档,网址为 linux/Documentation/sound/alsa/soc,以及 www.alsa-project.org/main/index.php/ASoC。