Android 14 fornisce API per sviluppatori che le app possono utilizzare per eseguire query e configurare gli attributi del mixer preferiti per la riproduzione audio USB. Questi attributi del mixer preferiti migliorano l'esperienza di riproduzione audio USB consentendo alle app di impostare il formato audio, la maschera dei canali, la frequenza di campionamento e il comportamento del mixer. Con l'utilizzo delle API mixer preferite sui dispositivi USB supportati, gli utenti possono ottenere una riproduzione audio a bassa latenza e contenuti audio ad alta risoluzione.
Questa funzionalità supporta anche il comportamento facoltativo del mixer di riproduzione bit-perfect per i dispositivi USB. La modalità bit-perfect consente la riproduzione dei formati master quality authenticated (MQA) e direct stream digital (DSD) su convertitori da digitale ad analogico (DAC) compatibili.
Interfaccia
Audio Policy Manager gestisce gli attributi del mixer nel framework. La classe
AudioMixerAttributes
rappresenta gli attributi del mixer. La classe AudioMixerAttributes
include un oggetto
AudioFormat
che descrive il formato dei dati audio, la maschera dei canali e la frequenza di campionamento per il mixer. Per impostazione predefinita, il framework determina il comportamento del mixer, che mixa
tutte le sorgenti audio e applica il controllo del volume e gli effetti.
Se il comportamento del mixer utilizza la modalità BIT_PERFECT
, il sistema invia i contenuti audio
senza modifiche tramite il framework audio, HAL e, facoltativamente,
il processore di segnale digitale (DSP), dall'API al dispositivo USB. La modalità
BIT_PERFECT
supporta formati codificati, come MQA o DSD, su cui qualsiasi
ridimensionamento o mixaggio del volume può distruggere il significato dei dati.
Quando le app configurano gli attributi del mixer, il framework riapre il flusso di output con nuovi attributi, se necessario. La figura seguente mostra l'interfaccia tra l'app, il framework e l'HAL quando vengono impostati gli attributi del mixer:
Figura 1. Interfaccia tra l'app, il framework e l'HAL.
Implementazione
L'implementazione degli attributi del mixer preferiti, diversi dall'attributo BIT_PERFECT
, per l'audio USB è obbligatoria per Android 14.
Attributi del mixer preferiti
Per supportare gli attributi del mixer preferiti, i fornitori devono supportare il routing dei dispositivi USB alla porta di mixaggio dinamico, come segue:
Definisci la porta del mixer dinamico in
usb_audio_policy_configuration.xml
.Dichiara la possibilità di indirizzare i dispositivi USB alle porte di mixaggio dinamico nella configurazione delle norme audio o nei metodi AIDL
getAudioPorts
egetAudioRoutes
.
Consulta l'implementazione di riferimento per l'HAL audio USB in hardware/libhardware/modules/usbaudio
.
Vedi un esempio di porta di mix dinamico in frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml
.
Attributo di riproduzione bit-perfect
L'attributo di riproduzione bit-perfect è facoltativo ed è supportato solo nell'implementazione AIDL
dell'HAL audio. Per supportare la riproduzione bit-perfect, i fornitori devono
aggiungere il flag di output bit-perfect AUDIO_OUTPUT_FLAG_BIT_PERFECT
alla porta
di mixaggio dinamico che può essere indirizzata al dispositivo USB.
Il seguente esempio di codice mostra l'utilizzo del flag 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>
Se viene specificato l'attributo di riproduzione bit-perfect, l'HAL deve garantire che lo stream audio venga inviato al dispositivo USB senza alcuna modifica, ovvero lo stream audio non deve avere alcuna scalatura del volume, conversione della frequenza di campionamento o effetti di elaborazione audio e non deve essere mixato nel DSP. In questo caso, l'hardware controlla il volume perché il framework non fornisce alcun controllo del volume software.
Convalida
Esegui i test CTS in
PreferredMixerAttributesTestActivity.java
per convalidare il supporto degli attributi del mixer preferiti per i dispositivi USB.
Per convalidare l'implementazione dell'attributo BIT_PERFECT
, utilizza DAC USB che
supportano i formati audio MQA e DSD su pulse-code modulation (PCM).