Attributs préférés du mélangeur sur les appareils USB

Android 14 fournit des API pour les développeurs que les applications peuvent utiliser pour interroger et configurer les attributs de mixeur préférés pour la lecture audio USB. Ces attributs de mixeur 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 canaux, la fréquence d'échantillonnage et le comportement du mixeur. En utilisant les API de mixeur préférées sur les appareils USB compatibles, les utilisateurs peuvent obtenir une lecture audio à faible latence et un contenu audio de meilleure résolution.

Cette fonctionnalité est également compatible avec le comportement facultatif du mélangeur de lecture (bit parfait) pour les appareils USB. Le mode bit-perfect permet la lecture des formats MQA (Master Quality Authenticated) et DSD (Direct Stream Digital) sur les convertisseurs numérique-analogique (DAC) compatibles.

interface

Le gestionnaire de règles audio gère les attributs du mélangeur dans le framework. La classe AudioMixerAttributes représente les attributs du mélangeur. La classe AudioMixerAttributes inclut un objet AudioFormat qui décrit le format de données audio, le masque de canaux et le taux d'échantillonnage du mixeur. Par défaut, le framework détermine le comportement du mixeur, qui mélange toutes les sources audio et applique la commande de 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, le HAL et éventuellement le processeur de signal numérique (DSP), de l'API jusqu'à l'appareil USB. Le mode BIT_PERFECT est compatible avec les formats encodés, tels que MQA ou DSD, sur lesquels tout scaling ou combinaison de volumes peut détruire la signification des données.

Lorsque les applications configurent des attributs de mixeur, 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 mélangeur sont définis:

mixer-préféré-attr

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

Implémentation

L'implémentation d'attributs de mélangeur préférés autres que l'attribut BIT_PERFECT pour l'audio USB est obligatoire pour Android 14.

Attributs de mixeur préférés

Pour prendre en charge les attributs de mixeur préférés, les fournisseurs doivent prendre en charge le routage des appareils 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é de router des appareils USB vers des ports de mixage dynamique dans la configuration des règles audio ou dans les méthodes AIDL getAudioPorts et getAudioRoutes.

Pour en savoir plus sur l'implémentation de référence pour le HAL USB audio, consultez la section hardware/libhardware/modules/usbaudio. Consultez un exemple de port de mix dynamique dans frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml.

Attribut de lecture au niveau du bit parfait

L'attribut de lecture bit-perfect est facultatif et n'est compatible qu'avec l'implémentation AIDL de l'HAL audio. Pour permettre la lecture sur un bit-parfait, les fournisseurs doivent ajouter l'indicateur de sortie bit-perfect AUDIO_OUTPUT_FLAG_BIT_PERFECT au port de mix dynamique pouvant être acheminé vers l'appareil 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 s'assurer que le flux audio est envoyé à l'appareil USB sans aucune modification. Autrement dit, le flux audio ne doit pas comporter de mise à l'échelle du volume, de conversion de fréquence d'échantillonnage ni d'effets de traitement audio, et ne doit pas être mélangé 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 mixeur préférés pour les appareils USB.

Pour valider l'implémentation de l'attribut BIT_PERFECT, utilisez des DAC USB compatibles avec les formats audio MQA et DSD par modulation par impulsion et codage (PCM).