Atributos de mixer preferidos em dispositivos USB

O Android 14 fornece APIs de desenvolvedor que os aplicativos podem usar para consultar e configurar atributos preferenciais do mixer para reprodução de áudio USB. Esses atributos preferenciais do mixer melhoram a experiência de reprodução de áudio USB, permitindo que os aplicativos definam o formato de áudio, a máscara do canal, a taxa de amostragem e o comportamento do mixer. Com o uso das APIs de mixagem preferidas em dispositivos USB suportados, os usuários podem obter reprodução de áudio com menor latência e conteúdo de áudio com maior resolução.

Este recurso também fornece suporte para o comportamento opcional do mixer de reprodução perfeito para dispositivos USB. O modo bit perfeito permite a reprodução de formatos autenticados com qualidade master (MQA) e digital de fluxo direto (DSD) em conversores digital para analógico (DACs) compatíveis.

Interface

O Audio Policy Manager lida com os atributos do mixer na estrutura. A classe AudioMixerAttributes representa os atributos do mixer. A classe AudioMixerAttributes inclui um objeto AudioFormat que descreve o formato dos dados de áudio, a máscara do canal e a taxa de amostragem do mixer. Por padrão, a estrutura determina o comportamento do mixer, que mistura todas as fontes de áudio e aplica controle de volume e efeitos.

Se o comportamento do mixer usar o modo BIT_PERFECT , o sistema enviará o conteúdo de áudio sem modificação através da estrutura de áudio, HAL e, opcionalmente, do processador de sinal digital (DSP), da API até o dispositivo USB. O modo BIT_PERFECT suporta formatos codificados, como MQA ou DSD, nos quais qualquer dimensionamento ou mixagem de volume pode destruir o significado dos dados.

Quando os aplicativos configuram atributos do mixer, a estrutura reabre o fluxo de saída com novos atributos, se necessário. A figura a seguir mostra a interface entre o aplicativo, a estrutura e o HAL quando os atributos do mixer são definidos:

preferred-mixer-attr

Figura 1. Interface entre app, framework e HAL.

Implementação

A implementação de atributos de mixer preferenciais, além do atributo BIT_PERFECT , para áudio USB é obrigatória para Android 14.

Atributos preferidos do mixer

Para oferecer suporte aos atributos preferenciais do mixer, os fornecedores devem oferecer suporte ao roteamento de dispositivos USB para a porta de mixagem dinâmica, como segue:

  1. Defina a porta de mixagem dinâmica em usb_audio_policy_configuration.xml .

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

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

Atributo de reprodução perfeito

O atributo de reprodução bit-perfect é opcional e é suportado apenas na implementação AIDL do Audio HAL. Para oferecer suporte à reprodução perfeita, os fornecedores devem adicionar o sinalizador de saída perfeita AUDIO_OUTPUT_FLAG_BIT_PERFECT à porta de mixagem dinâmica que pode ser roteada para o dispositivo USB.

O exemplo de código a seguir mostra o uso do sinalizador 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 bit-perfect for especificado, o HAL deve garantir que o fluxo de áudio seja enviado para o dispositivo USB sem qualquer modificação, ou seja, o fluxo de áudio não deve ter qualquer escala de volume, conversão de taxa de amostragem ou efeitos de processamento de áudio e não deve ser misturado no DSP. Nesse caso, o hardware controla o volume, pois a estrutura não fornece nenhum controle de volume por software.

Validação

Execute os testes CTS em PreferredMixerAttributesTestActivity.java para validar o suporte para atributos de mixer preferenciais para dispositivos USB.

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