AIDL HAL での設定可能なオーディオ ポリシーのサポート

Android 16 以降では、AIDL Audio HAL インターフェースが構成可能なオーディオ ポリシー(CAP)を完全にサポートしています。

このページでは、パートナーと SoC ベンダーがオーディオ ポリシー構成を移行する際に必要な技術的な背景について説明します。

パラメータ フレームワーク

CAP の実装は Intel パラメータ フレームワークに基づいています。CAP は Android 6 で導入されました。パラメータ フレームワーク(PfW)を使用すると、システムをパラメータで記述できます。PfW は、構成 XML ファイルを使用して、プラグインを使用してパラメータをアクションにバインドし、現在の条件に応じてパラメータを変更するためのルールを提供します。

HIDL の CAP の構造

HIDL では、CAP のすべての構成が XML で指定されていました。詳細については、パラメータ フレームワークパラメータ フレームワークを使用した構成をご覧ください。XML ファイルを使用して、以下を指定しました。

  • パラメータの構造の説明(PfW の音声ドメインの説明)
  • 条件の定義
  • ルーティング戦略のルール(入力デバイスと出力デバイスの選択)
  • ボリューム テーブルの仕様

HIDL により、Android フレームワークはこれらの XML ファイルをベンダー パーティションから直接読み込むことができました。これは、これらの XML ファイルに対して HAL API の一部として XSD スキーマが定義されていたため許可されていました。HIDL HAL のメジャー リリースごとに、対応する XSD スキーマがありました。メジャー リリースには下位互換性が必要ありませんでした。

AIDL の CAP の構造

AIDL への移行に伴い、HAL API のリリースは下位互換性を維持する必要があります(HIDL の用語では、AIDL HAL の各リリースは「マイナー」アップデートです)。スキーマの下位互換性のある更新を定義する確立された方法がないため、XSD スキーマは HAL API の一部として使用できなくなりました。そのため、これまで XML ファイルで定義されていた構成は、AIDL API を使用して HAL から提供する必要があります。これを容易にするため、Android 15 の AIDL オーディオ HAL のオーディオ ポリシー構成 XML と同様に、CAP 構成の構造が AIDL に変換されます。

CAP のデータ構造は一般的な安定データ型に追加され、次の Parcelable が含まれます。

CAP 構成のエントリ ポイントは AudioHalEngineConfig.CapSpecificConfig 構造にあります。CAP データ構造の図については、AudioHalCapConfiguration.aidl のコメントをご覧ください。

AIDL HAL のデフォルトの実装には、パートナーの移行を簡素化するために、以前の CAP XML ファイルの内容に基づいて AIDL Parcelable を入力するヘルパークラスが含まれています。

移行シナリオ

パートナーは、CAP を使用していなかったプロダクトを初めてリリースする場合と、既存のプロダクトを移行する場合に応じて、このセクションに記載されているオプションを検討できます。

新製品

オーディオ ポリシーの実装に CAP を使用する新しい製品の場合、OEM はベンダー側で CAP 構成を保存するために XML を使用することを選択できます。

XML を使用するメリットは、高レベルの記述から構成を簡単に生成できる一連のスクリプト ツールが存在することです。

OEM がベンダー パーティションに CAP 構成を保存するために XML を使用する場合は、XML パーサーのデフォルト実装を使用して構成を AIDL に変換することをおすすめします。

既存の商品の更新

プロダクトですでに CAP を使用していて XML 構成がある場合は、AIDL バージョンの HAL で既存の CAP を引き続き使用できます。

プロダクト戦略の命名規則は、CAP 構成の HIDL バージョンと AIDL バージョンで異なります。HIDL では、組み込み(「レガシー」)戦略で media などの小文字の短い名前が使用されていましたが、AIDL では、STRATEGY_ を接頭辞とする大文字の名前(STRATEGY_MEDIA など)が組み込み戦略で使用されます。組み込み戦略の一覧については、CapProductStrategies.xml をご覧ください。同じファイルで、OEM 固有の戦略の「事前割り当て済み」ID が定義されます。この ID は、vx_10xx の命名パターンに従い、10001039 の番号で指定されます。

以前のプロダクト

CAP に依存する製品でベンダー パーティションが更新されず、HIDL のままである場合は、システム パーティションを Android 16 に更新できます。フレームワークは、従来の CAP 構成との互換性を維持します。

実装例

パートナーがプラットフォームに CAP を実装できるように、AOSP には、AIDL HAL で CAP を使用する Cuttlefish 仮想デバイスの「自動車」フレーバーの例があります。デバイス固有の構成は device/google/cuttlefish/shared/auto/audio/policy/engine にあり、lunch ターゲット名は aosp_cf_x86_64_auto です。Android.bp ファイルは、CAP ベンダー ファイルの完全なセットを生成するための参照として使用できます。