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 audio i trybó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 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 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. TrybuDIRECT_TO_SENSOR_SW
można używać w implementacjach oprogramowania, które nie korzystają z wstępnego przetwarzania danych IMU zgodnego z platformą AOSPlibheadtracking
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 trybuDIRECT_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
:
- Framework wczytuje preferencje transportu z
bluetooth.core.le.dsa_transport_preference
właściwości 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 parametryDIRECT_TO_SENSOR_SW
lubDIRECT_TO_SENSOR_TUNNEL
), tryb opóźnienia jest ustawiony naDYNAMIC_SPATIAL_AUDIO_HARDWARE
. 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 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 następny preferowany tryb nie jest określony, system zgłasza błąd konfiguracji produktu.