USB 設備上的首選混音器屬性

Android 14 提供了開發者 API,應用程式可使用這些 API 來查詢和配置 USB 音訊播放的首選混音器屬性。這些首選混音器屬性允許應用程式設定音訊格式、通道遮罩、取樣率和混音器行為,從而改善 USB 音訊播放體驗。透過在支援的 USB 裝置上使用首選混音器 API,使用者可以獲得更低延遲的音訊播放和更高解析度的音訊內容。

此功能還為 USB 裝置的選用位元完美播放混音器行為提供支援。 Bit-Perfect 模式支援在相容的數位類比轉換器 (DAC) 上播放經過母帶品質認證 (MQA) 和直接串流數位 (DSD) 格式。

介面

音訊策略管理器處理框架中的混音器屬性。 AudioMixerAttributes類別表示混音器的屬性。 AudioMixerAttributes類別包含一個AudioFormat對象,該對象描述混頻器的音訊資料格式、通道遮罩和取樣率。預設情況下,框架決定混音器行為,混合所有音訊來源並套用音量控制和效果。

如果混音器行為使用BIT_PERFECT模式,則係統透過音訊框架、HAL 和可選的數位訊號處理器 (DSP) 將不加修改的音訊內容從 API 傳送到 USB 裝置。 BIT_PERFECT模式支援編碼格式,例如 MQA 或 DSD,在這些格式上任何磁碟區縮放或混合都可能破壞資料的含義。

當應用程式配置混合器屬性時,框架會根據需要使用新屬性重新開啟輸出流。下圖展示了設定mixer屬性時app、framework和HAL之間的介面:

preferred-mixer-attr

圖 1.應用程式、框架和 HAL 之間的介面。

執行

對於 Android 14,USB 音訊的首選混音器屬性( BIT_PERFECT屬性除外)的實作是強制的。

首選混合器屬性

為了支援首選混音器屬性,供應商必須支援將 USB 裝置路由到動態混音端口,如下所示:

  1. usb_audio_policy_configuration.xml中定義動態混合連接埠。

  2. 音訊策略配置中或在getAudioPortsgetAudioRoutes AIDL 方法中聲明將 USB 裝置路由到動態混合連接埠的能力。

請參閱hardware/libhardware/modules/usbaudio下 USB 音訊 HAL 的參考實作。請參閱frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml中的動態混合連接埠範例。

位元完美播放屬性

位元完美播放屬性是可選的,並且僅在音訊 HAL 的 AIDL 實作中支援。為了支援位元完美播放,供應商必須將位元完美輸出標誌AUDIO_OUTPUT_FLAG_BIT_PERFECT新增至可路由至 USB 裝置的動態混音連接埠。

以下程式碼範例顯示了usb_audio_policy_configuration.xmlAUDIO_OUTPUT_FLAG_BIT_PERFECT標誌的使用:

<module name="usb" halVersion="2.0">
    <mixPorts>
        <mixPort name="hifi_output"
                 role="source" flags="AUDIO_OUTPUT_FLAG_BIT_PERFECT">
        </mixPort>
    </mixPorts>
    <devicePorts>
        <devicePort tagName="USB Device Out"
                    type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
        </devicePort>
    </devicePorts>
    <routes>
        <route type="mix" sink="USB Device Out"
               sources="hifi_output"/>
    </routes>
</module>

如果指定了bit-perfect的播放屬性,HAL必須保證音訊串流在傳送至USB裝置時不進行任何修改,即音訊串流不能有任何音量縮放、取樣率轉換或音訊處理效果以及不得在 DSP 中混合。在這種情況下,硬體控制音量,因為框架不提供任何軟體音量控制。

驗證

執行PreferredMixerAttributesTestActivity.java中的 CTS 測試以驗證 USB 裝置的首選混音器屬性的支援。

若要驗證BIT_PERFECT屬性的實現,請使用支援基於脈衝編碼調變 (PCM) 音訊格式的 MQA 和 DSD 的 USB DAC。