Bevorzugte Mixerattribute auf USB-Geräten

Android 14 bietet Entwickler-APIs, mit denen Apps bevorzugte Mixer-Attribute für die USB-Audioausgabe abfragen und konfigurieren können. Diese bevorzugten Mixer-Attribute verbessern die USB-Audioausgabe, da Apps das Audioformat, die Channel-Maske, die Abtastrate und das Mixer-Verhalten festlegen können. Durch die Verwendung der bevorzugten Mixer-APIs auf unterstützten USB-Geräten können Nutzer eine Audiowiedergabe mit geringerer Latenz und Audioinhalte mit höherer Auflösung erhalten.

Diese Funktion bietet auch Unterstützung für das optionale Mixer-Verhalten für die bitgenaue Wiedergabe für USB-Geräte. Im Bit-Perfect-Modus können Master Quality Authenticated- (MQA-) und Direct Stream Digital- (DSD-)Formate auf kompatiblen Digital-Analog-Wandlern (DACs) wiedergegeben werden.

Schnittstelle

Der Audio Policy Manager verarbeitet die Mixer-Attribute im Framework. Die Klasse AudioMixerAttributes stellt die Attribute des Mixers dar. Die Klasse AudioMixerAttributes enthält ein AudioFormat-Objekt, das das Audioformat, die Kanalmaske und die Abtastrate für den Mixer beschreibt. Standardmäßig bestimmt das Framework das Verhalten des Mixers, der alle Audioquellen mischt und Lautstärkeregelung und Effekte anwendet.

Wenn für das Mixer-Verhalten der Modus BIT_PERFECT verwendet wird, sendet das System die Audioinhalte ohne Änderungen über das Audio-Framework, die HAL und optional den digitalen Signalprozessor (DSP) von der API zum USB-Gerät. Der Modus BIT_PERFECT unterstützt codierte Formate wie MQA oder DSD, bei denen eine Lautstärkeanpassung oder ein Mischen die Bedeutung der Daten zerstören kann.

Wenn Apps Mixer-Attribute konfigurieren, öffnet das Framework den Ausgabestream bei Bedarf mit neuen Attributen. Die folgende Abbildung zeigt die Schnittstelle zwischen der App, dem Framework und dem HAL, wenn Mixer-Attribute festgelegt werden:

preferred-mixer-attr

Abbildung 1: Schnittstelle zwischen App, Framework und HAL.

Implementierung

Die Implementierung bevorzugter Mixer-Attribute, mit Ausnahme des Attributs BIT_PERFECT, für USB-Audio ist für Android 14 obligatorisch.

Bevorzugte Mixer-Attribute

Zur Unterstützung bevorzugter Mixer-Attribute müssen Anbieter das Weiterleiten von USB-Geräten an den dynamischen Mix-Port unterstützen. Das funktioniert so:

  1. Definieren Sie den dynamischen Mix-Port in usb_audio_policy_configuration.xml.

  2. Deklarieren Sie die Möglichkeit, USB-Geräte an dynamische Mix-Ports weiterzuleiten, entweder in der Audiokonfiguration oder in den AIDL-Methoden getAudioPorts und getAudioRoutes.

Die Referenzimplementierung für den USB-Audio-HAL finden Sie unter hardware/libhardware/modules/usbaudio. Ein Beispiel für einen dynamischen Mix-Port finden Sie unter frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml.

Attribut für die bitgenaue Wiedergabe

Das Attribut für die bitgenaue Wiedergabe ist optional und wird nur in der AIDL-Implementierung des Audio-HAL unterstützt. Damit die bitgenaue Wiedergabe unterstützt wird, müssen Anbieter dem dynamischen Mix-Port, der an das USB-Gerät weitergeleitet werden kann, das Flag für die bitgenaue Ausgabe AUDIO_OUTPUT_FLAG_BIT_PERFECT hinzufügen.

Das folgende Codebeispiel zeigt die Verwendung des Flags AUDIO_OUTPUT_FLAG_BIT_PERFECT in 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>

Wenn das Attribut für die bitgenaue Wiedergabe angegeben ist, muss die HAL dafür sorgen, dass der Audio-Stream ohne Änderungen an das USB-Gerät gesendet wird. Das bedeutet, dass der Audio-Stream keine Lautstärkeskalierung, keine Konvertierung der Abtastrate und keine Audioverarbeitungseffekte aufweisen darf und nicht im DSP gemischt werden darf. In diesem Fall wird die Lautstärke von der Hardware gesteuert, da das Framework keine Software-Lautstärkeregelung bietet.

Zertifizierungsstufe

Führen Sie die CTS-Tests in PreferredMixerAttributesTestActivity.java aus, um die Unterstützung für bevorzugte Mixer-Attribute für USB-Geräte zu validieren.

Verwenden Sie zur Validierung der Implementierung des Attributs BIT_PERFECT USB-DACs, die MQA- und DSD-Audioformate über PCM (Pulse-Code Modulation) unterstützen.