Wdrożenie wysokiej jakości dźwięku przestrzennego i śledzenia ruchów głowy

Android 13 wprowadza obsługę dźwięku przestrzennego, udostępniając interfejsy API, które pozwalają deweloperom aplikacji sprawdzać, czy bieżąca kombinacja telefonu, podłączonych słuchawek i ustawień użytkownika umożliwia odtwarzanie wielokanałowych treści audio w sposób immersyjny.

Producenci OEM mogą udostępniać efekt dźwięku przestrzennego z obsługą monitorowania ruchów głowy, zapewniając wymagany poziom wydajności i opóźnienia dzięki nowej architekturze potoku audio i integracji z platformą czujników. Protokół HID określa, jak podłączyć urządzenie śledzące ruchy głowy przez Bluetooth i udostępnić je jako urządzenie HID w ramach platformy czujników Androida. Więcej wymagań i informacji o weryfikacji znajdziesz w sekcji Dźwięk przestrzenny i monitorowanie ruchów głowy.

Wytyczne na tej stronie dotyczą rozwiązania dźwięku przestrzennego, które wykorzystuje nowe interfejsy API dźwięku przestrzennego i architekturę dźwięku na telefonie z Androidem 13 lub nowszym oraz kompatybilnych słuchawkach z czujnikiem śledzenia ruchów głowy.

Wytyczne dotyczące implementacji dynamicznych i statycznych trybów dźwięku przestrzennego

Statyczny dźwięk przestrzenny nie wymaga śledzenia ruchów głowy, więc zestaw słuchawkowy nie musi mieć tej funkcji. Wszystkie przewodowe i bezprzewodowe zestawy słuchawkowe mogą obsługiwać statyczny dźwięk przestrzenny.

Implementacja interfejsu API

Producenci OEM MUSZĄ zaimplementować Spatializer klasę wprowadzoną w Androidzie 12. Implementacja musi przejść testy CTS wprowadzone dla klasy Spatializer.

Solidna implementacja interfejsu API zapewnia programistom aplikacji, zwłaszcza usług streamingowych, spójne działanie w całym ekosystemie i możliwość wybierania najlepszych treści w zależności od możliwości urządzenia, bieżącego kontekstu renderowania i wyborów użytkownika.

Interfejs użytkownika

Po zaimplementowaniu klasy Spatializer sprawdź, czy interfejs użytkownika działa w ten sposób:

  • Gdy sparujesz zestaw słuchawkowy obsługujący dźwięk przestrzenny, w ustawieniach urządzenia Bluetooth dla tego zestawu słuchawkowego pojawi się przełącznik Dźwięk przestrzenny:

    spatial-audio-ui

    Rysunek 1. Ustawienie dźwięku przestrzennego.

  • Ustawienia są dostępne po odłączeniu zestawu słuchawkowego.

  • Domyślny stan dźwięku przestrzennego po pierwszym sparowaniu słuchawek to włączony.

  • Stan wybrany przez użytkownika (włączony lub wyłączony) jest zachowywany po ponownym uruchomieniu telefonu lub rozłączeniu i ponownym sparowaniu zestawu słuchawkowego.

Działanie funkcjonalne

Formaty audio

Gdy dźwięk przestrzenny jest włączony, a urządzeniem renderującym są słuchawki przewodowe lub Bluetooth, efekt przestrzenny musi renderować te formaty audio:

  • AAC, 5.1-kanałowy
  • Raw PCM, 5.1 channels

Aby zapewnić użytkownikom większy komfort, zdecydowanie zalecamy obsługę tych formatów i konfiguracji kanałów:

  • Dolby Digital Plus
  • 5.1.2, 7.1, 7.1.2, 7.1.4

Odtwarzanie treści stereo

