Implementacja wysokiej jakości dźwięku przestrzennego i śledzenia głowy

W systemie Android 13 wprowadzono obsługę dźwięku przestrzennego, udostępniając interfejsy API , które pozwalają twórcom aplikacji sprawdzić, czy bieżąca kombinacja implementacji telefonu, podłączonego zestawu słuchawkowego i ustawień użytkownika umożliwia odtwarzanie wielokanałowej zawartości audio w immersyjny sposób.

Producenci OEM mogą zapewnić efekt audio przestrzennika z obsługą śledzenia głowy przy wymaganym poziomie wydajności i opóźnienia, wykorzystując nową architekturę potoku audio i integrację struktury czujników. Protokół HID określa, jak podłączyć urządzenie do śledzenia głowy przez Bluetooth i udostępnić je jako urządzenie HID za pośrednictwem platformy czujników Android. Zobacz Przestrzenny dźwięk i śledzenie głowy, aby uzyskać więcej wymagań i weryfikacji.

Wytyczne na tej stronie dotyczą rozwiązania dźwięku przestrzennego, które przyjmuje nowe interfejsy API dźwięku przestrzennego i architekturę dźwięku w przypadku telefonu z systemem Android w wersji 13 lub nowszej oraz zgodnych zestawów słuchawkowych z czujnikiem śledzenia głowy.

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

Statyczny dźwięk przestrzenny nie wymaga śledzenia głowy, więc zestaw słuchawkowy nie wymaga określonych funkcji. Wszystkie przewodowe i bezprzewodowe zestawy słuchawkowe obsługują statyczny dźwięk przestrzenny.

Implementacja API

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

Solidna implementacja interfejsu API gwarantuje, że twórcy aplikacji, w szczególności usług strumieniowego przesyłania multimediów, mogą polegać na spójnym zachowaniu w całym ekosystemie i wybierać najlepszą treść zgodnie z możliwościami urządzenia, bieżącym kontekstem renderowania i wyborami użytkownika.

Interfejs użytkownika

Po zaimplementowaniu klasy Spatializer sprawdź, czy interfejs użytkownika zachowuje się następująco:

  • Po sparowaniu zestawu słuchawkowego obsługującego dźwięk przestrzenny w ustawieniach urządzenia Bluetooth dla tego zestawu słuchawkowego wyświetlany jest przełącznik dźwięku przestrzennego :

    spatial-audio-ui

    Rysunek 1. Ustawienia dźwięku przestrzennego.

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

  • Domyślny stan dźwięku przestrzennego po pierwszym sparowaniu zestawu słuchawkowego jest ustawiony na włączony .

  • Stan wybrany przez użytkownika, niezależnie od tego, czy jest włączony, czy wyłączony, oznacza ponowne uruchomienie telefonu lub rozparowanie i sparowanie zestawu słuchawkowego.

Zachowanie funkcjonalne

Formaty audio

Następujące formaty audio MUSZĄ być renderowane przez efekt przestrzenny, gdy włączony jest dźwięk przestrzenny, a urządzeniem renderującym jest zestaw słuchawkowy przewodowy lub Bluetooth:

  • AAC, 5.1 kanałów
  • Surowy PCM, 5.1 kanałów

Aby zapewnić lepsze doświadczenie użytkownika, zdecydowanie zalecamy obsługę następujących formatów/konfiguracji kanałów:

  • Dolby Digital Plus
  • Kanały 5.1.2, 7.1, 7.1.2, 7.1.4

Odtwarzanie treści stereo

Treści stereo nie mogą być renderowane przez silnik efektów przestrzennych, nawet jeśli włączony jest dźwięk przestrzenny. Jeśli implementacja umożliwia uprzestrzennianie treści stereo, musi zawierać niestandardowy interfejs użytkownika, który umożliwia użytkownikowi łatwe włączanie i wyłączanie tej funkcji. Gdy włączony jest dźwięk przestrzenny, musi istnieć możliwość przejścia między odtwarzaniem przestrzennej treści wielokanałowej do nieprzestrzennej treści stereo bez konieczności wprowadzania jakichkolwiek zmian w ustawieniach użytkownika lub ponownego podłączania lub rekonfiguracji zestawu słuchawkowego. Przejście pomiędzy treścią dźwięku przestrzennego a treścią stereo musi następować przy minimalnych zakłóceniach dźwięku.

Użyj przejść przypadków i współbieżności

Obsługuj specjalne przypadki użycia w następujący sposób:

  • Powiadomienia muszą być mieszane z przestrzenną treścią audio w taki sam sposób, jak w przypadku nieprzestrzennej treści audio.
  • Należy umożliwić mieszanie dzwonków z przestrzenną treścią audio. Jednak domyślnie mechanizm fokusowania dźwięku wstrzymuje dźwięk przestrzenny, gdy słychać 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. Rekonfiguracja ścieżki audio w celu przełączenia z trybu dźwięku przestrzennego na tryb konwersacyjny musi przebiegać szybko i sprawnie, aby nie miała wpływu na jakość połączenia.

Renderowanie przez głośniki

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

Wytyczne dotyczące wdrażania śledzenia głowy

W tej sekcji skupiono się na dynamicznym dźwięku przestrzennym, który ma specyficzne wymagania dotyczące zestawu słuchawkowego.

Interfejs użytkownika

