USB 裝置的偏好混合器屬性

Android 14 提供開發人員 API,應用程式可使用這些 API 查詢及設定 USB 音訊播放的偏好混音器屬性。這些偏好的混音器屬性可讓應用程式設定音訊格式、聲道遮罩、取樣率和混音器行為,進而提升 USB 音訊播放體驗。在支援的 USB 裝置上使用偏好的混音器 API,使用者就能以較低的音訊播放延遲時間,享受更高解析度的音訊內容。

這項功能也支援 USB 裝置的選用位元完美播放混音器行為。位元完美模式可讓相容的數位類比轉換器 (DAC) 播放經過認證的主帶品質 (MQA) 和直接串流數位 (DSD) 格式。

介面

音訊政策管理工具會處理架構中的混音器屬性。AudioMixerAttributes 類別代表混音器的屬性。AudioMixerAttributes 類別包含 AudioFormat 物件,用於說明混音器的音訊資料格式、聲道遮罩和取樣率。根據預設,架構會決定混音器行為,混音器會混合所有音訊來源,並套用音量控制和效果。

如果混音器行為使用 BIT_PERFECT 模式,系統會透過音訊架構、HAL 和選用的數位訊號處理器 (DSP),將音訊內容從 API 下傳至 USB 裝置,且不會進行修改。BIT_PERFECT 模式支援 MQA 或 DSD 等編碼格式,任何音量縮放或混音作業都可能破壞資料的意義。

應用程式設定混音器屬性時,架構會視需要使用新屬性重新開啟輸出串流。下圖顯示設定混音器屬性時,應用程式、架構和 HAL 之間的介面:

preferred-mixer-attr

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

實作

除了 BIT_PERFECT 屬性外,Android 14 也強制實作 USB 音訊的偏好混音器屬性。

偏好的混音器屬性

如要支援偏好的混音器屬性,供應商必須支援將 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,查看動態組合連接埠的範例。

位元完美播放屬性

位元完美播放屬性為選用屬性,且僅支援 Audio 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>

如果指定了位元完美播放屬性,HAL 必須確保音訊串流傳送至 USB 裝置時未經過任何修改,也就是音訊串流不得有任何音量縮放、取樣率轉換或音訊處理效果,且不得在 DSP 中混音。在這種情況下,音量是由硬體控制,因為架構未提供任何軟體音量控制。

驗證

PreferredMixerAttributesTestActivity.java 中執行 CTS 測試,驗證 USB 裝置是否支援偏好的混音器屬性。

如要驗證 BIT_PERFECT 屬性的實作方式,請使用支援 MQA 和 DSD 的 USB DAC,透過脈衝編碼調變 (PCM) 音訊格式傳輸。