Treści stereo nie mogą być renderowane za pomocą silnika efektów przestrzennych, nawet jeśli dźwięk przestrzenny jest włączony. Jeśli implementacja umożliwia przestrzenne odtwarzanie treści stereo, musi zawierać niestandardowy interfejs, który pozwala użytkownikowi łatwo włączać i wyłączać tę funkcję. Gdy dźwięk przestrzenny jest włączony, musi być możliwe przejście z odtwarzania przestrzennych treści wielokanałowych na przestrzenne treści stereo bez konieczności wprowadzania zmian w ustawieniach użytkownika, ponownego podłączania lub ponownej konfiguracji słuchawek. Przejście między treściami z dźwiękiem przestrzennym a treściami stereo musi następować przy minimalnych zakłóceniach dźwięku.

Przejścia między przypadkami użycia i współbieżność

W przypadku specjalnych przypadków użycia postępuj w ten sposób:

  • Powiadomienia muszą być miksowane z treściami audio przestrzennego w taki sam sposób jak z treściami audio bez dźwięku przestrzennego.
  • Dzwonki muszą być miksowane z treściami audio w przestrzeni. Domyślnie mechanizm ostrości dźwięku wstrzymuje jednak treści audio przestrzenne, gdy rozlega się dzwonek.
  • Podczas odbierania lub nawiązywania połączenia telefonicznego lub wideokonferencji odtwarzanie dźwięku przestrzennego musi zostać wstrzymane. Po zakończeniu połączenia odtwarzanie dźwięku przestrzennego musi zostać wznowione z tymi samymi ustawieniami dźwięku przestrzennego. Zmiana konfiguracji ścieżki audio w celu przejścia z trybu dźwięku przestrzennego na tryb rozmowy musi być szybka i płynna, aby nie wpływać na jakość połączenia.

Odtwarzanie na głośnikach

Obsługa przestrzennego dźwięku przez głośniki lub tryb transauralny nie jest wymagana.

Wskazówki dotyczące implementacji śledzenia ruchów głowy

Ta sekcja dotyczy dynamicznego dźwięku przestrzennego, który ma określone wymagania dotyczące słuchawek.

Interfejs użytkownika

Po wdrożeniu i sparowaniu zestawu słuchawkowego obsługującego dźwięk przestrzenny sprawdź, czy interfejs użytkownika działa w następujący sposób:

  • W ustawieniach urządzenia Bluetooth, gdy włączone jest ustawienie Dźwięk przestrzenny dla słuchawek, pod ustawieniem Dźwięk przestrzenny pojawia się ustawienie Śledzenie ruchów głowy:

    ht-ui

    Rysunek 2. Ustawienie dźwięku przestrzennego i śledzenia ruchów głowy.

  • Ustawienie śledzenia ruchów głowy NIE jest widoczne, gdy dźwięk przestrzenny jest wyłączony.

  • Domyślny stan monitorowania ruchów głowy po pierwszym sparowaniu słuchawek to włączony.

  • Stan wybrany przez użytkownika (włączony lub wyłączony) musi być zachowany po ponownym uruchomieniu telefonu lub rozłączeniu i ponownym sparowaniu słuchawek.

Działanie funkcjonalne

Raportowanie pozycji głowy

  • Informacje o pozycji głowy w postaci współrzędnych x, y i z wysyłane z zestawu słuchawkowego na urządzenie z Androidem muszą szybko i dokładnie odzwierciedlać ruchy głowy użytkownika.
  • Raportowanie pozycji głowy przez połączenie Bluetooth musi być zgodne z protokołem zdefiniowanym w HID.
  • Słuchawki muszą wysyłać informacje o śledzeniu ruchów głowy na telefon z Androidem tylko wtedy, gdy użytkownik włączy śledzenie ruchów głowy w interfejsie ustawień urządzenia Bluetooth.

Wydajność

Opóźnienie

Opóźnienie śledzenia ruchu głowy to czas, jaki upływa od momentu, w którym jednostka pomiaru bezwładności (IMU) zarejestruje ruch głowy, do momentu, w którym przetworniki słuchawek wykryją zmianę dźwięku spowodowaną tym ruchem. Opóźnienie monitorowania ruchów głowy nie może przekraczać 150 ms.

