Śledzenie ruchów głowy przez LE Audio

Bluetooth (BT) Low Energy (LE) Audio wprowadza mechanizmy transportu logicznego Asynchronous Connection-oriented (LE-ACL) i Isochronous (LE-ISO) na potrzeby danych śledzenia ruchów głowy (HT).

Android 15 obsługuje korekty trybu opóźnienia dla HT w zależności od tego, czy używany jest mechanizm transportu LE-ACL czy LE-ISO.

Ta strona opisuje, jak interfejs audio, interfejs HAL audio i sieć Bluetooth współpracują ze sobą, aby wykrywać i wybierać mechanizmy transportu LE-ACL lub LE-ISO obsługiwane przez hosta i słuchawki.

Obsługa LE-ACL i LE-ISO

Android 15 obsługuje mechanizmy transportu LE-ACL i LE-ISO za pomocą zdefiniowanej przez producenta właściwości systemu, trybów opóźnienia HAL audiotrybów połączenia z użyciem funkcji spatializera.

Właściwość systemowa

Implementacja dostawcy telefonu zawiera listę obsługiwanych mechanizmów transportu w bluetooth.core.le.dsa_transport_preference właściwości systemowej. Wartość to lista ciągów znaków rozdzielona przecinkami, zawierająca obsługiwane transporty w kolejności preferencji:

  • le-acl: przesyłanie na poziomie LE-ACL, gdy dane z jednostki bezwładności (IMU) są raportowane przez stos czujników.
  • iso-hw: transport ISO z możliwością tunelowania danych HT bezpośrednio z kontrolera Bluetooth do procesora DSP dźwięku.
  • iso-sw: transport ISO bez możliwości tunelowania, gdy dane IMU są raportowane przez stos czujników.

Tryby opóźnień

W przypadku dźwięku BT LE mechanizm, który pozwala stosowi BT wskazać obsługiwane tryby opóźnienia do HAL dźwięku i ramy dźwięku, jest taki sam jak w przypadku BT Classic (A2DP). HAL audio podaje obsługiwane tryby opóźnienia w zależności od wybranego urządzenia audio.

Implementacje A2DP obsługują tylko tryby FREELOW_LATENCY.

W przypadku dźwięku Bluetooth LE w interfejsie HAL dźwięku zdefiniowano następujące tryby opóźnienia, aby obsługiwać mechanizmy transportu LE-ACL i LE-ISO:

  • FREE: ta wartość oznacza, że nie ma żadnych ograniczeń dotyczących opóźnienia. Ten tryb jest używany, gdy niskie opóźnienie nie jest obsługiwane (co jest wskazywane przez HAL) lub gdy HT nie jest aktywne (co jest wskazywane przez framework).

  • LOW: ta wartość wskazuje stosunkowo niskie opóźnienie (np. mniejsze niż 100 ms), które jest zgodne z działaniem HT. Ten tryb jest używany, gdy obsługiwana jest mała latencja, a HID jest przesyłany za pomocą protokołu ACL (wskazany przez HAL), lub gdy tryb HT jest aktywny i żadne inne tryby z małą latencją nie są dostępne (wskazane przez framework).

  • DYNAMIC_SPATIAL_AUDIO_SOFTWARE: ten tryb jest używany, gdy spełniony jest jeden z tych warunków:

    • Gdy obsługiwana jest mała wartość opóźnienia, dane HID są przesyłane za pomocą protokołu ISO, a dane HID nie mogą być tunelowane do silnika efektu przestrzennego (co jest wskazywane przez HAL).
    • Gdy funkcja HT jest aktywna i używany jest protokół ISO, gdy framework audio przekazuje dane HID do mechanizmu efektu przestrzennego (wskazany przez framework).

    W tym trybie biblioteka obliczeniowa HT w ramach frameworku wykonuje wszystkie operacje wstępnego przetwarzania danych IMU i zgodności z ruchy z uwzględnieniem czujników telefonu.

  • DYNAMIC_SPATIAL_AUDIO_HARDWARE: ten tryb jest używany, gdy spełniony jest jeden z tych warunków:

    • Gdy obsługiwane jest niskie opóźnienie, dane HID są przesyłane za pomocą protokołu ISO, a można je tunelować do mechanizmu efektu przestrzennego (wskazanego przez HAL).
    • Gdy aktywny jest tryb HT i używany jest protokół ISO, gdy dane HID są tunelowane do silnika efektu przestrzennego (wskazanego przez framework).

    W tym trybie silnik efektu przestrzennego otrzymuje nieprzetworzone dane IMU bezpośrednio z poziomu modułu BT lub kontrolera BT. Implementacja efektu przestrzennego wykonuje wszystkie operacje wstępnej obróbki danych z IMU oraz uzgadnianie z ruchu telefonu wskazywanego przez czujniki telefonu.

