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:
AudioHalCapConfiguration.aidl
AudioHalCapCriterionV2.aidl
AudioHalCapDomain.aidl
AudioHalCapParameter.aidl
AudioHalCapRule.aidl
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.