Предпочтительные атрибуты микшера на USB-устройствах

Android 14 предоставляет API-интерфейсы для разработчиков , которые приложения могут использовать для запроса и настройки предпочтительных атрибутов микшера для воспроизведения звука через USB. Эти предпочтительные атрибуты микшера улучшают качество воспроизведения звука через USB, позволяя приложениям устанавливать аудиоформат, маску канала, частоту дискретизации и поведение микшера. Используя предпочтительные API-интерфейсы микшера на поддерживаемых USB-устройствах, пользователи могут получить воспроизведение звука с меньшей задержкой и аудиоконтент с более высоким разрешением.

Эта функция также обеспечивает поддержку дополнительного побитового микшера воспроизведения для USB-устройств. Режим Bit-Perfect позволяет воспроизводить форматы с аутентифицированным качеством (MQA) и прямым потоком цифровых данных (DSD) на совместимых цифро-аналоговых преобразователях (DAC).

Интерфейс

Диспетчер политики аудио обрабатывает атрибуты микшера в рамках. Класс AudioMixerAttributes представляет атрибуты микшера. Класс AudioMixerAttributes включает объект AudioFormat , который описывает формат аудиоданных, маску канала и частоту дискретизации для микшера. По умолчанию платформа определяет поведение микшера, который микширует все источники звука и применяет регулировку громкости и эффекты.

Если поведение микшера использует режим BIT_PERFECT , система отправляет аудиоконтент без изменений через аудиоинфраструктуру, HAL и, опционально, цифровой сигнальный процессор (DSP) из API на USB-устройство. Режим BIT_PERFECT поддерживает закодированные форматы, такие как MQA или DSD, в которых любое масштабирование или смешивание объема может разрушить смысл данных.

Когда приложения настраивают атрибуты микшера, платформа при необходимости повторно открывает выходной поток с новыми атрибутами. На следующем рисунке показан интерфейс между приложением, платформой и HAL, когда установлены атрибуты микшера:

preferred-mixer-attr

Рисунок 1. Интерфейс между приложением, платформой и HAL.

Выполнение

Реализация предпочтительных атрибутов микшера, отличных от атрибута BIT_PERFECT , для USB-аудио является обязательной для Android 14.

Предпочтительные атрибуты микшера

Для поддержки предпочтительных атрибутов микшера поставщики должны поддерживать маршрутизацию USB-устройств к порту динамического микшера следующим образом:

  1. Определите порт динамического микширования в usb_audio_policy_configuration.xml .

  2. Объявите возможность маршрутизации USB-устройств к портам динамического микширования либо в конфигурации аудиополитики , либо в методах AIDL getAudioPorts и getAudioRoutes .

См. эталонную реализацию USB-аудио HAL в hardware/libhardware/modules/usbaudio . См. пример порта динамического микширования в frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml .

Атрибут идеального воспроизведения

Атрибут идеального воспроизведения является необязательным и поддерживается только в AIDL-реализации Audio HAL. Чтобы поддерживать побитовое воспроизведение, поставщики должны добавить выходной флаг побитового AUDIO_OUTPUT_FLAG_BIT_PERFECT к порту динамического микширования, который можно направить на USB-устройство.

В следующем примере кода показано использование флага AUDIO_OUTPUT_FLAG_BIT_PERFECT в 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>

Если указан атрибут идеального побитового воспроизведения, HAL должен гарантировать, что аудиопоток отправляется на USB-устройство без каких-либо изменений, то есть аудиопоток не должен иметь какого-либо масштабирования громкости, преобразования частоты дискретизации или эффектов обработки звука и нельзя смешивать в DSP. В этом случае громкостью управляет аппаратное обеспечение, поскольку платформа не обеспечивает никакого программного управления громкостью.

Проверка

Запустите тесты CTS в PreferredMixerAttributesTestActivity.java , чтобы проверить поддержку предпочтительных атрибутов микшера для USB-устройств.

Чтобы проверить реализацию атрибута BIT_PERFECT , используйте USB-DAC, которые поддерживают аудиоформаты MQA и DSD с импульсно-кодовой модуляцией (PCM).