Android 16 以降では、AIDL オーディオ HAL インターフェースは構成可能なオーディオ ポリシー(CAP)を完全にサポートしています。
このページでは、パートナーや SoC ベンダーがオーディオ ポリシー構成の移行を行う際に役立つ技術的な背景について説明します。
パラメータ フレームワーク
CAP の実装は Intel パラメータ フレームワークに基づいています。CAP は Android 6 で導入されました。パラメータ フレームワーク(PfW)を使用すると、パラメータの観点からシステムを記述できます。構成 XML ファイルを使用することで、PfW はプラグインを使用してパラメータをアクションにバインドし、現在の条件に応じてパラメータを変更するルールを提供します。
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 が含まれます。
AudioHalCapConfiguration.aidlAudioHalCapCriterionV2.aidlAudioHalCapDomain.aidlAudioHalCapParameter.aidlAudioHalCapRule.aidl
CAP 構成のエントリ ポイントは AudioHalEngineConfig.CapSpecificConfig 構造にあります。CAP データ構造の図については、AudioHalCapConfiguration.aidl のコメントをご覧ください。
AIDL HAL のデフォルト実装には、パートナーの移行を簡素化するために、レガシー CAP XML ファイルの内容に基づいて AIDL Parcelable を入力するヘルパークラスが含まれています。
移行シナリオ
パートナーは、以前に CAP を使用していなかったプロダクトの初回リリースか、既存のプロダクトの移行かに応じて、このセクションに記載されているオプションを検討できます。
新製品
オーディオ ポリシーの実装に CAP を使用する新しい製品の場合、OEM はベンダー側で CAP 設定を保存するために XML を使用することを選択できます。
XML を使用するメリットは、高レベルの説明から構成の生成を容易にする一連のスクリプト ツールが存在することです。
OEM がベンダー パーティションに CAP 構成を保存するために XML を使用することを決定した場合、構成を AIDL に変換するために XML パーサーのデフォルト実装を使用することが推奨されます。
既存の製品のアップデート
プロダクトがすでに CAP を使用しており、XML 構成がある場合は、HAL の AIDL バージョンで既存の CAP を引き続き使用できます。
CAP 構成の HIDL バージョンと AIDL バージョンでは、プロダクト戦略の命名規則が異なります。HIDL では、組み込み(「レガシー」)戦略で media などの小文字の短い名前が使用されていましたが、AIDL では、組み込み戦略で STRATEGY_ で始まる大文字の名前(STRATEGY_MEDIA など)が使用されています。CapProductStrategies.xml の組み込み戦略のリストをご覧ください。同じファイルで、vx_10xx の命名パターンに従い、1000 から 1039 までの番号が付いた OEM 固有の戦略の「事前割り当て」ID を定義します。
以前のプロダクト
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 ベンダーファイルの完全なセットを生成するための参照として使用できます。