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 embasamento técnico necessário para ajudar parceiros e fornecedores de SoC na migração das configurações de política de áudio.

O framework de parâmetros

A implementação do CAP é baseada no Intel Parameter Framework (link em inglês). O CAP foi introduzido no Android 6. O framework de parâmetros (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 mudar os parâmetros de acordo com os critérios atuais.

Estrutura de CAP em HIDL

Em HIDL, toda a configuração do CAP foi especificada em XML. Consulte Estrutura de parâmetros e Configuração usando a estrutura 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 para o 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 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 da 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 AIDL, as versões da API HAL precisam manter a compatibilidade com versões anteriores (em termos de HIDL, cada versão da HAL AIDL é uma atualização "secundária"). 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 dos esquemas. Portanto, a configuração que antes era definida em arquivos XML agora precisa ser fornecida pela HAL usando APIs AIDL. Para facilitar isso, a estrutura da configuração do CAP é convertida em AIDL, semelhante aos XMLs de configuração da política de áudio no AIDL Audio HAL para o Android 15.

As estruturas de dados para o CAP são adicionadas a Tipos de dados estáveis comuns e incluem os seguintes parcelables:

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

A implementação padrão da HAL do AIDL contém uma classe auxiliar que preenche os parcelables do AIDL com base no conteúdo dos arquivos XML do CAP legados para simplificar a migração para 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 atual.

Novo produto

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

O benefício de usar XML é que há um conjunto de ferramentas de script que facilitam a geração da configuração com base em 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 um produto existente

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 produtos difere nas versões HIDL e AIDL da configuração do CAP. No HIDL, as estratégias integradas ("legadas") usavam nomes curtos em minúsculas, como media. Já no AIDL, as estratégias integradas usam nomes em maiúsculas prefixados com 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 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, você poderá atualizar a partição do sistema para o Android 16. O framework continua compatível com a configuração legada do CAP.

Exemplo de implementação

Para ajudar os parceiros a implementar o CAP nas plataformas deles, o AOSP tem um exemplo de variante "automotiva" do dispositivo virtual Cuttlefish que usa o CAP com AIDL HAL. 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 do fornecedor de CAP.