Bevorzugte Mixerattribute auf USB-Geräten

Android 14 bietet Entwickler-APIs, mit denen Apps bevorzugte Mixer-Attribute für die USB-Audiowiedergabe abfragen und konfigurieren können. Diese bevorzugten Mixer-Attribute verbessern die USB-Audiowiedergabe, da Apps das Audioformat, die Kanalmaske, die Abtastrate und das Mixer-Verhalten festlegen können. Wenn die bevorzugten Mixer-APIs auf unterstützten USB-Geräten verwendet werden, können Nutzer Audioinhalte mit geringerer Latenz und höherer Auflösung wiedergeben.

Diese Funktion unterstützt auch das optionale Verhalten des bitgenauen Wiedergabemixers für USB-Geräte. Der Bit-perfekte Modus ermöglicht die Wiedergabe von MQA- (Master Quality Authenticated) und DSD-Formaten (Direct Stream Digital) auf kompatiblen Digital-Analog-Wandlern (DACs).

Benutzeroberfläche

Der Audio Policy Manager verwaltet die Mixer-Attribute im Framework. Die Klasse AudioMixerAttributes stellt die Attribute des Mischers dar. Die AudioMixerAttributes-Klasse enthält ein AudioFormat-Objekt, das das Audiodatenformat, 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 unverändert über das Audio-Framework, HAL und optional den digitalen Signalprozessor (DSP) von der API an das USB-Gerät. Der Modus BIT_PERFECT unterstützt codierte Formate wie MQA oder DSD, bei denen eine Lautstärkeskalierung oder -mischung die Bedeutung der Daten beeinträchtigen kann.

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

preferred-mixer-attr

Abbildung 1. Schnittstelle zwischen App, Framework und HAL.

Implementierung

Für Android 14 ist die Implementierung bevorzugter Mixerattribute für USB-Audio (außer dem BIT_PERFECT-Attribut) obligatorisch.

Bevorzugte Mixer-Attribute

Um bevorzugte Mixer-Attribute zu unterstützen, müssen Anbieter USB-Geräte wie unten beschrieben an den dynamischen Mix-Port weiterleiten:

  1. Definiere den dynamischen Mix-Port in usb_audio_policy_configuration.xml.

  2. Deklarieren Sie die Möglichkeit, USB-Geräte zu dynamischen Mix-Ports weiterzuleiten, entweder in der Konfiguration der Audiorichtlinie oder in den AIDL-Methoden getAudioPorts und getAudioRoutes.

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

Attribut „Bitperfekte Wiedergabe“

Das Attribut „Bit-perfect playback“ ist optional und wird nur in der AIDL-Implementierung der Audio HAL unterstützt. Zur Unterstützung der bitgenauen Wiedergabe müssen Anbieter dem dynamischen Mix-Port, der an das USB-Gerät weitergeleitet werden kann, das Bitgenau-Ausgabe-Flag AUDIO_OUTPUT_FLAG_BIT_PERFECT hinzufügen.

Das folgende Codebeispiel zeigt die Verwendung des AUDIO_OUTPUT_FLAG_BIT_PERFECT-Flags 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 „Bit-perfect Playback“ angegeben ist, muss die HAL dafür sorgen, dass der Audiostream ohne Änderungen an das USB-Gerät gesendet wird. Das bedeutet, dass der Audiostream keine Lautstärkeskalierung, keine Samplerate-Konvertierung und keine Audioverarbeitungseffekte haben darf und nicht im DSP gemischt werden darf. In diesem Fall wird die Lautstärke über die 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 bevorzugter Mixerattribute für USB-Geräte zu prüfen.

Verwende zum Validieren der Implementierung des BIT_PERFECT-Attributs USB-DACs, die MQA und DSD über PCM-Audioformate (Pulse Code Modulation) unterstützen.