Поддержка настраиваемой политики аудио в 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. Подробнее см. в разделах Структура параметров и Конфигурация с использованием структуры параметров . XML-файлы использовались для определения следующих параметров:

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

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

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

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

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

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

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

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

Партнеры могут рассмотреть варианты, перечисленные в этом разделе, в зависимости от того, является ли это первым запуском продукта, который ранее не использовал 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 . В этом же файле определяются «предварительно выделенные» идентификаторы для стратегий, специфичных для OEM-производителей, которые следуют шаблону именования 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.