No Android 16 e versões mais recentes, a interface da HAL de áudio da AIDL oferece suporte total à política de áudio configurável (CAP, na sigla em inglês).
Esta página fornece o plano de fundo técnico necessário para ajudar parceiros e fornecedores de SoC na migração das configurações de política de áudio.
Framework de parâmetros
A implementação da CAP é baseada no framework de parâmetros da Intel. A CAP foi introduzida 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 da CAP no HIDL
No HIDL, toda a configuração da 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 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 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 da HAL do HIDL tinha um esquema XSD correspondente. As versões principais não exigiam compatibilidade com versões anteriores.
Estrutura da 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 da 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 para os esquemas. Portanto, a configuração que era definida anteriormente em arquivos XML agora precisa ser fornecida pela HAL usando APIs AIDL. Para facilitar isso, a estrutura da configuração da CAP é convertida para AIDL, semelhante aos XMLs de configuração de política de áudio na HAL de áudio da AIDL para Android 15.
As estruturas de dados da CAP são adicionadas a Tipos de dados estáveis comuns e incluem os seguintes parceláveis:
AudioHalCapConfiguration.aidlAudioHalCapCriterionV2.aidlAudioHalCapDomain.aidlAudioHalCapParameter.aidlAudioHalCapRule.aidl
O ponto de entrada para a configuração da CAP está na
AudioHalEngineConfig.CapSpecificConfig
estrutura. Consulte os comentários em
AudioHalCapConfiguration.aidl
para ver um diagrama das estruturas de dados da CAP.
A implementação padrão da HAL da AIDL contém uma classe auxiliar que preenche os parceláveis da AIDL com base no conteúdo dos arquivos XML da CAP legada para simplificar a migração para parceiros.
Cenários de migração
Os parceiros podem considerar as opções listadas nesta seção, com base no fato de ser o primeiro lançamento de um produto que não usava a CAP antes ou a migração de um produto atual.
Novo produto
Para um novo produto que começa a usar a CAP para implementação de política de áudio, o OEM pode usar XML para armazenar a configuração da 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 a partir de uma descrição de alto nível.
Se o OEM decidir usar XML para armazenar a configuração da CAP na partição do fornecedor, recomendamos usar a implementação padrão do analisador XML para converter a configuração em AIDL.
Atualização para um produto atual
Se o produto já usa a CAP e, portanto, tem a configuração XML, você pode continuar usando a CAP atual com a versão AIDL da HAL.
A convenção de nomenclatura para estratégias de produtos difere nas versões HIDL e AIDL da configuração da CAP. No HIDL, as estratégias integradas ("legadas")
usavam nomes curtos em letras minúsculas, como media enquanto no AIDL, as estratégias integradas
usam nomes em letras maiúsculas com o 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 vx_10xx com números de 1000 a 1039.
Produto legado
Se o produto que depende da 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 permanece compatível com a configuração da CAP legada.
Implementação de exemplo
Para ajudar os parceiros a implementar a CAP nas plataformas, a AOSP tem um exemplo de dispositivo virtual Cuttlefish "automotivo" que usa a CAP com a HAL da 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 do fornecedor da CAP.