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 等編碼格式,其中任何磁碟區縮放或混合作業都會毀損資料的意義。

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

首選混合型客機

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

實作

在 Android 14 中,除了 BIT_PERFECT 屬性以外,實作 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.xml 中使用 AUDIO_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 的脈衝編碼調變 (PCM) 音訊格式的 USB DAC。