Preferowane atrybuty miksera na urządzeniach USB

Android 14 udostępnia interfejsy API dla programistów których aplikacje mogą używać do wysyłania zapytań i konfigurowania preferowanych atrybutów miksera dla USB do odtwarzania dźwięku. Te preferowane atrybuty miksera poprawić jakość odtwarzania dźwięku przez USB, umożliwiając aplikacjom ustawianie formatu audio, maski kanału, częstotliwość próbkowania i działanie miksera. Za pomocą preferowanego interfejsów API miksera na obsługiwanych urządzeniach USB, użytkownicy mogą odtwarzać dźwięk z mniejszym opóźnieniem i treści audio w wyższej rozdzielczości.

Funkcja ta zapewnia również obsługę opcjonalnego miksera odtwarzania z idealną jakością bitów. w przypadku urządzeń USB. Tryb bitu perfekcyjnego umożliwia odtwarzanie mastera formaty cyfrowe z uwierzytelnianiem (MQA) i bezpośrednim strumieniem (DSD), kompatybilnych przetworników cyfrowych na analogowych (DAC).

Interfejs

Menedżer zasad dotyczących audio obsługuje atrybuty miksera w ramach platformy. AudioMixerAttributes reprezentuje atrybuty miksera. Klasa AudioMixerAttributes zawiera element AudioFormat. obiekt opisujący format danych audio, maskę kanału i częstotliwość próbkowania miksera. Domyślnie platforma określa działanie miksera, wszystkich źródeł dźwięku oraz reguluje głośność i efekty.

Jeśli mikser używa trybu BIT_PERFECT, system wysyła dźwięk. treści bez modyfikacji za pomocą struktury audio, HAL oraz opcjonalnie procesora sygnału cyfrowego (DSP) – od interfejsu API po urządzenie USB. Tryb BIT_PERFECT obsługuje formaty zakodowane, takie jak MQA lub DSD, w których każdy skalowanie lub miksowanie woluminów może zniszczyć znaczenie danych.

Gdy aplikacje konfigurują atrybuty miksera, platforma ponownie otwiera strumień wyjściowy z nowymi atrybutami, jeśli zajdzie taka potrzeba. Poniższy rysunek przedstawia interfejs między funkcją aplikacji, platformy i kodu HAL, gdy ustawione są atrybuty miksera:

preferowany-mikser

Rysunek 1. Interfejs między aplikacją, platformą i HAL.

Implementacja

Implementacja preferowanych atrybutów miksera innych niż BIT_PERFECT atrybut audio USB jest wymagany w Androidzie 14.

Preferowane atrybuty miksera

Aby obsługiwać atrybuty preferowanych mikserów, dostawcy muszą obsługiwać kierowanie urządzeń USB do portu miksu dynamicznego w następujący sposób:

  1. Określ port miksu dynamicznego w usb_audio_policy_configuration.xml.

  2. Zadeklaruj możliwość kierowania urządzeń USB do portów miksu dynamicznego konfiguracja zasad audio lub w metodach AIDL getAudioPorts i getAudioRoutes.

.

Zapoznaj się z implementacją referencyjną dotyczącą interfejsu HAL USB audio w dokumencie hardware/libhardware/modules/usbaudio. Zobacz przykład portu miksu dynamicznego w elemencie frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml.

Atrybut odtwarzania Bit-Perfefect

Atrybut odtwarzania bez perfekcji jest opcjonalny i jest obsługiwany tylko w AIDL implementacji kodu HAL audio. Aby zapewnić perfekcyjne odtwarzanie bitów, dostawcy muszą dodaj flagę danych wyjściowych AUDIO_OUTPUT_FLAG_BIT_PERFECT do kreacji dynamicznej miksu, który można przekierować do urządzenia USB.

Poniższa próbka kodu pokazuje, jak korzystać z interfejsu AUDIO_OUTPUT_FLAG_BIT_PERFECT flaga w usb_audio_policy_configuration.xml:

<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>

Jeśli określono atrybut odtwarzania z doskonałością jakości, HAL musi zagwarantować, że tag strumienia audio jest wysyłany na urządzenie USB bez żadnych modyfikacji, czyli strumień audio nie może mieć skalowania głośności, konwersji częstotliwości próbkowania ani dźwięku. i nie wolno mieszać ich na platformie DSP. W takim przypadku to urządzenie steruje głośnością, ponieważ platforma nie udostępnia jakąkolwiek regulację głośności.

Weryfikacja

Uruchom testy CTS w PreferredMixerAttributesTestActivity.java aby sprawdzić obsługę preferowanych atrybutów miksera dla urządzeń USB.

Aby sprawdzić poprawność implementacji atrybutu BIT_PERFECT, użyj kontrolerów DAC USB, które: obsługują formaty audio MQA i DSD z użyciem formatów audio z modulacją kodem pulsacyjnym (PCM).