Atributos preferidos del mezclador en dispositivos USB

Android 14 ofrece APIs para desarrolladores que pueden usarse en apps para consultar y configurar los atributos preferidos del mezclador para la reproducción de audio por USB. Estos atributos preferidos del mezclador mejoran la experiencia de reproducción de audio USB, ya que permiten que las apps establezcan el formato de audio, la máscara de canales, la tasa de muestreo y el comportamiento del mezclador. Con el uso de las APIs de mezclador preferidas en dispositivos USB compatibles, los usuarios pueden obtener una reproducción de audio con menor latencia y contenido de audio de mayor resolución.

Esta función también admite el comportamiento opcional del mezclador de reproducción de bits perfectos para dispositivos USB. El modo bit-perfect habilita la reproducción de formatos de calidad maestra autenticada (MQA) y de transmisión digital directa (DSD) en convertidores digitales a analógicos (DAC) compatibles.

Interfaz

El Administrador de políticas de audio controla los atributos del mezclador en el framework. La clase AudioMixerAttributes representa los atributos del mezclador. La clase AudioMixerAttributes incluye un objeto AudioFormat que describe el formato de datos de audio, la máscara de canales y la tasa de muestreo del mezclador. De forma predeterminada, el framework determina el comportamiento del mezclador, que combina todas las fuentes de audio y aplica efectos y control de volumen.

Si el comportamiento del mezclador usa el modo BIT_PERFECT, el sistema envía el contenido de audio sin modificaciones a través del framework de audio, HAL y, de manera opcional, el procesador de señal digital (DSP), desde la API hasta el dispositivo USB. El modo BIT_PERFECT admite formatos codificados, como MQA o DSD, en los que cualquier escalamiento o mezcla de volumen puede destruir el significado de los datos.

Cuando las apps configuran atributos del mezclador, el framework vuelve a abrir el flujo de salida con atributos nuevos, si es necesario. En la siguiente figura, se muestra la interfaz entre la app, el framework y el HAL cuando se configuran los atributos del mezclador:

preferred-mixer-attr

Figura 1: Interfaz entre la app, el framework y el HAL.

Implementación

La implementación de atributos preferidos del mezclador, además del atributo BIT_PERFECT, para el audio USB es obligatoria en Android 14.

Atributos preferidos del mezclador

Para admitir los atributos preferidos del mezclador, los proveedores deben admitir el enrutamiento de dispositivos USB al puerto de combinación dinámico de la siguiente manera:

  1. Define el puerto de combinación dinámico en usb_audio_policy_configuration.xml.

  2. Declara la capacidad de enrutar dispositivos USB a puertos de combinación dinámicos, ya sea en la configuración de la política de audio o en los métodos AIDL getAudioPorts y getAudioRoutes.

Consulta la implementación de referencia del HAL de audio USB en hardware/libhardware/modules/usbaudio. Consulta un ejemplo de un puerto de combinación dinámico en frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml.

Atributo de reproducción sin errores

El atributo de reproducción de bits perfectos es opcional y solo se admite en la implementación de AIDL del HAL de audio. Para admitir la reproducción bit a bit, los proveedores deben agregar la marca de salida bit a bit AUDIO_OUTPUT_FLAG_BIT_PERFECT al puerto de combinación dinámico que se puede enrutar al dispositivo USB.

En la siguiente muestra de código, se muestra el uso de la marca AUDIO_OUTPUT_FLAG_BIT_PERFECT en 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>

Si se especifica el atributo de reproducción de bits perfectos, el HAL debe garantizar que la transmisión de audio se envíe al dispositivo USB sin ninguna modificación, es decir, la transmisión de audio no debe tener ninguna escala de volumen, conversión de tasa de muestreo ni efectos de procesamiento de audio, y no debe mezclarse en el DSP. En este caso, el hardware controla el volumen, ya que el framework no proporciona ningún control de volumen de software.

Validación

Ejecuta las pruebas de CTS en PreferredMixerAttributesTestActivity.java para validar la compatibilidad con los atributos preferidos del mezclador para dispositivos USB.

Para validar la implementación del atributo BIT_PERFECT, usa DAC USB que admitan MQA y DSD a través de formatos de audio de modulación por impulsos codificados (PCM).