Android 14 proporciona APIs de desarrollador que las apps pueden usar 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 frecuencia 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 bit-perfect para dispositivos USB. El modo bit-perfect permite la reproducción de formatos de calidad maestra autenticada (MQA) y de transmisión digital directa (DSD) en convertidores de digital a analógico (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 frecuencia de muestreo del mezclador. De forma predeterminada, el framework determina el comportamiento del mezclador, que mezcla todas las fuentes de audio y aplica el control de volumen y los efectos.
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, la HAL y, de manera opcional, el procesador de señales digitales (DSP), desde la API hasta el dispositivo USB. El modo BIT_PERFECT
admite formatos codificados, como MQA o DSD, en los que cualquier ajuste 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 la HAL cuando se configuran los atributos del mezclador:
Figura 1: Interfaz entre la app, el framework y la HAL.
Implementación
La implementación de atributos preferidos del mezclador, además del atributo BIT_PERFECT
, para el audio por 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 mezcla dinámico, de la siguiente manera:
Define el puerto de combinación dinámico en
usb_audio_policy_configuration.xml
.Declara la capacidad de enrutar dispositivos USB a puertos de mezcla dinámicos en la configuración de la política de audio o en los métodos
getAudioPorts
ygetAudioRoutes
de AIDL.
Consulta la implementación de referencia para el 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 bit a bit perfecta
El atributo de reproducción bit a bit es opcional y solo se admite en la implementación de AIDL del HAL de audio. Para admitir la reproducción bit a bit perfecta, los proveedores deben agregar la marca de salida bit a bit perfecta AUDIO_OUTPUT_FLAG_BIT_PERFECT
al puerto de mezcla dinámico que se puede enrutar al dispositivo USB.
En el siguiente ejemplo 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 bit a bit perfecta, la HAL debe garantizar que el flujo de audio se envíe al dispositivo USB sin ninguna modificación, es decir, el flujo de audio no debe tener ningún efecto de ajuste de volumen, conversión de frecuencia de muestreo o 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).