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 mixeur de lecture au format 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 mixeur 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 toute mise à l'échelle ou mixage du volume peut détruire le sens 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 des attributs de mixeur sont définis:
Figure 1 : Interface entre l'application, le framework et le HAL.
Implémentation
L'implémentation des attributs de mélangeur préférés, à l'exception de 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 dynamique dans la configuration des règles audio ou dans les méthodes AIDL
getAudioPorts
etgetAudioRoutes
.
Consultez l'implémentation de référence du 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 de l'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 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 PCM (modulation par impulsions et codage non compressé) MQA et DSD.