自 Android 16 起,AIDL Audio HAL 介面將全面支援可設定的音訊政策 (CAP)。
本頁面提供必要的技術背景資訊,協助合作夥伴和 SoC 供應商遷移音訊政策設定。
參數架構
CAP 的實作方式是以 Intel 參數架構為基礎。CAP 是在 Android 6 中推出。參數架構 (PfW) 可讓您以參數來描述系統。透過使用設定 XML 檔案,PfW 會將參數繫結至使用外掛程式的動作,並提供依據目前條件變更參數的規則。
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 Audio HAL 中的 Audio Policy Configuration XML。
CAP 的資料結構已新增至常見的穩定資料類型,並包含下列可分割的項目:
AudioHalCapConfiguration.aidl
AudioHalCapCriterionV2.aidl
AudioHalCapDomain.aidl
AudioHalCapParameter.aidl
AudioHalCapRule.aidl
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,搭配 HAL 的 AIDL 版本。
產品策略的命名慣例會因 CAP 設定的 HIDL 和 AIDL 版本而異。在 HIDL 中,內建 (「舊版」) 策略使用 media
等小寫簡短名稱,但在 AIDL 中,內建策略使用開頭為 STRATEGY_
的全部大寫名稱,例如 STRATEGY_MEDIA
。請參閱 CapProductStrategies.xml
中的內建策略清單。同一個檔案會為特定 OEM 策略定義「預先分配」的 ID,這些 ID 會遵循 vx_10xx
的命名模式,並使用 1000
到 1039
的數字。
舊版產品
如果依賴 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 供應商檔案。