Śledzenie ruchów głowy przez LE Audio

Bluetooth (BT) Low Energy (LE) Audio wprowadza asynchroniczne połączenie logiczne zorientowane na połączenie (LE-ACL) i izochroniczne (LE-ISO) logiczne mechanizmy transportu danych śledzenia głowy (HT).

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

Na tej stronie opisujemy, jak framework audio, HAL audio i stos Bluetooth współdziałają w celu wykrywania i wybierania mechanizmów transportu LE-ACL lub LE-ISO obsługiwanych 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 dostawcę właściwości systemu, trybów opóźnienia HAL audio i trybów połączenia przestrzennego.

Właściwość systemu

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

  • le-acl: transport LE-ACL, gdy dane z jednostki pomiaru 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 przestrzennego procesora dźwięku w cyfrowym procesorze sygnałowym audio.
  • iso-sw: transport ISO bez możliwości tunelowania, gdy dane IMU są raportowane przez stos czujników.

Tryby opóźnienia

W przypadku dźwięku BT LE mechanizm, za pomocą którego stos BT wskazuje obsługiwane tryby opóźnienia do HAL audio i frameworka audio, jest taki sam jak w przypadku BT Classic (A2DP). Warstwa HAL audio zgłasza obsługiwane tryby opóźnienia zgodnie z aktualnie wybranym urządzeniem audio.

Implementacje A2DP obsługują tylko tryby FREELOW_LATENCY.

W przypadku BT LE Audio w interfejsie HAL audio zdefiniowano te tryby opóźnienia, aby obsługiwać dodawanie mechanizmów transportu LE-ACL i LE-ISO:

  • FREE: ta wartość oznacza, że nie ma konkretnego ograniczenia dotyczącego opóźnienia. Ten tryb jest używany, gdy małe opóźnienie nie jest obsługiwane (wskazuje na to HAL) lub gdy HT nie jest aktywny (wskazuje na to framework).

  • LOW: ta wartość wskazuje na stosunkowo małe opóźnienie (np. poniżej 100 ms), które jest zgodne z działaniem HT. Ten tryb jest używany, gdy obsługiwane jest niskie opóźnienie, a HID jest przesyłany za pomocą protokołu ACL (wskazywanego przez HAL) lub gdy HT jest aktywny i nie są dostępne żadne inne tryby niskiego opóźnienia (wskazywane przez framework).

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

    • Gdy obsługiwane jest niskie opóźnienie, HID jest przesyłany za pomocą protokołu ISO i nie może być tunelowany do silnika efektów przestrzennych (wskazuje na to HAL).
    • Gdy HT jest aktywny i protokół ISO jest używany, gdy platforma audio dostarcza dane HID do silnika efektów przestrzennych (wskazywane przez platformę).

    W tym trybie biblioteka obliczeniowa HT w ramach platformy wykonuje wszystkie wstępne przetwarzania danych z IMU i uzgadnianie z ruchami telefonu wskazywanymi przez czujniki 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, HID jest przesyłany za pomocą protokołu ISO i może być tunelowany do silnika efektów przestrzennych (wskazywanego przez HAL).
    • Gdy HT jest aktywny i protokół ISO jest używany, gdy dane HID są tunelowane do silnika efektów przestrzennych (wskazywanego przez platformę).

    W tym trybie silnik efektów przestrzennych otrzymuje nieprzetworzone dane IMU bezpośrednio ze stosu BT lub kontrolera BT. Implementacja efektu przestrzennego przeprowadza wszystkie wstępne przetwarzania danych z IMU i uzgadnianie z ruchami telefonu wskazywanymi przez czujniki telefonu.

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

Obsługa przestrzennego dźwięku

Spatializer w usłudze zasad audio kontroluje wybór protokołu transportu HT zamiast dźwięku LE. Implementacja silnika efektu przestrzennego wskazuje obsługę tunelowania danych HT z możliwością HeadTracking.ConnectionMode.

Obsługiwane tryby połączenia HT:

  • FRAMEWORK_PROCESSED: struktura audio udostępnia do HAL wstępnie przetworzone dane IMU w formacie wektora od głowy do sceny. Ten tryb domyślny odpowiada bieżącemu trybowi z klasycznym Bluetooth.
  • DIRECT_TO_SENSOR_SW: silnik efektu przestrzennego jest połączony bezpośrednio z czujnikiem za pomocą stosu oprogramowania czujnika. Platforma audio steruje tylko stanem włączenia czujnika. Implementacje oprogramowania, które nie korzystają z przetwarzania wstępnego danych IMU w AOSP libheadtracking ani z implementacji przestrzennego przetwarzania dźwięku z przeniesieniem obliczeń na DSP, mogą używać trybu DIRECT_TO_SENSOR_SW.
  • DIRECT_TO_SENSOR_TUNNEL: silnik efektu przestrzennego łączy się bezpośrednio z czujnikiem za pomocą tunelowania sprzętowego. Platforma audio kontroluje tylko stan włączenia czujnika. Implementacje przestrzennego przetwarzania dźwięku z przeniesionym na DSP przetwarzaniem mogą korzystać z DIRECT_TO_SENSOR_TUNNEL.

Wybór trybu opóźnienia

Framework 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 przestrzennego dźwięku i określonej przez dostawcę właściwości systemu, która ustala kolejność priorytetów między mechanizmami transportu.

selectHeadtrackingConnectionMode_l framework wybiera tryb opóźnienia w ten sposób:

  1. Platforma wczytuje preferencje transportu z bluetooth.core.le.dsa_transport_preference właściwości systemu.
  2. Obsługiwane tryby opóźnienia zgłaszane przez HAL audio są filtrowane i porządkowane względem listy załadowanej w kroku 1.
  3. Jeśli tryb niskiego opóźnienia o najwyższym priorytecie to iso-hw, a implementacja przestrzennego dźwięku obsługuje bezpośrednie połączenie z czujnikiem (czyli w przestrzennym dźwięku ustawiono DIRECT_TO_SENSOR_SW lub DIRECT_TO_SENSOR_TUNNEL), tryb opóźnienia jest ustawiony na DYNAMIC_SPATIAL_AUDIO_HARDWARE.
  4. Jeśli tryb niskiego opóźnienia o najwyższym priorytecie to iso-hw, a implementacja przestrzennego dźwięku nie obsługuje bezpośredniego połączenia z czujnikiem (w spatializer nie ustawiono DIRECT_TO_SENSOR_SW ani DIRECT_TO_SENSOR_TUNNEL), o trybie opóźnienia (DYNAMIC_SPATIAL_AUDIO_SOFTWARE lub LOW) decyduje następny preferowany tryb (iso-sw lub le-acl).

    Jeśli nie określono następnego preferowanego trybu, system zgłosi błąd konfiguracji produktu.