Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Audio HAL

La capa de abstracción de hardware de audio (HAL) de Android conecta las API de marco específicas de audio de nivel superior en android.media con los controladores de audio y el hardware subyacentes. Audio HAL define la interfaz estándar a la que llaman los servicios de audio. Debe implementarse para que el hardware de audio funcione correctamente.

Esta página ofrece una descripción general de la HAL de audio y proporciona detalles de su API y los requisitos de implementación.

Interfaz de audio HAL

La interfaz de audio HAL se define utilizando HIDL en archivos .hal y esquemas XSD para los archivos de configuración, que se muestran a continuación:

audio_hal

Figura 1: Interfaz de audio HAL

Archivos de configuración

Los archivos de configuración XML de políticas de audio y efectos de audio se consideran parte de la interfaz Audio HAL. Estos archivos deben ajustarse a sus esquemas y la conformidad se verifica mediante pruebas de VTS.

Como parte de la implementación de la HAL de audio, debe crear un archivo de configuración de política de audio que describa la topología de audio. Las capacidades de audio HAL deben declararse en el archivo audio_policy_configuration.xml para que el marco las utilice.

API de audio HAL

El audio HAL contiene las siguientes API:

  • Core HAL
  • Efectos HAL
  • HAL común

Cada una de estas API se describe en las siguientes secciones.

Core HAL

El Core HAL es la API principal utilizada por AudioFlinger para reproducir audio y controlar el enrutamiento de audio. Algunas de las interfaces clave son las siguientes:

  • IDeviceFactory.hal es el punto de entrada a la API.
  • IDevice.hal e IPrimaryDevice.hal contienen métodos como setMasterVolume o openInputStream .
  • Las transmisiones son unidireccionales y AudioFlinger las utiliza para enviar o recibir audio hacia y desde HAL a través de IStream.hal , IStreamOut.hal e IStreamIn.hal .

La siguiente tabla enumera la ubicación de los componentes básicos de HAL útiles:

Componente principal de HAL Localización
Última versión de API /hardware/interfaces/audio/6.0
Tipos específicos de la última API Core HAL /hardware/interfaces/audio/6.0/types.hal
Esquema XSD del archivo de configuración de la política de audio /hardware/interfaces/audio/6.0/config/audio_policy_configuration.xsd

La implementación predeterminada de la API Core HAL ( /hardware/interfaces/audio/core/all-versions/default/ ) es una envoltura alrededor de la implementación de HAL anterior a Treble utilizando bibliotecas compartidas heredadas . La implementación predeterminada también se puede considerar como una referencia al implementar nuevas versiones de HAL de audio que interactúan directamente con los controladores del kernel.

Efectos HAL

El marco de efectos utiliza la API de HAL de efectos para controlar los efectos de audio. También puede configurar efectos de preprocesamiento como el control automático de ganancia y la supresión de ruido a través de la API de efectos HAL.

La siguiente tabla enumera la ubicación de los componentes de efectos útiles de HAL:

Efectos componente HAL Localización
Última versión de API /hardware/interfaces/audio/effect/6.0/
Esquema XSD del archivo de configuración de efectos /hardware/interfaces/audio/effect/6.0/xml/audio_effects_conf.xsd

Para obtener más información, consulte una implementación de muestra de la API de efectos ( /hardware/interfaces/audio/effect/all-versions/default/ ) y la sección Efectos de audio .

HAL común

Common HAL es una biblioteca de tipos de datos comunes que utilizan las API de HAL Core y Effects. No tiene interfaces y contiene lo siguiente:

  • Definiciones ( /hardware/interfaces/audio/common/6.0/types.hal ) compartidas por las API Core y Effect.
  • Utilidades ( /hardware/interfaces/audio/common/all-versions ) que se utilizan para ayudar a codificar contra API HIDL para implementaciones, clientes y pruebas.

Requisitos

Además de implementar la HAL de audio y crear el archivo de configuración de la política de audio, se deben cumplir los siguientes requisitos de HAL:

  • Si la captura para Sound Trigger (captura desde el búfer DSP de palabra activa) es compatible con un perfil de entrada, la implementación debe admitir el número de transmisiones activas en este perfil correspondiente al número de sesiones simultáneas admitidas por Sound Trigger HAL.
  • Concurrencia de la llamada de voz TX y captura desde el procesador de la aplicación como se detalla en la página Captura concurrente .

Información de versión

La siguiente tabla enumera el número de versión de HAL para cada versión de Android.

versión de Android Versión HAL
Android 11 6.0
Android 10 5,0
Android 9 4.0
Android 8 2.0