Po wdrożeniu i sparowaniu zestawu słuchawkowego obsługującego dźwięk przestrzenny sprawdź, czy interfejs użytkownika zachowuje się następująco:

  • Jeśli w ustawieniach urządzenia Bluetooth włączono ustawienie dźwięku przestrzennego dla zestawu słuchawkowego, w obszarze dźwięku przestrzennego pojawi się ustawienie śledzenia głowy :

    ht-ui

    Rysunek 2. Ustawienia dźwięku przestrzennego i śledzenia głowy.

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

  • Domyślny stan śledzenia głowy po pierwszym sparowaniu zestawu słuchawkowego jest ustawiony na włączony .

  • Stan wybrany przez użytkownika, niezależnie od tego, czy jest włączony, czy wyłączony, musi zostać utrzymany po ponownym uruchomieniu telefonu lub rozparowaniu i sparowaniu zestawu słuchawkowego.

Zachowanie funkcjonalne

Raportowanie pozycji głowy

  • Informacje o ułożeniu głowy we współrzędnych x, y i z wysyłane z zestawu słuchawkowego do urządzenia z systemem Android muszą szybko i dokładnie odzwierciedlać ruchy głowy użytkownika.
  • Raportowanie pozycji głowy przez łącze Bluetooth musi być zgodne z protokołem zdefiniowanym przez HID .
  • Zestaw słuchawkowy musi wysyłać informacje o śledzeniu głowy do telefonu z systemem Android tylko wtedy, gdy użytkownik włączy śledzenie głowy w interfejsie ustawień urządzenia Bluetooth.

Wydajność

Czas oczekiwania

Opóźnienie śledzenia głowy definiuje się jako czas upływający od ruchu głowy zarejestrowanego przez bezwładnościową jednostkę pomiarową (IMU) do wykrycia przez przetworniki słuchawek zmiany dźwięku spowodowanej tym ruchem. Opóźnienie śledzenia głowy nie może przekraczać 150 ms.

Częstotliwość zgłaszania pozycji głowy

Gdy śledzenie głowy jest aktywne, zestaw słuchawkowy musi raportować ułożenie głowy w zalecanych odstępach czasu wynoszących około 20 ms. Aby uniknąć uruchomienia w telefonie logiki wykrywania nieaktualnych danych wejściowych podczas zakłóceń transmisji Bluetooth, maksymalny czas między dwiema aktualizacjami nie może przekraczać 40 ms.

Optymalizacja mocy

Aby zoptymalizować moc, zalecamy, aby implementacja korzystała z mechanizmów przełączania kodeków Bluetooth i wyboru trybu opóźnienia zapewnianych przez interfejsy audio HAL i Bluetooth audio HAL .

Implementacje AOSP platformy audio i stosu Bluetooth obsługują już sygnały sterujące przełączaniem kodeków. Jeśli implementacja producenta OEM wykorzystuje podstawową warstwę audio HAL dla dźwięku Bluetooth, znaną jako tryb odciążania kodeka , producent OEM musi zapewnić, że warstwa audio HAL przekazuje te sygnały między warstwą audio HAL a stosem Bluetooth.

Przełączanie kodeków

Gdy włączony jest dynamiczny dźwięk przestrzenny i śledzenie głowy, użyj kodeka o niskim opóźnieniu, takiego jak Opus . Podczas odtwarzania nieprzestrzennej zawartości audio należy używać kodeków o niskim poborze mocy, takich jak Advanced Audio Coding (AAC) .

Podczas przełączania kodeków postępuj zgodnie z poniższymi zasadami:

  • Śledź tylko aktywność w następujących strumieniach wyjściowych audio HAL:
    • Dedykowane wyjście przestrzennika
    • Strumienie specyficzne dla multimediów, takie jak odtwarzanie głębokiego bufora lub skompresowanego odciążania
  • Gdy wszystkie odpowiednie strumienie są bezczynne i rozpoczyna się strumień modułu przestrzennego, rozpocznij strumień Bluetooth z opcją isLowLatency ustawioną na true , aby określić kodek o niskim opóźnieniu.

  • Gdy wszystkie odpowiednie strumienie są bezczynne i rozpoczyna się strumień multimediów, rozpocznij strumień Bluetooth z opcją isLowLatency ustawioną na wartość false , aby określić kodek o niskim poborze mocy.

  • Jeśli strumień multimediów jest aktywny i rozpocznie się strumień przestrzenny, zrestartuj strumień Bluetooth z ustawieniem isLowLatency na true .

Po stronie zestawu słuchawkowego musi on obsługiwać dekodery o niskim opóźnieniu i małej mocy oraz implementować standardowy protokół wyboru kodeka.

Regulacja trybu opóźnienia

Regulacja trybu opóźnienia następuje po wybraniu kodeka o niskim opóźnieniu.

W zależności od tego, czy śledzenie ruchu głowy jest włączone, czy wyłączone, regulacja trybu opóźnienia wykorzystuje dostępne mechanizmy w celu zmniejszenia lub zwiększenia opóźnienia w celu osiągnięcia najlepszego kompromisu pomiędzy opóźnieniem, mocą i jakością dźwięku. Gdy włączony jest dźwięk przestrzenny i włączone jest śledzenie głowy, wybierany jest tryb małego opóźnienia. Gdy włączony jest dźwięk przestrzenny i wyłączone jest śledzenie głowy, wybierany jest tryb swobodnego opóźnienia. Regulacja opóźnienia zapewnia znaczną oszczędność energii i zwiększoną niezawodność łącza audio Bluetooth, gdy żądany jest tylko statyczny dźwięk przestrzenny. Najpopularniejszym mechanizmem regulacji opóźnienia jest zmniejszenie lub zwiększenie rozmiaru bufora jitter w zestawie słuchawkowym Bluetooth.