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 audio i trybó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 FREE
i LOW_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_preference
w Spatializer.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 AOSPlibheadtracking
do wstępnego przetwarzania danych IMU ani z przesłania na DSP implementacji spatializera, mogą korzystać z trybuDIRECT_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ć trybuDIRECT_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
:
- Framework wczytuje preferencje transportu z
bluetooth.core.le.dsa_transport_preference
usługi systemowej. - Obsługiwane tryby opóźnienia zgłoszone przez HAL dźwięku są filtrowane i sortowane według listy załadowanej w kroku 1.
- 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ściDIRECT_TO_SENSOR_SW
lubDIRECT_TO_SENSOR_TUNNEL
), tryb opóźnienia jest ustawiony naDYNAMIC_SPATIAL_AUDIO_HARDWARE
. 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 parametryDIRECT_TO_SENSOR_SW
aniDIRECT_TO_SENSOR_TUNNEL
), następny preferowany tryb (iso-sw
luble-acl
) określa tryb opóźnienia (DYNAMIC_SPATIAL_AUDIO_SOFTWARE
lubLOW
).Jeśli nie zostanie określony następny preferowany tryb, system zgłosi błąd konfiguracji produktu.