Częstotliwość raportowania pozycji głowy

Gdy śledzenie ruchu głowy jest aktywne, zestaw słuchawkowy musi zgłaszać pozycję głowy w zalecanych odstępach czasu wynoszących około 20 ms. Aby uniknąć włączenia logiki wykrywania nieaktualnych danych wejściowych na telefonie podczas wahań transmisji Bluetooth, maksymalny czas między dwoma aktualizacjami nie może przekraczać 40 ms.

Optymalizacja zasilania

Aby zoptymalizować zużycie energii, zalecamy, aby implementacja korzystała z mechanizmów przełączania kodeka Bluetoothwyboru trybu opóźnienia udostępnianych przez interfejsy audio HALBluetooth audio HAL.

Implementacje AOSP platformy audio i stosu Bluetooth obsługują już sygnały do sterowania przełączaniem kodeków. Jeśli implementacja OEM korzysta z podstawowego interfejsu HAL audio w przypadku dźwięku Bluetooth, znanego jako tryb odciążania kodeka, producent OEM musi zadbać o to, aby interfejs HAL audio przekazywał te sygnały między interfejsem HAL audio a stosem Bluetooth.

Przełączanie kodeków

Gdy włączony jest dynamiczny dźwięk przestrzenny i śledzenie ruchów głowy, używaj kodeka o niskim opóźnieniu, np. Opus. Podczas odtwarzania treści audio bez dźwięku przestrzennego używaj kodeka o niskim poborze mocy, takiego jak Advanced Audio Coding (AAC).

Podczas przełączania kodeków przestrzegaj tych reguł:

  • Śledź tylko aktywność na tych strumieniach wyjściowych HAL audio:
    • Dedykowane wyjście przestrzenne
    • strumienie specyficzne dla multimediów, takie jak głęboki bufor lub odciążanie skompresowanego odtwarzania;
  • Gdy wszystkie odpowiednie strumienie są nieaktywne i rozpoczyna się strumień przestrzenny, uruchom strumień Bluetooth z wartością isLowLatency ustawioną na true, aby określić kodek o niskiej latencji.

  • Gdy wszystkie odpowiednie strumienie są nieaktywne i rozpoczyna się strumień multimediów, uruchom strumień Bluetooth z parametrem isLowLatency ustawionym na false, aby określić kodek o niskim poborze mocy.

  • Jeśli strumień multimediów jest aktywny i rozpoczyna się strumień przestrzenny, uruchom ponownie strumień Bluetooth z parametrem isLowLatency ustawionym na true.

Słuchawki muszą obsługiwać dekodery o niskim opóźnieniu i niskim zużyciu energii oraz implementować standardowy protokół wyboru kodeka.

Dostosowywanie trybu opóźnienia

Dostosowanie trybu opóźnienia następuje po wybraniu kodeka niskiego opóźnienia.

W zależności od tego, czy śledzenie ruchu głowy jest włączone czy wyłączone, dostosowanie trybu opóźnienia wykorzystuje dostępne mechanizmy, aby zmniejszyć lub zwiększyć opóźnienie i osiągnąć najlepszy kompromis między opóźnieniem, zużyciem energii i jakością dźwięku. Gdy dźwięk przestrzenny i monitorowanie ruchów głowy są włączone, wybierany jest tryb niskiego opóźnienia. Gdy dźwięk przestrzenny jest włączony, a śledzenie ruchów głowy jest wyłączone, wybierany jest tryb bez opóźnień. Dostosowanie opóźnienia zapewnia znaczne oszczędności energii i większą stabilność połączenia audio Bluetooth, gdy wymagany jest tylko statyczny dźwięk przestrzenny. Najczęstszym mechanizmem dostosowywania opóźnienia jest zmniejszenie lub zwiększenie rozmiaru bufora drgań w słuchawkach Bluetooth.

Informacje o dostosowywaniu trybu opóźnienia w przypadku LE Audio znajdziesz w sekcji Śledzenie ruchów głowy w LE Audio.