Отслеживание головы через звук LE

Аудио Bluetooth (BT) с низким энергопотреблением (LE) представляет асинхронные логические механизмы передачи данных с ориентацией на соединение (LE-ACL) и изохронные (LE-ISO) логические механизмы передачи данных для отслеживания положения головы (HT).

Android 15 обеспечивает поддержку корректировки режима задержки для HT в зависимости от того, используется ли механизм транспортировки LE-ACL или LE-ISO.

На этой странице описывается, как взаимодействуют аудиофреймворк, аудиоHAL и стек Bluetooth для обнаружения и выбора транспортных механизмов LE-ACL или LE-ISO, поддерживаемых хостом и гарнитурой.

Поддержка LE-ACL и LE-ISO

Android 15 включает поддержку транспортных механизмов LE-ACL и LE-ISO с использованием определяемого поставщиком системного свойства , режимов задержки аудио HAL и режимов подключения пространственных преобразователей .

Системное свойство

Реализация поставщика телефона перечисляет поддерживаемые транспортные механизмы в системном свойстве bluetooth.core.le.dsa_transport_preference . Значение представляет собой список строк, разделенных запятыми, в котором поддерживаемые транспортные механизмы перечислены в порядке предпочтения:

  • le-acl : транспорт LE-ACL, когда данные инерциального измерительного блока (IMU) передаются через стек датчиков.
  • iso-hw : транспорт ISO с возможностью туннелирования данных HT напрямую из контроллера Bluetooth в пространственное преобразование в аудио DSP.
  • iso-sw : транспорт ISO без возможности туннелирования, когда данные IMU передаются через стек датчиков.

Режимы задержки

В случае аудио BT LE механизм, с помощью которого стек BT указывает поддерживаемые режимы задержки аудио-HAL и аудио-фреймворку, аналогичен механизму, определенному для BT Classic (A2DP). Аудио-HAL сообщает поддерживаемые режимы задержки в соответствии с выбранным в данный момент аудиоустройством.

Реализации A2DP поддерживают только режимы FREE и LOW_LATENCY .

Напротив, для звука BT LE в аудио HAL определены следующие режимы задержки для поддержки добавления транспортных механизмов LE-ACL и LE-ISO:

  • FREE : Это значение указывает на отсутствие конкретных ограничений на задержку. Этот режим используется, когда низкая задержка не поддерживается (указывается HAL) или когда HT неактивен (указывается фреймворком).

  • LOW : Это значение указывает на относительно низкую задержку (например, менее 100 мс), совместимую с режимом HT. Этот режим используется, когда поддерживается низкая задержка и HID передается по протоколу ACL (указывается HAL), или когда режим HT активен и другие режимы с низкой задержкой недоступны (указывается фреймворком).

  • DYNAMIC_SPATIAL_AUDIO_SOFTWARE : Этот режим используется при выполнении одного из следующих условий:

    • Если поддерживается низкая задержка, HID передается по протоколу ISO, и HID не может быть туннелирован к движку эффекта пространственного преобразователя (обозначенному HAL).
    • Когда HT активен и используется протокол ISO, аудиофреймворк предоставляет данные HID движку эффектов пространственного преобразователя (указывается фреймворком).

    В этом режиме вычислительная библиотека HT в фреймворке выполняет всю предварительную обработку данных IMU и сверку с перемещениями телефона, зафиксированными его датчиками.

  • DYNAMIC_SPATIAL_AUDIO_HARDWARE : Этот режим используется при выполнении одного из следующих условий:

    • Если поддерживается низкая задержка, HID передается по протоколу ISO, и HID может быть туннелирован к движку эффекта пространственного преобразователя (обозначен HAL).
    • При активном HT и использовании протокола ISO данные HID туннелируются в механизм эффекта пространственного преобразователя (указанный фреймворком).

    В этом режиме механизм эффекта пространственного преобразования получает необработанные данные инерциального измерительного блока (IMU) непосредственно из стека BT или контроллера BT. Реализация эффекта пространственного преобразования выполняет всю предварительную обработку данных инерциального измерительного блока (IMU) и их согласование с движениями телефона, зафиксированными его датчиками.

Перечисления режимов задержки сопоставляются с системным свойством bluetooth.core.le.dsa_transport_preference в Spatializer.cpp .

Поддержка Spatializer

Контроллер Spatializer в службе аудиополитики управляет выбором транспортного протокола HT для аудио LE. Реализация механизма эффектов Spatializer указывает на поддержку туннелирования данных HT с помощью функции HeadTracking.ConnectionMode .

Поддерживаются следующие режимы HT-подключения:

  • FRAMEWORK_PROCESSED : Аудиофреймворк предоставляет HAL предварительно обработанные данные IMU в векторном формате «от головы до сцены». Этот режим по умолчанию соответствует текущему режиму BT Classic.
  • DIRECT_TO_SENSOR_SW : Механизм эффекта пространственного шейдера напрямую подключается к датчику через программный стек датчика. Аудиофреймворк управляет только включенным состоянием датчика. Программные реализации, не использующие предварительную обработку данных IMU AOSP libheadtracking или реализации пространственного шейдера с выгрузкой DSP, могут использовать режим DIRECT_TO_SENSOR_SW .
  • DIRECT_TO_SENSOR_TUNNEL : Механизм эффекта пространственного звучания напрямую подключается к датчику через аппаратное туннелирование. Аудиофреймворк управляет только состоянием датчика. Реализации пространственного звучания с разгрузкой DSP могут использовать режим DIRECT_TO_SENSOR_TUNNEL .

Выбор режима задержки

Фреймворк выбирает режим задержки из списка поддерживаемых режимов , сообщаемых HAL. Режим задержки устанавливается на основе текущего состояния включения HT, текущей поддержки пространственного преобразователя и указанного производителем системного свойства , устанавливающего приоритет между транспортными механизмами.

Для выбора режима задержки фреймворк использует следующий процесс в selectHeadtrackingConnectionMode_l :

  1. Фреймворк загружает настройки транспорта из системного свойства bluetooth.core.le.dsa_transport_preference .
  2. Поддерживаемые режимы задержки, сообщаемые аудио HAL, фильтруются и упорядочиваются по списку, загруженному на шаге 1.
  3. Если режим с наивысшим приоритетом и низкой задержкой — iso-hw , а реализация пространственного преобразователя поддерживает прямое подключение датчика (то есть в пространственном преобразователе установлены DIRECT_TO_SENSOR_SW или DIRECT_TO_SENSOR_TUNNEL ), режим задержки устанавливается на DYNAMIC_SPATIAL_AUDIO_HARDWARE .
  4. Если режим с наивысшим приоритетом и низкой задержкой — iso-hw , а реализация пространственного преобразователя не поддерживает прямое подключение датчика (в пространственном преобразователе не установлены DIRECT_TO_SENSOR_SW или DIRECT_TO_SENSOR_TUNNEL ), следующий предпочтительный режим ( iso-sw или le-acl ) определяет режим задержки ( DYNAMIC_SPATIAL_AUDIO_SOFTWARE или LOW ).

    Если следующий предпочтительный режим не указан, система сообщает об ошибке конфигурации продукта.