Bevorzugte Mixerattribute auf USB-Geräten

Android 14 bietet Entwickler-APIs mit denen Apps bevorzugte Mixerattribute für USB abfragen und konfigurieren können Audiowiedergabe. Diese bevorzugten Mixerattribute die USB-Audiowiedergabe zu verbessern, indem Apps das Audioformat festlegen, Kanalmaske, Abtastrate und Mischverhalten. Unter Verwendung der bevorzugten Mischpult-APIs auf unterstützten USB-Geräten nutzen, können Nutzer die Audiowiedergabe mit geringerer Latenz nutzen. und Audioinhalten mit höherer Auflösung.

Diese Funktion unterstützt auch den optionalen bit-perfekten Wiedergabemixer. für USB-Geräte. Der Bit-perfect-Modus ermöglicht die Wiedergabe auf dem Master MQA und Direct Stream Digital (DSD) auf kompatible Digital-Analog-Konverter (DACs).

Benutzeroberfläche

Der Audiorichtlinien-Manager verarbeitet die Mixerattribute im Framework. Die AudioMixerAttributes -Klasse die Attribute des Mixers darstellt. Die Klasse AudioMixerAttributes enthält ein AudioFormat Objekt, das das Audiodatenformat, die Kanalmaske und die Abtastrate für den Mixer. Standardmäßig bestimmt das Framework das Mischerverhalten, alle Audioquellen und wendet die Lautstärkeregelung und -effekte an.

Wenn das Mischerverhalten den BIT_PERFECT-Modus verwendet, sendet das System ohne Änderungen über das Audio-Framework, HAL und optional von der API bis hin zum USB-Gerät. Die Der Modus BIT_PERFECT unterstützt codierte Formate wie MQA oder DSD, auf denen alle Skalieren oder Mischen von Volumen kann die Bedeutung der Daten zerstören.

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

bevorzugt-mixer-attr

Abbildung 1: Schnittstelle zwischen App, Framework und HAL.

Implementierung

Implementierung bevorzugter Mixer-Attribute, außer BIT_PERFECT ist für Android 14 für USB-Audio obligatorisch.

Bevorzugte Mixerattribute

Zur Unterstützung bevorzugter Mixerattribute müssen Anbieter das Routing von USB-Geräten unterstützen. an den dynamischen Mix an:

  1. Definieren Sie den Port für die dynamische Kombination in usb_audio_policy_configuration.xml.

  2. die Weiterleitung von USB-Geräten an dynamische Mix-Ports an, entweder in Konfiguration der Audiorichtlinie oder in den AIDL-Methoden getAudioPorts und getAudioRoutes.

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

Bit-perfektes Wiedergabeattribut

Das Attribut „Bit-perfekte Wiedergabe“ ist optional und wird nur in der AIDL unterstützt Implementierung des Audio-HAL. Um eine Bit-perfekte Wiedergabe zu unterstützen, müssen Anbieter fügen Sie das Bit-perfect-Ausgabe-Flag AUDIO_OUTPUT_FLAG_BIT_PERFECT zum dynamischen an den USB-Anschluss angeschlossen.

Im folgenden Codebeispiel wird die Verwendung von AUDIO_OUTPUT_FLAG_BIT_PERFECT veranschaulicht: Flag 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-perfekte Wiedergabe“ angegeben ist, muss der HAL sicherstellen, dass die wird der Audiostream unverändert an das USB-Gerät gesendet, Der Audiostream darf keine Lautstärkeskalierung, Abtastratenkonvertierung oder Audio enthalten Verarbeitungseffekte und dürfen in der DSP nicht gemischt werden. In diesem Fall steuert die Hardware die Lautstärke, da das Framework keine per Software-Lautstärkeregelung.

Zertifizierungsstufe

Führen Sie die CTS-Tests in PreferredMixerAttributesTestActivity.java um die Unterstützung bevorzugter Mixerattribute für USB-Geräte zu validieren.

Verwenden Sie USB-DACs, die die Implementierung des Attributs BIT_PERFECT prüfen. unterstützen die Audioformate MQA und DSD über Pulscodemodulation (PCM).