À partir d'Android 14, l'interface Audio HAL est définie à l'aide d'Stable AIDL. 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 ce changement, l'Audio Policy Manager (APM) obtient la configuration du HAL au lieu de la consommer à partir du fichier XML fourni par le fournisseur.
API Audio AIDL HAL
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 lorsque vous implémentez de nouvelles versions d'Audio HAL qui interagissent avec les pilotes du noyau.
Consultez le fichier README de l'Audio HAL pour connaître la structure du répertoire Audio HAL pour AIDL.
HAL principal
Voici quelques-unes des interfaces clés de Core HAL, utilisant 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 de l'audio vers et depuis la HAL via
IStreamOut.aidletIStreamIn.aidl. ITelephony.aidlfournit des commandes spécifiques aux fonctions de téléphonie.IBluetooth.aidlfournit les 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.aidlprend en charge la dose sonore. Pour en savoir plus, consultez Dose sonore.- La dernière version de l'API Core HAL en développement se trouve dans
/hardware/interfaces/audio/aidl/android/hardware/audio/core/. - La dernière version publiée de l'API Core HAL se trouve dans
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/.
HAL des effets
Voici quelques-unes des principales interfaces de Effects HAL, à 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 l'implémentation d'un effet.Capability.aidldéfinit les capacité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 Effects HAL en développement se trouve dans
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/.La dernière version publiée de l'API Effects HAL se trouve dans
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect.
Pour en savoir plus, consultez Effets audio.
HAL commun
Les structures de données et les interfaces partagées entre différents HAL (comme les HAL audio BT, Core et Effects) se trouvent dans le HAL commun.
La dernière version du HAL AIDL commun en cours de développement se trouve dans
/hardware/interfaces/audio/aidl/android/hardware/audio/common/.La dernière version publiée de l'API Common HAL 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 Audio AIDL HAL
De nouveaux tests VTS sont fournis pour l'interface AIDL.
Aucune modification apportée à la nouvelle version de HAL ne peut affecter la sécurité.