O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Implementação de Áudio

Esta página explica como implementar a camada de abstração de hardware (HAL) de áudio, fornece detalhes sobre a configuração de uma política de áudio (formatos de arquivo, organização de código, efeitos de pré-processamento) e descreve como configurar a biblioteca compartilhada (criando o arquivo Android.mk ).

Capacidades de áudio HAL

A versão do Android 10 inclui os seguintes novos recursos para HAL de áudio:

  • AudioSource
    • VOICE_PERFORMANCE
    • ECHO_REFERENCE
  • AudioFormat
    • AAC_LATM ( LC , HE V1 e V2 )
    • CELT
    • APTX_ADAPTIVE
    • LHDC
    • LHDC_LL
  • AudioChannelMask
    • OUT_HAPTIC_A
    • OUT_HAPTIC_B

Declare esses recursos HAL em audio_policy_configuration.xml , para que a estrutura possa usá-los.

Requisitos de HAL de áudio e subsistema

A versão do Android 10 inclui os seguintes requisitos para HAL de áudio e implementação de subsistema:

  • Se perfis de fluxo de entrada separados forem declarados em audio_policy_configuration.xml , deve ser possível ativá-los todos simultaneamente para qualquer seleção de dispositivo.
  • Se a captura para o acionador de som (captura do buffer DSP de hotword) for suportada por um perfil de entrada, a implementação deve oferecer suporte a um número de fluxos ativos neste perfil correspondente ao número de sessões simultâneas suportadas pelo acionador de som HAL.
  • Simultaneidade de detecção e captura de hotword DSP do AP.
  • Simultaneidade de TX de chamada de voz e captura do AP.

Implementando HAL de áudio

O HAL de áudio é composto pelas seguintes interfaces:

  • hardware/libhardware/include/hardware/audio.h representa as funções principais de um dispositivo de áudio.
  • hardware/libhardware/include/hardware/audio_effect.h representa os efeitos que podem ser aplicados ao áudio, como downmix, eco ou supressão de ruído.

Você deve implementar todas as interfaces.

O Android 11 apresenta uma aplicação mais rígida de implementações de HAL de gatilho de som em tempo de execução do que as versões anteriores.

Isso afeta as implementações das interfaces HIDL especificadas em //hardware/interfaces/soundtrigger/ .

As especificações dessas interfaces HAL não são específicas para:

  • Quando a implementação tem permissão para retornar códigos de erro de operações
  • Qual seria o estado resultante da implementação
  • Qual seria o procedimento de recuperação de erro esperado

Além disso, devido à natureza opaca do subsistema de acionamento de som, os testes VTS não fornecem uma cobertura significativa para esses cenários.

Para garantir um comportamento confiável e consistente entre as implementações de driver, no Android 11, estamos tratando todos os códigos de erro sem sucesso retornados do HAL como erros de programação e tentando recuperá-los reiniciando o processo HAL (e possivelmente outros processos). Esta é uma estratégia de recuperação de último recurso e a expectativa é que esses casos não ocorram em um sistema que funcione adequadamente.

Incentivamos fortemente os implementadores do HAL de gatilho de som a realizar testes rigorosos o mais rápido possível de cenários que podem resultar no retorno de códigos de erro e fornecer feedback sobre essa abordagem. Não esperamos nenhuma falha relacionada ao Treble / VTS devido a essa mudança, mas pode haver novas falhas relacionadas ao sistema, que você precisará resolver antecipadamente. No longo prazo, ele garante um comportamento mais confiável e consistente em todas as plataformas.

Arquivos de cabeçalho de áudio

Para obter uma referência das propriedades que você pode definir, consulte os arquivos de cabeçalho de áudio:

  • No Android 6.0 e superior, consulte system/media/audio/include/system/audio.h .
  • No Android 5.1 e inferior, consulte system/core/include/system/audio.h .

Para obter um exemplo, consulte a implementação do Galaxy Nexus em device/samsung/tuna/audio .

Próximos passos

Além de implementar o HAL de áudio, você também deve criar um arquivo de configuração de política de áudio que descreva sua topologia de áudio e empacote a implementação de HAL em uma biblioteca compartilhada . Você também pode configurar efeitos de pré-processamento , como controle automático de ganho e supressão de ruído.