В Android 14 и более поздних версиях интерфейс Audio HAL определяется с помощью Stable AIDL. Партнерам и поставщикам SoC рекомендуется переопределить Audio HAL, чтобы обеспечить интерфейс AIDL.
Расширение библиотеки libaudiohal добавляет поддержку фреймворка для AIDL HAL.
При реализации AIDL спецификация конфигурации правил обработки аудио переносится в AIDL HAL. Благодаря этому изменению Audio Policy Manager (APM) получает конфигурацию от HAL, а не использует ее из XML-файла, предоставленного поставщиком.
Audio AIDL HAL API
В этом разделе описаны основные, общие и HAL API эффектов для AIDL.
Используйте реализацию API AIDL по умолчанию в /hardware/interfaces/audio/aidl/default/ в качестве справочной информации при реализации новых версий Audio HAL, взаимодействующих с драйверами ядра.
Структура каталогов Audio HAL для AIDL описана в файле README Audio HAL.
Основной уровень HAL
Ниже перечислены некоторые основные интерфейсы Core HAL, использующие AIDL:
IModule.aidl– точка входа в API.- Потоки однонаправленные и используются AudioFlinger для отправки и получения аудиоданных в HAL и из него через
IStreamOut.aidlиIStreamIn.aidl. ITelephony.aidlпредоставляет элементы управления, предназначенные для функций телефонии.IBluetooth.aidlпредоставляет элементы управления BT SCO и HFP, которые были вIPrimaryModuleв HIDL API.IConfig.aidlпредоставляет параметры конфигурации на уровне системы.ISoundDose.aidlподдерживает дозу звука. Подробнее о дозе шума…- Последняя версия Core HAL API в разработке находится в
/hardware/interfaces/audio/aidl/android/hardware/audio/core/. - Последняя выпущенная версия Core HAL API находится в
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/.
HAL эффектов
Ниже перечислены основные интерфейсы HAL эффектов, использующие AIDL.
IFactory.aidl– это точка входа в API.Descriptor.aidlсодержит всю информацию, например возможности и атрибуты, для реализации эффекта.Capability.aidlопределяет возможности эффекта, которые не меняются во время выполнения.Parameter.aidlопределяет все параметры, поддерживаемые экземпляром эффекта.IEffect.aidlиспользуется для настройки и управления определенными экземплярами эффектов.Parcelable-объекты, относящиеся к определенному эффекту и названные в честь него.
Последняя версия API HAL эффектов в разработке находится в
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/.Последняя выпущенная версия API HAL эффектов находится в
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect.
Подробнее о звуковых эффектах…
Общий уровень HAL
Общие HAL содержат структуры данных и интерфейсы, которые используются в разных HAL, например в HAL Bluetooth, а также в основных и дополнительных HAL аудио.
Последняя версия Common AIDL HAL в разработке находится в
/hardware/interfaces/audio/aidl/android/hardware/audio/common/.Последняя выпущенная версия Common HAL API находится в
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/.
Распространенные стабильные типы данных
Определения стабильных структур данных используются как HAL, так и фреймворком.
Последняя версия стабильных типов данных в разработке находится в
/system/hardware/interfaces/media/aidl/android/media/audio/common/.Последняя выпущенная версия стабильных типов данных находится в
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/.
Как тестировать API Audio AIDL HAL
Для интерфейса AIDL предоставляются новые тесты VTS.
В новой версии HAL нет изменений, которые могут повлиять на безопасность.