AIDL HAL 中的可配置音频政策支持

从 Android 16 开始,AIDL 音频 HAL 接口完全支持可配置 音频政策 (CAP)。

本页面提供了必要的技术背景,以帮助合作伙伴和 SoC 供应商迁移其音频政策配置。

参数框架

CAP 的实现基于 Intel 参数 框架。CAP 是在 Android 6 中引入的。参数框架 (PfW) 允许根据 参数描述系统。通过使用配置 XML 文件,PfW 使用插件将参数绑定到操作,并提供根据当前条件更改参数的规则。

HIDL 中 CAP 的结构

在 HIDL 中,CAP 的所有配置都在 XML 中指定。如需了解详情,请参阅参数 框架使用参数框架的配置。 XML 文件用于指定以下内容:

  • 参数的结构说明(即 PfW 的音频网域说明)
  • 条件的定义
  • 路由策略(输入和输出设备选择)的规则
  • 音量表规范

借助 HIDL,Android 框架能够直接从供应商分区加载这些 XML 文件。之所以允许这样做,是因为在 HAL API 中为这些 XML 文件定义了 XSD 架构。HIDL HAL 的每个主要版本都有对应的 XSD 架构。主要版本不需要向后兼容。

AIDL 中 CAP 的结构

随着向 AIDL 的过渡,HAL API 版本必须保持向后兼容(用 HIDL 术语来说,AIDL HAL 的每个版本都是“次要”更新)。XSD 架构不能再用作 HAL API 的一部分,因为没有既定的方法来定义对架构的向后兼容更新。因此,之前在 XML 文件中定义的配置现在需要由 HAL 使用 AIDL API 提供。为了方便这一点,CAP 配置的结构会 转换为 AIDL,类似于 Android 15 的 AIDL 音频 HAL 中的音频政策配置 XML。

CAP 的数据结构已添加到 通用稳定数据 类型,并且 包含以下 parcelable:

CAP 配置的入口点位于 AudioHalEngineConfig.CapSpecificConfig 结构中。如需查看 CAP 数据结构的图表,请参阅 AudioHalCapConfiguration.aidl 中的注释。

AIDL HAL 的 默认 实现 包含 一个帮助程序 类 ,该类会根据旧版 CAP XML 文件的内容填充 AIDL parcelable,以简化合作伙伴的迁移。

迁移场景

合作伙伴可以考虑本部分中列出的选项,具体取决于这是首次发布之前未使用 CAP 的产品,还是迁移现有产品。

新产品

对于开始使用 CAP 来实现音频政策的新产品,OEM 可以选择使用 XML 在供应商端存储 CAP 配置。

使用 XML 的好处是,存在一组 脚本 工具 ,可帮助您从高级说明生成配置。

如果 OEM 决定使用 XML 在供应商分区上存储 CAP 配置,建议使用 XML 解析器的默认实现将配置转换为 AIDL。

现有产品的更新

如果产品已使用 CAP 并因此具有 XML 配置,您可以继续将现有 CAP 与 HAL 的 AIDL 版本搭配使用。

CAP 配置的 HIDL 和 AIDL 版本的产品策略的命名惯例有所不同。在 HIDL 中,内置(“旧版”)策略 使用小写短名称(如 media),而在 AIDL 中,内置策略 使用以 STRATEGY_ 为前缀的全大写名称(例如 STRATEGY_MEDIA)。请参阅 `CapProductStrategies.xml` 中的内置策略列表。CapProductStrategies.xml同一文件为 OEM 特定的策略定义了“预分配”ID,这些策略遵循 vx_10xx 的命名模式,数字范围为 10001039

旧版产品

如果依赖于 CAP 的产品不更新其供应商分区并 保留在 HIDL 上,您可以将系统分区更新到 Android 16。该框架仍与旧版 CAP 配置兼容。

实现示例

为了帮助合作伙伴为其平台实现 CAP,AOSP 提供了一个 Cuttlefish 虚拟设备的“汽车”风格示例,该示例使用 AIDL HAL 中的 CAP。特定于设备的配置位于 device/google/cuttlefish/shared/auto/audio/policy/engine中, 目标名称为 lunchaosp_cf_x86_64_autoAndroid.bp 文件可用作生成全套 CAP 供应商文件的参考。