Atributos de mixer preferidos em dispositivos USB

O Android 14 oferece APIs para desenvolvedores que os aplicativos podem usar para consultar e configurar os atributos preferidos de mixer para USB a reprodução de áudio. Estes atributos preferidos de mixer melhoram a experiência de reprodução de áudio USB permitindo que os apps definam o formato do áudio, máscara de canal, taxa de amostragem e comportamento do mixer. Com o uso do modelo APIs de mixer em dispositivos USB compatíveis, os usuários podem ter uma reprodução de áudio com menor latência e conteúdo de áudio de alta resolução.

Este recurso também é compatível com o mixer de reprodução opcional. para dispositivos USB. O modo perfeito ativa a reprodução do master formatos autenticados de qualidade (MQA) e digitais de stream direto (DSD) no conversores digitais para analógicos (DACs) compatíveis.

Interface

O Gerenciador de políticas de áudio lida com os atributos do mixer no framework. A AudioMixerAttributes representa os atributos do mixer. A classe AudioMixerAttributes inclui uma AudioFormat que descreve o formato dos dados de áudio, a máscara de canal e a taxa de amostragem batedor. Por padrão, o framework determina o comportamento do mixer, o que mistura em todas as fontes de áudio e aplica o controle e os efeitos de volume.

Se o comportamento do mixer usar o modo BIT_PERFECT, o sistema enviará o áudio sem modificação por meio da estrutura de áudio, HAL e, opcionalmente, um processador de sinal digital (DSP), desde a API até o dispositivo USB. A O modo BIT_PERFECT aceita formatos codificados, como MQA ou DSD, em que qualquer o escalonamento ou a mistura de volume pode destruir o significado dos dados.

Quando os apps configuram os atributos do mixer, o framework reabre o stream de saída. com novos atributos, se necessário. A figura a seguir mostra a interface entre o app, o framework e a HAL quando os atributos do mixer estiverem definidos:

mixer-preferencial

Figura 1. Interface entre o app, o framework e a HAL.

Implementação

Implementação de atributos preferidos de mixer, além de BIT_PERFECT , para áudio USB, é obrigatório para o Android 14.

Atributos preferidos de mixer

Para oferecer suporte aos atributos preferidos de mixer, os fornecedores precisam permitir o roteamento de dispositivos USB para a porta do mix dinâmico, da seguinte maneira:

  1. Defina a porta do mix dinâmico no usb_audio_policy_configuration.xml.

  2. Declare a capacidade de rotear dispositivos USB para portas de mix dinâmico em configuração da política de áudio ou nos métodos AIDL getAudioPorts e getAudioRoutes.

.

Consulte a implementação de referência para a HAL de áudio USB em hardware/libhardware/modules/usbaudio. Confira um exemplo de porta de mix dinâmico em frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml.

Atributo de reprodução quase perfeito

O atributo de reprodução "bit perfeito" é opcional e só é compatível com a AIDL implementação da HAL de áudio. Para oferecer suporte à reprodução perfeita, os fornecedores precisam adicione a flag de saída perfeita AUDIO_OUTPUT_FLAG_BIT_PERFECT ao que possa ser roteada para o dispositivo USB.

O exemplo de código a seguir mostra o uso do AUDIO_OUTPUT_FLAG_BIT_PERFECT em usb_audio_policy_configuration.xml:

<module name="usb" halVersion="2.0">
    <mixPorts>
        <mixPort name="hifi_output"
                 role="source" flags="AUDIO_OUTPUT_FLAG_BIT_PERFECT">
        </mixPort>
    </mixPorts>
    <devicePorts>
        <devicePort tagName="USB Device Out"
                    type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
        </devicePort>
    </devicePorts>
    <routes>
        <route type="mix" sink="USB Device Out"
               sources="hifi_output"/>
    </routes>
</module>

Se o atributo de reprodução quase perfeito for especificado, a HAL precisará garantir que o o stream de áudio é enviado ao dispositivo USB sem qualquer modificação, ou seja, o stream de áudio não pode ter escala de volume, conversão de taxa de amostragem ou áudio e não podem ser misturados na DSP. Nesse caso, o hardware controla o volume, pois o framework não fornece qualquer controle de volume de software.

Validação

Execute os testes CTS em PreferredMixerAttributesTestActivity.java para validar a compatibilidade com atributos preferidos de mixer para dispositivos USB.

Para validar a implementação do atributo BIT_PERFECT, use DACs USB que: oferecem suporte a formatos de áudio MQA e DSD sobre modulação de código de pulso (PCM).