Начиная с 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:
AudioHalCapConfiguration.aidlAudioHalCapCriterionV2.aidlAudioHalCapDomain.aidlAudioHalCapParameter.aidlAudioHalCapRule.aidl
Точка входа для конфигурации 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.