Android 14 proporciona API para desarrolladores que las aplicaciones pueden usar para consultar y configurar los atributos preferidos del mezclador para la reproducción de audio USB. Estos atributos preferidos del mezclador mejoran la experiencia de reproducción de audio USB al permitir que las aplicaciones establezcan el formato de audio, la máscara del canal, la frecuencia de muestreo y el comportamiento del mezclador. Con el uso de las API de mezclador preferidas en dispositivos USB compatibles, los usuarios pueden obtener reproducción de audio con menor latencia y contenido de audio de mayor resolución.
Esta característica también brinda soporte para el comportamiento opcional del mezclador de reproducción de bits perfectos para dispositivos USB. El modo de bits perfectos permite la reproducción de formatos de calidad maestra autenticada (MQA) y de transmisión directa digital (DSD) en convertidores digitales a analógicos (DAC) compatibles.
Interfaz
Audio Policy Manager maneja los atributos del mezclador en el marco. 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 canal y la frecuencia de muestreo del mezclador. De forma predeterminada, el marco determina el comportamiento del mezclador, que mezcla todas las fuentes de audio y aplica control de volumen y efectos.
Si el comportamiento del mezclador utiliza el modo BIT_PERFECT
, el sistema envía el contenido de audio sin modificaciones a través del marco de audio, HAL y, opcionalmente, 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 escala o mezcla de volumen puede destruir el significado de los datos.
Cuando las aplicaciones configuran atributos del mezclador, el marco vuelve a abrir el flujo de salida con nuevos atributos, si es necesario. La siguiente figura muestra la interfaz entre la aplicación, el marco y HAL cuando se configuran los atributos del mezclador:
Figura 1. Interfaz entre la aplicación, el marco y HAL.
Implementación
La implementación de atributos de mezclador preferidos, distintos del atributo BIT_PERFECT
, para audio USB es obligatoria para 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ámica, de la siguiente manera:
Defina el puerto de mezcla dinámica en
usb_audio_policy_configuration.xml
.Declare la capacidad de enrutar dispositivos USB a puertos de mezcla dinámica ya sea en la configuración de la política de audio o en los métodos AIDL
getAudioPorts
ygetAudioRoutes
.
Consulte la implementación de referencia para HAL de audio USB en hardware/libhardware/modules/usbaudio
. Vea un ejemplo de un puerto de mezcla dinámica en frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml
.
Atributo de reproducción de bits perfectos
El atributo de reproducción de bits perfectos es opcional y solo se admite en la implementación AIDL de Audio HAL. Para admitir la reproducción con bits perfectos, los proveedores deben agregar el indicador de salida con bits perfectos AUDIO_OUTPUT_FLAG_BIT_PERFECT
al puerto de mezcla dinámica que se puede enrutar al dispositivo USB.
El siguiente ejemplo de código muestra el uso del indicador 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 frecuencia de muestreo o efectos de procesamiento de audio y no debe mezclarse en el DSP. En este caso, el hardware controla el volumen ya que el marco no proporciona ningún control de volumen de software.
Validación
Ejecute las pruebas CTS en PreferredMixerAttributesTestActivity.java
para validar la compatibilidad con los atributos de mezclador preferidos para dispositivos USB.
Para validar la implementación del atributo BIT_PERFECT
, utilice DAC USB que admitan formatos de audio MQA y DSD sobre modulación de código de pulso (PCM).