À 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.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 vers et depuis la 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
prend 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.aidl
est le point d'entrée de l'API.Descriptor.aidl
contient toutes les informations, telles que les fonctionnalités et les attributs, pour l'implémentation d'un effet.Capability.aidl
définit les capacité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'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é.