Attributs de mixage préférés sur les périphériques USB

Android 14 fournit des API de développement que les applications peuvent utiliser pour interroger et configurer les attributs de mixage préférés pour la lecture audio USB. Ces attributs de mixage préférés améliorent l'expérience de lecture audio USB en permettant aux applications de définir le format audio, le masque de canal, la fréquence d'échantillonnage et le comportement du mixeur. Grâce à l'utilisation des API de mixage préférées sur les périphériques USB pris en charge, les utilisateurs peuvent obtenir une lecture audio à faible latence et un contenu audio de plus haute résolution.

Cette fonctionnalité prend également en charge le comportement optionnel du mixeur de lecture bit-perfect pour les périphériques USB. Le mode bit-perfect permet la lecture des formats Master Quality Authenticated (MQA) et Direct Stream Digital (DSD) sur des convertisseurs numérique-analogique (DAC) compatibles.

Interface

L'Audio Policy Manager gère les attributs du mixeur dans le framework. La classe AudioMixerAttributes représente les attributs du mixeur. La classe AudioMixerAttributes inclut un objet AudioFormat qui décrit le format des données audio, le masque de canal et la fréquence d'échantillonnage du mélangeur. Par défaut, le framework détermine le comportement du mixeur, qui mélange toutes les sources audio et applique le contrôle du volume et les effets.

Si le comportement du mixeur utilise le mode BIT_PERFECT , le système envoie le contenu audio sans modification via le framework audio, HAL et éventuellement le processeur de signal numérique (DSP), depuis l'API jusqu'au périphérique USB. Le mode BIT_PERFECT prend en charge les formats codés, tels que MQA ou DSD, sur lesquels toute mise à l'échelle ou mixage de volume peut détruire la signification des données.

Lorsque les applications configurent les attributs du mélangeur, le framework rouvre le flux de sortie avec de nouveaux attributs, si nécessaire. La figure suivante montre l'interface entre l'application, le framework et le HAL lorsque les attributs du mixeur sont définis :

preferred-mixer-attr

Figure 1. Interface entre l'application, le framework et HAL.

Mise en œuvre

La mise en œuvre des attributs de mixage préférés, autres que l'attribut BIT_PERFECT , pour l'audio USB est obligatoire pour Android 14.

Attributs de mixage préférés

Pour prendre en charge les attributs de mixage préférés, les fournisseurs doivent prendre en charge le routage des périphériques USB vers le port de mixage dynamique, comme suit :

  1. Définissez le port de mixage dynamique dans usb_audio_policy_configuration.xml .

  2. Déclarez la possibilité d'acheminer des périphériques USB vers des ports de mixage dynamique soit dans la configuration de la stratégie audio , soit dans les méthodes AIDL getAudioPorts et getAudioRoutes .

Voir l'implémentation de référence pour le HAL audio USB sous hardware/libhardware/modules/usbaudio . Voir un exemple de port de mixage dynamique dans frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml .

Attribut de lecture bit-perfect

L’attribut de lecture bit-perfect est facultatif et n’est pris en charge que dans l’implémentation AIDL de Audio HAL. Pour prendre en charge la lecture bit-perfect, les fournisseurs doivent ajouter l'indicateur de sortie bit-perfect AUDIO_OUTPUT_FLAG_BIT_PERFECT au port de mixage dynamique qui peut être acheminé vers le périphérique USB.

L'exemple de code suivant montre l'utilisation de l'indicateur AUDIO_OUTPUT_FLAG_BIT_PERFECT dans 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>

Si l'attribut de lecture bit-perfect est spécifié, le HAL doit garantir que le flux audio est envoyé au périphérique USB sans aucune modification, c'est-à-dire que le flux audio ne doit avoir aucune mise à l'échelle du volume, conversion de la fréquence d'échantillonnage ou effets de traitement audio et ne doivent pas être mélangés dans le DSP. Dans ce cas, le matériel contrôle le volume car le framework ne fournit aucun contrôle logiciel du volume.

Validation

Exécutez les tests CTS dans PreferredMixerAttributesTestActivity.java pour valider la prise en charge des attributs de mixage préférés pour les périphériques USB.

Pour valider l'implémentation de l'attribut BIT_PERFECT , utilisez des DAC USB prenant en charge les formats audio MQA et DSD sur modulation par impulsion et code (PCM).