À partir d'Android 14, l'interface HAL audio est défini à l'aide de Stable AIDL. Partenaires et les fournisseurs de SoC sont encouragés à réimplémenter leur système audio HAL pour offrir via l'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ées vers AIDL HAL. Avec cette modification, l'APM (Audio Policy Manager) obtient les
configuration à partir 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 principales, effets et HAL courantes 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 de HAL audio
interagissent avec les
pilotes du noyau.
Consultez le Fichier README audio HAL pour la structure de répertoires HAL audio pour AIDL.
HAL principal
Voici quelques-unes des interfaces clés de Core HAL. à l'aide d'AIDL:
IModule.aidl
est le point d'entrée de l'API.- Les flux sont unidirectionnels et permettent à AudioFlinger d'envoyer ou de recevoir
audio vers et depuis le HAL via
IStreamOut.aidl
etIStreamIn.aidl
. ITelephony.aidl
fournit des commandes spécifiques aux fonctions de téléphonie.IBluetooth.aidl
fournit les contrôles BT SCO et HFP qui étaient activés surIPrimaryModule
dans l'API HIDL.IConfig.aidl
fournit les 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 Core HAL est disponible dans
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Effets HAL
Voici quelques-unes des principales interfaces d'Effects HAL utilisant AIDL:
IFactory.aidl
est le point d'entrée de l'API.Descriptor.aidl
contient toutes les informations telles que les capacités et pour l'implémentation d'un effet.Capability.aidl
définit les capacités de l'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.Parcelles spécifiques à un effet nommées d'après l'effet.
La dernière version de l'API HAL pour les effets en développement est en
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.La dernière version publiée de l'API Effects HAL est disponible en
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
Pour en savoir plus, consultez l'article Effets audio. des informations.
HAL commun
Structures de données et interfaces partagées entre différents HAL, comme BT HAL, et les effets. Les HAL audio se trouvent dans la couche HAL commune.
La dernière version du HAL commun d'AIDL en développement est disponible
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
La dernière version publiée de l'API Common HAL 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 par le framework.
La dernière version des types de données stables en développement est disponible.
/system/hardware/interfaces/media/aidl/android/media/audio/common/
La dernière version publiée des types de données stables est disponible dans
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
Tester l'API Audio AIDL HAL
Nouveau VTS sont fournis pour l'interface AIDL.
Aucune modification de la nouvelle version de HAL n'est susceptible d'affecter la sécurité.