À partir d'Android 14, l'interface audio HAL 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
permet de rendre compatible le framework avec AIDL HAL.
Avec l'implémentation AIDL, la spécification de configuration des règles audio est déplacée vers le HAL AIDL. Avec ce changement, le gestionnaire de règles audio (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 principales, effets et HAL courantes pour AIDL.
Utilisez l'implémentation par défaut de l'API AIDL sur /hardware/interfaces/audio/aidl/default/
comme référence lorsque vous implémentez de nouvelles versions de HAL audio qui interagissent avec les pilotes du noyau.
Consultez le fichier README audio HAL pour connaître la structure de répertoires HAL audio pour AIDL.
Core HAL
Voici quelques-unes des interfaces clés de Core HAL utilisant AIDL:
IModule.aidl
est 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 depuis et vers le HAL via
IStreamOut.aidl
etIStreamIn.aidl
. ITelephony.aidl
fournit des commandes spécifiques aux fonctions de téléphonie.IBluetooth.aidl
fournit les commandes BT SCO et HFP qui se trouvaient surIPrimaryModule
dans l'API HIDL.IConfig.aidl
fournit des paramètres de configuration à l'échelle du système.ISoundDose.aidl
est compatible avec la dose sonore. Pour en savoir plus, consultez la section Dose sonore.- La dernière version de l'API Core HAL en développement est disponible dans
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - La dernière version publiée de l'API HAL principale est disponible dans
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Effets HAL
Voici quelques-unes des principales interfaces de l'HAL Effects, à l'aide d'AIDL:
IFactory.aidl
est le point d'entrée de l'API.Descriptor.aidl
contient toutes les informations telles que les fonctionnalités et les attributs d'une implémentation d'effet.Capability.aidl
définit les fonctionnalités d'effet qui ne changent pas au moment de l'exécution.Parameter.aidl
définit tous les paramètres compatibles avec l'instance d'effet.IEffect.aidl
permet de configurer et de contrôler des instances d'effets spécifiques.Parcelles spécifiques à un effet nommées d'après l'effet.
La dernière version de l'API HAL Effects en cours de développement est disponible dans
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.La dernière version publiée de l'API HAL Effects est disponible dans
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Pour en savoir plus, consultez la section Effets audio.
HAL commun
Les structures de données et les interfaces partagées entre différents HAL, tels que le HAL BT, le HAL Audio de base et les effets, se trouvent dans le HAL commun.
La dernière version du HAL AIDL commun en cours de développement est disponible dans
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.La dernière version publiée de l'API HAL commune est disponible 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 cours de 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 de la nouvelle version de HAL n'est susceptible d'affecter la sécurité.