A partir do Android 14, a interface Audio HAL é definida usando Stable AIDL . Os parceiros e fornecedores de SoC são incentivados a reimplementar seu HAL de áudio para fornecer uma interface AIDL.
A extensão da biblioteca libaudiohal
adiciona suporte de estrutura para AIDL HAL. Com a implementação do AIDL, a especificação de configuração da política de áudio é movida para AIDL HAL. Com essa alteração, o Audio Policy Manager (APM) obtém a configuração do HAL em vez de consumi-la do arquivo XML fornecido pelo fornecedor.
API AIDL HAL de áudio
Esta seção descreve as APIs Core, Effects e Common HAL para AIDL.
Use a implementação padrão da API AIDL em /hardware/interfaces/audio/aidl/default/
como referência ao implementar novas versões de HALs de áudio que interagem com drivers de kernel.
Consulte o arquivo README de Audio HAL para obter a estrutura de diretórios de Audio HAL para AIDL.
Núcleo HAL
Algumas das principais interfaces do Core HAL , usando AIDL, são as seguintes:
-
IModule.aidl
é o ponto de entrada na API. - Os fluxos são unidirecionais e são usados pelo AudioFlinger para enviar ou receber áudio de e para o HAL por meio de
IStreamOut.aidl
eIStreamIn.aidl
. -
ITelephony.aidl
fornece controles específicos para funções de telefonia. -
IBluetooth.aidl
fornece controles BT SCO e HFP que estavam emIPrimaryModule
na API HIDL. -
IConfig.aidl
fornece parâmetros de configuração para todo o sistema. -
ISoundDose.aidl
fornece suporte para dose sonora. Consulte Dose sonora para obter mais informações. - A versão mais recente da API Core HAL em desenvolvimento está em
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - A versão mais recente lançada da API Core HAL está em
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Efeitos HAL
Algumas das principais interfaces do Effects HAL, usando AIDL, são as seguintes:
-
IFactory.aidl
é o ponto de entrada na API. -
Descriptor.aidl
contém todas as informações, como capacidades e atributos para uma implementação de efeito. -
Capability.aidl
define capacidades de efeito que não mudam em tempo de execução. -
Parameter.aidl
define todos os parâmetros suportados pela instância do efeito. -
IEffect.aidl
é usado para configurar e controlar instâncias de efeitos específicos. Parceláveis específicos do efeito nomeados após o efeito.
A versão mais recente da API Effects HAL em desenvolvimento está em
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.A versão mais recente lançada da API Effects HAL está em
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Consulte os Efeitos de Áudio para obter mais informações.
HAL comum
Estruturas de dados e interfaces compartilhadas entre vários HALs, como BT HAL, núcleo e efeitos de áudio HALs estão no Common HAL.
A versão mais recente do Common AIDL HAL em desenvolvimento está em
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.A versão mais recente lançada da API Common HAL está em
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Tipos de dados estáveis comuns
Definições de estruturas de dados estáveis são usadas tanto pelos HALs quanto pela estrutura.
A versão mais recente dos tipos de dados estáveis em desenvolvimento está em
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.A versão mais recente lançada dos tipos de dados estáveis está em
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Testando a API Audio AIDL HAL
Novos testes VTS são fornecidos para a interface AIDL.
Não há alterações na nova versão do HAL que possam afetar a segurança.