Поддержка настраиваемой политики аудио в 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 как часть HAL API. Каждый основной выпуск 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 . См. комментарии в AudioHalCapConfiguration.aidl для диаграммы структур данных CAP.

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

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

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

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

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

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

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

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

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

Соглашение об именовании стратегий продукта отличается в версиях HIDL и AIDL конфигурации CAP. В 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.