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. Utilizzando le API del mixer preferite sui dispositivi USB supportati, gli utenti possono ottenere una riproduzione audio a bassa latenza e contenuti audio ad alta risoluzione.
Questa funzionalità fornisce anche il supporto per il comportamento del mixer di riproduzione bit-perfect facoltativo per i dispositivi USB. La modalità bit-perfect consente la riproduzione dei formati MQA (Master Quality Authenticated) e DSD (Direct Stream Digital) su convertitori da digitale ad analogico (DAC) compatibili.
Interfaccia
Audio Policy Manager gestisce gli attributi del mixer nel framework. La
AudioMixerAttributes
classe rappresenta gli attributi del mixer. La classe AudioMixerAttributes include un
AudioFormat
oggetto 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 segnali digitali (DSP), dall'API al dispositivo USB. La modalità BIT_PERFECT supporta formati codificati, come MQA o DSD, su cui qualsiasi scalabilità o mixaggio del volume può distruggere il significato dei dati.
Quando le app configurano gli attributi del mixer, il framework riapre lo stream di output con i nuovi attributi, se necessario. La figura seguente mostra l'interfaccia tra l'app, il framework e HAL quando vengono impostati gli attributi del mixer:
Figura 1. Interfaccia tra l'app, il framework e HAL.
Implementazione
L'implementazione degli attributi del mixer preferiti, ad eccezione dell'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 dinamica, come segue:
Definisci la porta di mixaggio dinamica in
usb_audio_policy_configuration.xml.Dichiara la possibilità di eseguire il routing dei dispositivi USB alle porte di mixaggio dinamiche in configurazione della policy audio o nei metodi AIDL
getAudioPortsegetAudioRoutes.
Consulta l'implementazione di riferimento per l'HAL audio USB in hardware/libhardware/modules/usbaudio.
Consulta un esempio di porta di mixaggio dinamica 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 di Audio HAL. 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 dinamica a cui è possibile eseguire il routing 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, HAL deve assicurarsi che lo stream audio venga inviato al dispositivo USB senza modifiche, ovvero che lo stream audio non abbia scalabilità del volume, conversione della frequenza di campionamento o effetti di elaborazione audio e che non venga 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 PCM (Pulse-Code Modulation).