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

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

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

Параметрическая структура

Реализация 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-файлов была определена схема XSD, являющаяся частью API HAL. Каждая основная версия HIDL HAL имела соответствующую схему XSD. Для основных версий не требовалась обратная совместимость.

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

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

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

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

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

Сценарии миграции

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

Новый продукт

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

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

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

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

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

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

Устаревший продукт

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

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

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