Поддержка настраиваемых правил аудио в AIDL HAL

Начиная с Android 16 интерфейс AIDL Audio HAL полностью поддерживает настраиваемые правила в отношении аудио (CAP).

На этой странице приведена техническая информация, которая поможет партнерам и поставщикам однокристальных систем перенести конфигурации правил для аудио.

Фреймворк параметров

Реализация CAP основана на Intel Parameter Framework. Протокол CAP был представлен в Android 6. Parameter Framework (PfW) позволяет описывать систему с помощью параметров. Используя XML-файл конфигурации, PfW связывает параметры с действиями с помощью плагинов и предоставляет правила для изменения параметров в соответствии с текущими критериями.

Структура CAP в HIDL

В HIDL все настройки CAP указывались в XML. Дополнительную информацию можно найти в разделах Parameter Framework и Configuration using Parameter Framework. XML-файлы использовались для следующих целей:

  • Описание структуры параметров (то есть описание аудиодомена для PfW).
  • Определения критериев
  • Правила для стратегий маршрутизации (выбор устройств ввода и вывода)
  • Спецификация таблиц громкости

С помощью HIDL фреймворк Android мог загружать эти XML-файлы непосредственно из раздела поставщика. Это было разрешено, поскольку для этих XML-файлов в рамках HAL API была определена схема XSD. Каждому основному выпуску HIDL HAL соответствовала схема XSD. Основные выпуски не требовали обратной совместимости.

Структура CAP в AIDL

При переходе на AIDL выпуски HAL API должны оставаться обратно совместимыми (в терминах HIDL каждый выпуск AIDL HAL является "незначительным" обновлением). Схемы XSD больше нельзя использовать в HAL API, поскольку нет установленного способа определения обратно совместимых обновлений для схем. Поэтому конфигурацию, которая ранее определялась в XML-файлах, теперь нужно предоставлять с помощью HAL через API AIDL. Для этого структура конфигурации CAP преобразуется в AIDL, как и XML-файлы конфигурации аудиополитики в AIDL Audio HAL для Android 15.

Структуры данных для CAP добавлены в Common stable data types и включают следующие объекты Parcelable:

Точка входа для конфигурации CAP находится в структуре AudioHalEngineConfig.CapSpecificConfig. Схема структур данных CAP приведена в комментариях к файлу AudioHalCapConfiguration.aidl.

Реализация по умолчанию AIDL HAL содержит вспомогательный класс, который заполняет объекты Parcelable AIDL на основе содержимого устаревших XML-файлов CAP, чтобы упростить переход для партнеров.

Сценарии переноса

В зависимости от того, запускается ли продукт впервые или переносится существующий, партнеры могут выбрать один из вариантов, перечисленных в этом разделе.

Новый товар

Если новый продукт начинает использовать CAP для реализации правил в отношении аудио, OEM-производитель может выбрать XML для хранения конфигурации CAP на стороне поставщика.

Преимущество XML заключается в том, что существует набор инструментов для работы со скриптами, которые упрощают создание конфигурации на основе описания высокого уровня.

Если OEM-производитель решает использовать XML для хранения конфигурации CAP в разделе поставщика, рекомендуется использовать реализацию по умолчанию синтаксического анализатора XML для преобразования конфигурации в AIDL.

Обновление существующего товара

Если продукт уже использует CAP и, следовательно, имеет XML-конфигурацию, вы можете продолжать использовать существующий CAP с версией HAL AIDL.

В версиях конфигурации CAP для HIDL и AIDL используются разные правила именования стратегий продуктов. В HIDL встроенные ("устаревшие") стратегии использовали короткие названия в нижнем регистре, например media, а в AIDL встроенные стратегии используют названия в верхнем регистре с префиксом STRATEGY_, например STRATEGY_MEDIA. Список встроенных стратегий можно найти в CapProductStrategies.xml. В том же файле определены заранее выделенные идентификаторы для стратегий, относящихся к определенному производителю оборудования. Их названия соответствуют шаблону vx_10xx и содержат числа от 1000 до 1039.

Продукт прошлого поколения

Если продукт, использующий CAP, не обновляет раздел поставщика и остается на HIDL, вы можете обновить системный раздел до Android 16. Фреймворк по-прежнему совместим с устаревшей конфигурацией CAP.

Пример реализации

Чтобы помочь партнерам внедрить CAP на своих платформах, в AOSP есть пример "автомобильной" версии виртуального устройства Cuttlefish, которое использует CAP с AIDL HAL. Конфигурация устройства находится в файле device/google/cuttlefish/shared/auto/audio/policy/engine с целевым именем lunch и названием aosp_cf_x86_64_auto. Файл Android.bp можно использовать в качестве справочного материала для создания полного набора файлов поставщиков CAP.