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 mélangeur recommandés pour l'USB la lecture audio. Ces attributs préférés pour le mélangeur améliorer l'expérience de lecture audio USB en permettant aux applications de définir le format audio, le masque de canal, le taux d'échantillonnage et le comportement du mélangeur. En utilisant de mixage sur les appareils USB compatibles, pour une lecture audio avec une latence plus faible et des contenus audio de meilleure résolution.

Cette fonctionnalité est également compatible avec le mélangeur de lecture facultatif pour les périphériques USB. Le mode bit-perfection permet de lire le contenu maître qualité authentifiée (MQA) et des formats numériques DSD (Direct Stream Digital) les convertisseurs numériques-analogiques (DAC) compatibles.

interface

Le gestionnaire de règles audio gère les attributs du mélangeur dans le framework. La AudioMixerAttributes représente les attributs du mélangeur. La classe AudioMixerAttributes inclut un élément AudioFormat objet qui décrit le format de données audio, le masque de canal et le taux d'échantillonnage pour le mélangeur. Par défaut, le framework détermine le comportement du mélangeur, qui combine toutes les sources audio, et applique des commandes de volume ainsi que des effets.

Si le mélangeur utilise le mode BIT_PERFECT, le système envoie l'audio contenus sans modification via le framework audio, HAL et éventuellement de l'API au périphérique USB. La Le mode BIT_PERFECT est compatible avec les formats encodés, tels que MQA ou DSD, sur lesquels la mise à l'échelle ou le mélange de volume peuvent détruire la signification des données.

Lorsque les applications configurent les attributs Mixer, 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 Mixer sont définis:

mixer-préféré-attr

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

Implémentation

Implémentation d'attributs Mixer préférés, autres que BIT_PERFECT , pour l'audio USB est obligatoire sur Android 14.

Attributs préférés pour le mélangeur

Pour utiliser les attributs préférés du mélangeur, les fournisseurs doivent accepter le routage d'appareils USB au port de mix dynamique, comme suit:

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

  2. Déclarez la possibilité d'acheminer des appareils USB vers des ports de mix dynamique dans 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 pris en charge que dans AIDL l'implémentation de l'HAL audio. Pour permettre une lecture de type bit-parfaite, les fournisseurs doivent ajoutez l'indicateur de sortie (bit-parfait) AUDIO_OUTPUT_FLAG_BIT_PERFECT au fichier dynamique port de mix qui peut être acheminé vers le périphérique USB.

L'exemple de code suivant montre l'utilisation de 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 du bit-perfect est spécifié, le HAL doit s'assurer que le paramètre le flux audio est envoyé au périphérique USB sans aucune modification, c'est-à-dire que le flux audio ne doit pas comporter de mise à l'échelle du volume, de conversion du taux d'échantillonnage ni et ne doivent pas être mélangés dans la DSP. Dans ce cas, le matériel contrôle le volume, car le framework ne fournit pas n'importe quel contrôle de volume logiciel.

Validation

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

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