Wykazy trybów opóźnienia są mapowane na właściwości systemowe bluetooth.core.le.dsa_transport_preferenceSpatializer.cpp.

Obsługa funkcji spatializera

Sterownik spatializera w usłudze zasad dotyczących dźwięku kontroluje wybór protokołu transportowego HT zamiast dźwięku LE. Implementacja silnika efektu przestrzennego wskazuje na obsługę tunelowania danych HT z funkcją HeadTracking.ConnectionMode.

Obsługiwane tryby połączenia HT:

  • FRAMEWORK_PROCESSED: interfejs audio przekazuje przetworzone dane IMU w formacie wektora head-to-stage do HAL. Ten domyślny tryb odpowiada bieżącemu trybowi w BT klasycznym.
  • DIRECT_TO_SENSOR_SW: silnik efektu przestrzennego łączy się bezpośrednio z czujnikiem za pomocą pakietu oprogramowania czujnika. Platforma audio kontroluje tylko stan włączenia czujnika. Implementacje oprogramowania, które nie korzystają z AOSP libheadtracking do wstępnego przetwarzania danych IMU ani z przesłania na DSP implementacji spatializera, mogą korzystać z trybu DIRECT_TO_SENSOR_SW.
  • DIRECT_TO_SENSOR_TUNNEL: silnik efektu przestrzennego łączy się bezpośrednio z czujnikiem za pomocą tunelowania sprzętowego. Układ audio kontroluje tylko stan włączenia czujnika. DSP z przesłanymi implementacjami procesora dźwięku przestrzennego może używać trybu DIRECT_TO_SENSOR_TUNNEL.

Wybór trybu opóźnienia

Framework wybiera tryb opóźnienia z listy obsługiwanych trybów opóźnienia, które są zgłaszane przez HAL. Tryb opóźnienia jest ustawiany na podstawie bieżącego stanu włączenia HT, bieżącej obsługi spatializera oraz właściwości systemu określonej przez dostawcę, która określa kolejność priorytetów między mechanizmami transportu.

Aby wybrać tryb opóźnienia, framework używa tej procedury w selectHeadtrackingConnectionMode_l:

  1. Framework wczytuje preferencje transportu z bluetooth.core.le.dsa_transport_preference usługi systemowej.
  2. Obsługiwane tryby opóźnienia zgłoszone przez HAL dźwięku są filtrowane i sortowane według listy załadowanej w kroku 1.
  3. Jeśli tryb o najwyższym priorytecie o niskiej latencji to iso-hw, a implementacja spatializera obsługuje bezpośrednie połączenie z czujnikiem (czyli w spatializerze są ustawione wartości DIRECT_TO_SENSOR_SW lub DIRECT_TO_SENSOR_TUNNEL), tryb opóźnienia jest ustawiony na DYNAMIC_SPATIAL_AUDIO_HARDWARE.
  4. Jeśli tryb o najwyższym priorytecie o małym opóźnieniu to iso-hw, a implementacja spatializera nie obsługuje bezpośredniego połączenia z czujnikiem (w spatializerze nie są ustawione parametry DIRECT_TO_SENSOR_SW ani DIRECT_TO_SENSOR_TUNNEL), następny preferowany tryb (iso-sw lub le-acl) określa tryb opóźnienia (DYNAMIC_SPATIAL_AUDIO_SOFTWARE lub LOW).

    Jeśli nie zostanie określony następny preferowany tryb, system zgłosi błąd konfiguracji produktu.