Ś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 korektę trybu opóźnienia w przypadku HT w zależności od tego, czy używany jest mechanizm transportowy LE-ACL lub 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 wygłuszenia przestrzennego.

Właściwość systemowa

Implementacja dostawcy usług telefonicznych zawiera listę obsługiwanych mechanizmów transportowych we właściwości systemowej bluetooth.core.le.dsa_transport_preference. Wartością jest rozdzielona przecinkami lista ciągów tekstowych zawierających obsługiwane środki transportu w kolejności od najbardziej preferowanych:

  • le-acl: transport LE-ACL, gdy dane z inercyjnej jednostki miary (IMU) są przesyłane 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óźnienia

W przypadku BT LE Audio mechanizm wskazujący obsługiwane tryby opóźnienia dla ścieżki HAL audio i platformy audio jest taki sam, jak zdefiniowany dla 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 krótkie opóźnienie (np. krótsze 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 o małej latencji 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ługiwany jest niski czas oczekiwania, HID jest przekazywany za pomocą protokołu ISO i można go tunelować do mechanizmu efektów przestrzennych (wskazanego przez HAL).
    • Gdy aktywny jest tryb HT i używany jest protokół ISO, a dane HID są tunelowane do silnika efektu przestrzennego (wskazanego przez framework).

    W tym trybie mechanizm efektów przestrzennych otrzymuje nieprzetworzone dane IMU bezpośrednio ze stosu 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.

Wyliczenia w trybie opóźnienia są mapowane na właściwość systemową bluetooth.core.le.dsa_transport_preference w Spatializer.cpp.

Obsługa funkcji spatializera

Sterownik przestrzenności 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 wstępnie 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. Trybu DIRECT_TO_SENSOR_SW można używać w implementacjach oprogramowania, które nie korzystają z wstępnego przetwarzania danych IMU zgodnego z platformą AOSP libheadtracking ani implementacji trybu przestrzennego wyłączonego z DSP.
  • DIRECT_TO_SENSOR_TUNNEL: silnik efektu przestrzennego łączy się bezpośrednio z czujnikiem za pomocą tunelowania sprzętowego. Usługa audio kontroluje tylko stan włączenia czujnika. DSP z przesłanymi implementacjami procesora dźwięku przestrzennego może korzystać z trybu DIRECT_TO_SENSOR_TUNNEL.

Wybór trybu opóźnienia

Platforma wybiera tryb opóźnienia z listy obsługiwanych trybów opóźnienia zgłaszanych 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.

Platforma wybiera tryb opóźnienia w opisany poniżej sposób w selectHeadtrackingConnectionMode_l:

  1. Framework wczytuje preferencje transportu z bluetooth.core.le.dsa_transport_preference właściwości 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 parametry 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 niskim 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 następny preferowany tryb nie jest określony, system zgłasza błąd konfiguracji produktu.