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

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

Эта функция также обеспечивает поддержку опционального режима воспроизведения без потери качества для USB-устройств. Режим воспроизведения без потери качества позволяет воспроизводить аудиофайлы в форматах Master Quality Authenticated (MQA) и Direct Stream Digital (DSD) на совместимых цифро-аналоговых преобразователях (ЦАП).

Интерфейс

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

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

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

preferred-mixer-attr

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

Выполнение

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

Предпочтительные характеристики миксера

Для поддержки предпочтительных параметров микшера производители должны обеспечивать маршрутизацию 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 аудиоинтерфейса 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>

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

Проверка

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

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