音频驱动程序架构

在 Fuchsia 中,您可以通过多种方式按照 使用的司机数量、沟通方式及职责。音频 驱动程序的责任由向驱动程序公开的接口决定 客户端可能是这些驱动程序的其他驱动程序或应用用户 设施。

定义

术语 定义
硬件编解码器 一种实体或虚拟设备, 数字/模拟与模拟/数字之间的信号 包括所有组合,例如从数字到数字。 示例编解码器包括 DAC 放大器组合和 ADC 转化者。
控制器或引擎 管理系统的硬件部分,用于管理音频 例如 SOC 的音频子系统
动态广告插播 (DAI) 数字音频接口。音频之间的接口 例如两个设备之间的 TDM 或 PDM 连接, 控制器和编解码器。
环形缓冲区 对共享内存区域(在 主内存)进行传输;此项共享 内存区域由 VMO 对象提供

音频接口

音频驱动程序的应用/客户端用户使用的 API 是 音频复合接口。借助此 API,应用 访问由驱动程序公开的音频硬件功能。可让驾驶员 公开各种类型硬件(包括硬件编解码器)的功能 一个或多个 DAI、控制器 环形缓冲区和 DAI,以及 处理元素的任意组合, 音频信号处理 API。

音频硬件中常见的一种拆分方式是设置一个音频引擎,用于配置 DAI 与音频硬件编解码器进行通信。在此分块中,我们可以 一个驱动程序用于音频引擎,一个用于编解码器。两个驱动程序都可以公开 音频复合接口实现相关功能。 编解码器驱动程序将公开一个或多个 DAI 互连接口, 音频引擎驱动程序将配置包含 DAI 的音频引擎硬件 或 DAI 连接到编解码器驱动程序。

这些驱动程序的客户端应配置所有驱动程序。示例 此架构适用于具有两个不同编解码器的系统 例如:对 SoC 的音频子系统进行抽象化处理。

                           +-----------------+
                +----------+     Client      +----------+
                |          +-----------------+          |
                |                   |                   |
          Composite API       Composite API      Composite API
                |                   |                   |
       +-----------------+ +-----------------+ +-----------------+
       | audio subsystem | |     Codec 1     | |     Codec 2     |
       +-----------------+ +-----------------+ +-----------------+

已弃用的接口

已弃用的接口包括:

  1. StreamConfig: 用于捕获或呈现音频的 audio_coreaudio-driver-ctl。前者是 (提供软件混音、路由、 等),后者是一个用于测试和启动新平台的实用程序。

以前会使用 StreamConfig API 的驱动程序可通过以下方法实现: 具有一个环形缓冲区的音频复合音频

  1. 编解码器:用于抽象 具有一个 DAI 的硬件编解码器之前会使用 Codec API 的驱动程序 可以使用 具有一个 DAI 且无环形缓冲区的音频复合音频

  2. DAI:用于抽象化 SoC 具有一个环形缓冲区和一个 DAI 的硬件。以前会使用 您可以使用 具有一个 DAI 和一个环形缓冲区的音频复合音频