AIDL HAL 中的可設定音訊政策支援

自 Android 16 開始,AIDL Audio HAL 介面完全支援可設定的音訊政策 (CAP)。

本頁面提供必要的技術背景資訊,協助合作夥伴和 SoC 供應商遷移音訊政策設定。

參數架構

CAP 的實作方式是以 Intel 參數架構為基礎。Android 6 導入了 CAP。參數架構 (PfW) 可讓您以參數描述系統。PfW 會使用設定 XML 檔案,透過外掛程式將參數繫結至動作,並提供根據目前條件變更參數的規則。

HIDL 中的 CAP 結構

在 HIDL 中,CAP 的所有設定都是以 XML 指定。詳情請參閱「參數架構」和「使用參數架構進行設定」。XML 檔案用於指定下列項目:

  • 參數結構的說明 (即 PfW 的音訊網域說明)
  • 條件定義
  • 轉送策略的規則 (輸入和輸出裝置選取)
  • 音量表規格

透過 HIDL,Android 架構可以直接從供應商分區載入這些 XML 檔案。由於這些 XML 檔案的 XSD 架構已定義為 HAL API 的一部分,因此可以這麼做。每個 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 的資料結構會新增至常見穩定資料類型,並包含下列可封送物件:

CAP 設定的進入點位於 AudioHalEngineConfig.CapSpecificConfig 結構中。如要查看 CAP 資料結構的圖表,請參閱 AudioHalCapConfiguration.aidl 中的註解。

AIDL HAL 的預設實作包含輔助類別,可根據舊版 CAP XML 檔案的內容填寫 AIDL 可封送物件,簡化合作夥伴的遷移作業。

遷移情境

合作夥伴可以根據產品是否為首次推出 (先前未使用 CAP),或是現有產品的遷移作業,考慮本節列出的選項。

新商品

如果新產品開始使用 CAP 實作音訊政策,OEM 可以選擇使用 XML 在供應商端儲存 CAP 設定。

使用 XML 的好處是有一組指令碼工具,可從高階描述產生設定。

如果原始設備製造商 (OEM) 決定使用 XML 在供應商分割區儲存 CAP 設定,建議使用 XML 剖析器的預設實作方式,將設定轉換為 AIDL。

現有產品的更新

如果產品已使用 CAP,因此有 XML 設定,您可以繼續使用現有的 CAP 和 AIDL 版本的 HAL。

在 CAP 設定的 HIDL 和 AIDL 版本中,產品策略的命名慣例有所不同。在 HIDL 中,內建 (「舊版」) 策略使用小寫簡短名稱,例如 media;在 AIDL 中,內建策略使用以 STRATEGY_ 為前置字元的全大寫名稱,例如 STRATEGY_MEDIA。如需內建策略清單,請參閱CapProductStrategies.xml。這個檔案也會為 OEM 專屬策略定義「預先分配」的 ID,這些 ID 遵循 vx_10xx 的命名模式,並使用 10001039 的數字。

舊版產品

如果依賴 CAP 的產品未更新供應商分割區,且仍使用 HIDL,您可以將系統分割區更新至 Android 16。這個架構仍與舊版 CAP 設定相容。

導入範例

為協助合作夥伴在自家平台導入 CAP,AOSP 提供 Cuttlefish 虛擬裝置「汽車」版本的範例,該裝置使用 CAP 和 AIDL HAL。裝置專屬設定位於 device/google/cuttlefish/shared/auto/audio/policy/engine,且 lunch 目標名稱為 aosp_cf_x86_64_auto。您可以使用 Android.bp 檔案做為參考,產生整套 CAP 供應商檔案。