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 canal, la fréquence d'échantillonnage et le comportement du mixeur. Grâce aux 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 optionnel du mixeur de lecture bit-perfect pour les appareils USB. Le mode bit parfait permet la lecture des formats MQA (Master Quality Authenticated) et DSD (Direct Stream Digital) sur les 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 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, la HAL et éventuellement le processeur de signal numérique (DSP), de l'API au périphérique USB. Le mode BIT_PERFECT
est compatible avec les formats encodés, tels que MQA ou DSD, sur lesquels toute mise à l'échelle du volume ou tout mixage 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 la HAL lorsque les attributs du mixeur sont définis :
Figure 1 : Interface entre l'application, le framework et la 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 périphériques USB vers le port de mixage dynamique, comme suit :
Définissez le port du mix dynamique dans
usb_audio_policy_configuration.xml
.Déclarez la possibilité de router les périphériques USB vers des ports de mixage dynamique dans la configuration des règles audio ou dans les méthodes AIDL
getAudioPorts
etgetAudioRoutes
.
Consultez l'implémentation de référence pour le HAL audio USB sous 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 sans perte
L'attribut de lecture bit-perfect est facultatif et n'est pris en charge que dans l'implémentation AIDL de l'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 routé vers l'appareil USB.
L'exemple de code suivant montre comment utiliser 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 parfaite est spécifié, la HAL doit s'assurer que le flux audio est envoyé à l'appareil USB sans aucune modification, c'est-à-dire que 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 DAC USB compatibles avec les formats audio MQA et DSD sur PCM (modulation par impulsions et codage).