Android 14 fournit des API de développement 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 canal, la fréquence d'échantillonnage et le comportement du mixeur. Grâce à l'utilisation des API de mixeur préférées sur les appareils USB compatibles, les utilisateurs peuvent bénéficier d'une lecture audio à faible latence et d'un contenu audio haute résolution.
Cette fonctionnalité est également compatible avec le comportement de mixeur de lecture bit-perfect facultatif 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 (CNA) compatibles.
Interface
L'Audio Policy Manager gère les attributs du mixeur dans le framework. La
AudioMixerAttributes
classe représente les attributs du mixeur. La classe AudioMixerAttributes inclut un
AudioFormat
objet qui décrit le format des données audio, le masque de canal et la fréquence d'échantillonnage pour
le mixeur. 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, le HAL et, éventuellement, le processeur de signal numérique (DSP), de l'API à l'appareil USB. Le mode BIT_PERFECT est compatible avec les formats encodés, tels que MQA ou DSD, sur lesquels toute mise à l'échelle ou tout mixage du volume peut détruire la signification des données.
Lorsque les applications configurent les attributs du mixeur, le framework rouvre le flux de sortie avec de nouveaux attributs, si nécessaire. La figure suivante illustre l'interface entre l'application, le framework et le HAL lorsque les attributs du mixeur sont définis :
Figure 1. Interface entre l'application, le framework et le HAL.
Implémentation
L'implémentation des attributs de mixeur 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 :
Définissez le port de mixage dynamique dans
usb_audio_policy_configuration.xml.Déclarez la possibilité de router des appareils USB vers des ports de mixage dynamiques dans la configuration de la règle audio ou dans les méthodes AIDL
getAudioPortsetgetAudioRoutes.
Consultez l'implémentation de référence pour le HAL audio USB sous hardware/libhardware/modules/usbaudio.
Consultez 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 compatible qu'avec l'implémentation AIDL du HAL audio. 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 routé 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 la fréquence d'échantillonnage ni d'effets de traitement audio, et ne doit pas être mixé dans le DSP. Dans ce cas, le matériel contrôle le volume, car le framework ne fournit aucun contrôle du volume logiciel.
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 CNA USB compatibles avec les formats audio MQA et DSD sur la modulation par impulsions et codage (PCM).