Attributi del mixer preferiti sui dispositivi USB

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 preferiti del mixer migliorano l'esperienza di riproduzione audio USB consentendo alle app di impostare il formato audio, la maschera del canale, la frequenza di campionamento e il comportamento del mixer. Con l'uso delle API del mixer preferite sui dispositivi USB supportati, gli utenti possono ottenere una riproduzione audio a latenza inferiore e contenuti audio ad alta risoluzione.

Questa funzionalità fornisce inoltre il supporto per il comportamento opzionale del mixer di riproduzione bit-perfect per i dispositivi USB. La modalità bit-perfect consente la riproduzione di formati master quality authenticated (MQA) e direct stream digital (DSD) su convertitori digitale-analogici (DAC) compatibili.

Interfaccia

L'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 del canale e la frequenza di campionamento per il mixer. Per impostazione predefinita, il framework determina il comportamento del mixer, che mescola 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 il contenuto audio senza modifiche attraverso il framework audio, HAL e facoltativamente il processore di segnale digitale (DSP), dall'API fino al dispositivo USB. La modalità BIT_PERFECT supporta formati codificati, come MQA o DSD, sui quali qualsiasi ridimensionamento o miscelazione 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 sono impostati gli attributi del mixer:

preferred-mixer-attr

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 preferiti del mixer

Per supportare gli attributi del mixer preferiti, i fornitori devono supportare l'instradamento dei dispositivi USB alla porta del mix dinamico, come segue:

  1. Definire la porta del mix dinamico in usb_audio_policy_configuration.xml .

  2. Dichiara la possibilità di instradare i dispositivi USB alle porte di mixaggio dinamico nella configurazione della policy audio o nei metodi AIDL getAudioPorts e getAudioRoutes .

Vedere l'implementazione di riferimento per l'HAL audio USB in hardware/libhardware/modules/usbaudio . Vedi un esempio di porta 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 instradata 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 il flusso audio venga inviato al dispositivo USB senza alcuna modifica, ovvero il flusso audio non deve avere alcun ridimensionamento del volume, conversione della frequenza di campionamento o effetti di elaborazione audio e non devono essere mescolati nel DSP. In questo caso, l'hardware controlla il volume poiché il framework non fornisce alcun controllo software del volume.

Validazione

Esegui i test CTS in PreferredMixerAttributesTestActivity.java per convalidare il supporto per gli attributi del mixer preferiti per i dispositivi USB.

Per convalidare l'implementazione dell'attributo BIT_PERFECT , utilizzare DAC USB che supportano MQA e DSD su formati audio PCM (Pulse Code Modulation).