Dans Android 14 et versions ultérieures, l'interface HAL audio est définie à l'aide d'AIDL stable. Les partenaires et les fournisseurs de SoC sont encouragés à réimplémenter leur HAL audio pour fournir une interface AIDL.
L'extension de la bibliothèque libaudiohal ajoute la prise en charge du framework pour AIDL HAL.
Avec l'implémentation AIDL, la spécification de configuration des règles audio est déplacée vers AIDL HAL. Avec cette modification, l'Audio Policy Manager (APM) obtient la configuration à partir du HAL au lieu de la consommer à partir du fichier XML fourni par le fournisseur.
API HAL audio AIDL
Cette section décrit les API HAL Core, Effects et Common pour AIDL.
Utilisez l'implémentation par défaut de l'API AIDL à l'adresse
/hardware/interfaces/audio/aidl/default/
comme référence lors de l'implémentation de nouvelles versions de HAL audio qui
interagissent avec les pilotes du noyau.
Consultez le fichier README de HAL audio pour connaître la structure du répertoire HAL audio pour AIDL.
HAL Core
Voici quelques-unes des principales interfaces de HAL Core, à l'aide d'AIDL :
IModule.aidlest le point d'entrée de l'API.- Les flux sont unidirectionnels et sont utilisés par AudioFlinger pour envoyer ou recevoir
du contenu audio vers et depuis le HAL via
IStreamOut.aidletIStreamIn.aidl. ITelephony.aidlfournit des commandes spécifiques aux fonctions de téléphonie.IBluetooth.aidlfournit des commandes BT SCO et HFP qui se trouvaient surIPrimaryModuledans l'API HIDL.IConfig.aidlfournit des paramètres de configuration à l'échelle du système.ISoundDose.aidlfournit une prise en charge de la dose sonore. Pour en savoir plus, consultez la section Dose sonore.- La dernière version de l'API HAL Core en développement se trouve dans
/hardware/interfaces/audio/aidl/android/hardware/audio/core/. - La dernière version publiée de l'API HAL Core se trouve dans
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/.
HAL Effects
Voici quelques-unes des principales interfaces de HAL Effects, à l'aide d'AIDL :
IFactory.aidlest le point d'entrée de l'API.Descriptor.aidlcontient toutes les informations telles que les fonctionnalités et les attributs pour une implémentation d'effet.Capability.aidldéfinit les fonctionnalités d'effet qui ne changent pas au moment de l'exécution.Parameter.aidldéfinit tous les paramètres compatibles avec l'instance d'effet.IEffect.aidlpermet de configurer et de contrôler des instances d'effet spécifiques.Parcelables spécifiques à l'effet nommés d'après l'effet.
La dernière version de l'API HAL Effects en développement se trouve dans
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/.La dernière version publiée de l'API HAL Effects se trouve dans
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect.
Pour en savoir plus, consultez la section Effets audio pour plus d' informations.
HAL Common
Les structures de données et les interfaces partagées entre différents HAL, tels que les HAL audio BT, Core et Effects, se trouvent dans le HAL Common.
La dernière version du HAL AIDL Common en développement se trouve dans
/hardware/interfaces/audio/aidl/android/hardware/audio/common/.La dernière version publiée de l'API HAL Common se trouve dans
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/.
Types de données stables courants
Les définitions de structure de données stables sont utilisées à la fois par les HAL et le framework.
La dernière version des types de données stables en développement se trouve dans
/system/hardware/interfaces/media/aidl/android/media/audio/common/.La dernière version publiée des types de données stables se trouve dans
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/.
Tester l'API HAL audio AIDL
De nouveaux tests VTS sont fournis pour l'interface AIDL.
Aucune modification dans la nouvelle version HAL ne peut affecter la sécurité.