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:
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:
Definieren Sie den dynamischen Mix-Port in
usb_audio_policy_configuration.xml
.Deklarieren Sie die Möglichkeit, USB-Geräte an dynamische Mix-Ports weiterzuleiten, entweder in der Audiokonfiguration oder in den AIDL-Methoden
getAudioPorts
undgetAudioRoutes
.
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.