A partir de Android 14, la interfaz Audio HAL se define mediante Stable AIDL . Se anima a los socios y proveedores de SoC a reimplementar su Audio HAL para proporcionar una interfaz AIDL.
La ampliación de la biblioteca libaudiohal
agrega soporte de marco para AIDL HAL. Con la implementación de AIDL, la especificación de configuración de la política de audio se traslada a AIDL HAL. Con este cambio, Audio Policy Manager (APM) obtiene la configuración de HAL en lugar de consumirla del archivo XML proporcionado por el proveedor.
API de audio AIDL HAL
Esta sección describe las API HAL principales, de efectos y comunes para AIDL.
Utilice la implementación predeterminada de la API AIDL en /hardware/interfaces/audio/aidl/default/
como referencia al implementar nuevas versiones de Audio HAL que interactúan con los controladores del kernel.
Consulte el archivo Audio HAL README para conocer la estructura del directorio Audio HAL para AIDL.
Núcleo HAL
Algunas de las interfaces clave de Core HAL , que utilizan AIDL, son las siguientes:
-
IModule.aidl
es el punto de entrada a la API. - Las transmisiones son unidireccionales y AudioFlinger las utiliza para enviar o recibir audio hacia y desde HAL a través de
IStreamOut.aidl
eIStreamIn.aidl
. -
ITelephony.aidl
proporciona controles específicos para las funciones de telefonía. -
IBluetooth.aidl
proporciona controles BT SCO y HFP que estaban enIPrimaryModule
en la API HIDL. -
IConfig.aidl
proporciona parámetros de configuración para todo el sistema. -
ISoundDose.aidl
proporciona soporte de dosis sólida. Consulte Dosis de sonido para obtener más información. - La última versión de la API Core HAL en desarrollo se encuentra en
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - La última versión lanzada de Core HAL API se encuentra en
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Efectos HAL
Algunas de las interfaces clave de Effects HAL, utilizando AIDL, son las siguientes:
-
IFactory.aidl
es el punto de entrada a la API. -
Descriptor.aidl
contiene toda la información, como capacidades y atributos, para la implementación de un efecto. -
Capability.aidl
define capacidades de efectos que no cambian en tiempo de ejecución. -
Parameter.aidl
define todos los parámetros admitidos por la instancia del efecto. -
IEffect.aidl
se utiliza para configurar y controlar instancias de efectos particulares. Parcelables de efectos específicos que llevan el nombre del efecto.
La última versión de la API Effects HAL en desarrollo se encuentra en
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.La última versión lanzada de la API HAL de efectos se encuentra en
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Consulte Efectos de audio para obtener más información.
HAL común
Las estructuras de datos y las interfaces compartidas entre varios HAL, como BT HAL, núcleo y efectos, los HAL de audio se encuentran en el HAL común.
La última versión de Common AIDL HAL en desarrollo se encuentra en
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.La última versión lanzada de la API HAL común se encuentra en
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Tipos de datos estables comunes
Tanto los HAL como el marco utilizan definiciones de estructuras de datos estables.
La última versión de los tipos de datos estables en desarrollo se encuentra en
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.La última versión publicada de los tipos de datos estables se encuentra en
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Prueba de la API Audio AIDL HAL
Se proporcionan nuevas pruebas VTS para la interfaz AIDL.
No hay cambios en la nueva versión de HAL que puedan afectar la seguridad.