Suporte à política de áudio configurável no HAL AIDL

A partir do Android 16, a interface da HAL de áudio AIDL oferece suporte total à política de áudio configurável (CAP, na sigla em inglês).

Esta página fornece o contexto técnico necessário para ajudar parceiros e fornecedores de SoC na migração das configurações de políticas de áudio.

O framework de parâmetros

A implementação do CAP é baseada no Framework de parâmetros da Intel. O CAP foi introduzido no Android 6. O parâmetro framework (PfW, na sigla em inglês) permite descrever um sistema em termos de parâmetros. Ao usar um arquivo XML de configuração, o PfW vincula os parâmetros a ações usando plug-ins e fornece regras para alterar os parâmetros de acordo com os critérios atuais.

Estrutura de CAP em HIDL

No HIDL, toda a configuração do CAP foi especificada em XML. Consulte Framework de parâmetros e Configuração usando o framework de parâmetros para mais informações. Os arquivos XML foram usados para especificar o seguinte:

  • Descrição da estrutura dos parâmetros, ou seja, a descrição do domínio de áudio do PfW
  • Definições de critérios
  • Regras para estratégias de roteamento (seleção de dispositivos de entrada e saída)
  • Especificação das tabelas de volume

Com o HIDL, o framework do Android conseguiu carregar esses arquivos XML diretamente da partição do fornecedor. Isso foi permitido porque um esquema XSD foi definido, como parte da API HAL, para esses arquivos XML. Cada versão principal do HAL do HIDL tinha um esquema XSD correspondente. As versões principais não exigiam compatibilidade com versões anteriores.

Estrutura do CAP na AIDL

Com a transição para a AIDL, as versões da API HAL precisam permanecer compatíveis com versões anteriores (em termos de HIDL, cada versão da HAL AIDL é uma atualização "menor"). Os esquemas XSD não podem mais ser usados como parte das APIs HAL, porque não há uma maneira estabelecida de definir atualizações compatíveis com versões anteriores para os esquemas. Portanto, a configuração que foi definida anteriormente em arquivos XML agora precisa ser fornecida pelo HAL usando APIs AIDL. Para facilitar isso, a estrutura da configuração do CAP é convertida em AIDL, semelhante aos XMLs de configuração de política de áudio no HAL de áudio AIDL para o Android 15.

As estruturas de dados do CAP são adicionadas aos tipos de dados estáveis comuns e incluem os seguintes parceláveis:

O ponto de entrada para a configuração do CAP está na estrutura AudioHalEngineConfig.CapSpecificConfig. Consulte os comentários em AudioHalCapConfiguration.aidl para conferir um diagrama das estruturas de dados do CAP.

A implementação padrão do HAL da AIDL contém uma classe auxiliar que preenche os parceláveis da AIDL com base no conteúdo de arquivos XML CAP legados para simplificar a migração para os parceiros.

Cenários de migração

Os parceiros podem considerar as opções listadas nesta seção, dependendo se é o primeiro lançamento de um produto que não usava o CAP antes ou a migração de um produto existente.

Novo produto

Para um novo produto que começa a usar o CAP para implementação de política de áudio, o OEM pode optar por usar o XML para armazenar a configuração do CAP no lado do fornecedor.

O benefício do uso do XML é que existe um conjunto de ferramentas de script que facilitam a geração da configuração a partir de uma descrição de alto nível.

Se o OEM decidir usar XML para armazenar a configuração do CAP na partição do fornecedor, é recomendável usar a implementação padrão do analisador XML para converter a configuração em AIDL.

Atualização para produtos atuais

Se o produto já usa o CAP e, portanto, tem a configuração XML, você pode continuar usando o CAP atual com a versão AIDL do HAL.

A convenção de nomenclatura para estratégias de produto é diferente nas versões HIDL e AIDL da configuração do CAP. No HIDL, as estratégias integradas ("legado") usavam nomes curtos em letras minúsculas, como media, enquanto na AIDL, as estratégias integradas usam nomes em letras maiúsculas com prefixo STRATEGY_, por exemplo, STRATEGY_MEDIA. Consulte a lista de estratégias integradas em CapProductStrategies.xml. O mesmo arquivo define IDs "pré-alocados" para estratégias específicas do OEM que seguem o padrão de nomenclatura de vx_10xx com números de 1000 a 1039.

Produto legado

Se o produto que depende do CAP não atualizar a partição do fornecedor e permanecer no HIDL, será possível atualizar a partição do sistema para o Android 16. O framework continua compatível com a configuração CAP legada.

Exemplo de implementação

Para ajudar os parceiros a implementar o CAP nas plataformas, o AOSP tem um exemplo de versão "automotiva" do dispositivo virtual Cuttlefish, que usa o CAP com o HAL AIDL. A configuração específica do dispositivo está localizada em device/google/cuttlefish/shared/auto/audio/policy/engine, com o nome de destino lunch de aosp_cf_x86_64_auto. O arquivo Android.bp pode ser usado como referência para gerar o conjunto completo de arquivos de fornecedor do CAP.