À partir d'Android 14, l'interface Audio HAL est définie à l'aide de Stable AIDL . Les partenaires et les fournisseurs de SoC sont encouragés à réimplémenter leur Audio HAL 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 d'AIDL, la spécification de configuration de la politique audio est déplacée vers AIDL HAL. Avec ce changement, Audio Policy Manager (APM) obtient la configuration de 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 principales, d'effets et communes pour AIDL.
Utilisez l'implémentation par défaut de l'API AIDL dans /hardware/interfaces/audio/aidl/default/
comme référence lors de l'implémentation de nouvelles versions des HAL audio qui interagissent avec les pilotes du noyau.
Consultez le fichier Audio HAL README pour connaître la structure du répertoire Audio HAL pour AIDL.
HAL de base
Certaines des interfaces clés de Core HAL , utilisant AIDL, sont les suivantes :
-
IModule.aidl
est le point d'entrée dans l'API. - Les flux sont unidirectionnels et sont utilisés par AudioFlinger pour envoyer ou recevoir de l'audio vers et depuis le HAL via
IStreamOut.aidl
etIStreamIn.aidl
. -
ITelephony.aidl
fournit des contrôles spécifiques aux fonctions de téléphonie. -
IBluetooth.aidl
fournit les contrôles 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
fournit une prise en charge de la dose sonore. Voir Dose sonore pour plus d'informations. - 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/
.
Effets HAL
Certaines des interfaces clés d'Effets HAL, utilisant AIDL, sont les suivantes :
-
IFactory.aidl
est le point d'entrée dans l'API. -
Descriptor.aidl
contient toutes les informations telles que les capacités et les attributs pour une implémentation d'effet. -
Capability.aidl
définit des capacités d'effet qui ne changent pas au moment de l'exécution. -
Parameter.aidl
définit tous les paramètres pris en charge par l'instance d'effet. -
IEffect.aidl
est utilisé pour configurer et contrôler des instances d'effet particulières. Parcelables spécifiques à un 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
.
Voir les effets audio pour plus d'informations.
HAL commun
Les structures de données et les interfaces partagées entre divers HAL tels que BT HAL, Core et Effects Audio HAL se trouvent dans le Common HAL.
La dernière version du Common AIDL HAL en 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
Des définitions de structure de données stables sont utilisées à la fois par les HAL et par 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/
.
Test de l'API Audio AIDL HAL
De nouveaux tests VTS sont fournis pour l'interface AIDL.
Il n'y a aucun changement dans la nouvelle version de HAL qui puisse affecter la sécurité.