Android 13 to standardowy sposób dla producentów OEM obsługują dźwięk przestrzenny i monitorowanie ruchów głowy bez konieczności stosowania rozwiązań specyficznych dla danego dostawcy dostosowania aplikacji i pakiety SDK.
Dźwięk przestrzenny to technologia wykorzystywana do tworzenia pola dźwięku otaczającego słuchacz. Dźwięk przestrzenny umożliwia użytkownikom postrzeganie kanałów i poszczególnych dźwięków w miejscach innych niż fizyczne położenie przetworników urządzenia audio używanego do odtwarzania. Na przykład dźwięk przestrzenny oferuje możliwość słuchania wielokanałowej ścieżki dźwiękowej przez słuchawki. Korzystanie z trybu przestrzennego dźwięku, użytkownicy słuchawek będą widzieć dialogi przed sobą, a dźwięk przestrzenny mają za sobą jakieś efekty, mimo że mamy tylko dwa przetworniki.
Monitorowanie ruchów głowy pomaga użytkownikowi zrozumieć charakter dźwięku przestrzennego. jest symulowana wokół głowy. Ta funkcja działa tylko wtedy, gdy opóźnienie jest małe, a czas oczekiwania jest mierzony jako czas upływający między momentem, w którym użytkownik Porusza głową i gdy słyszy, jak porusza się wirtualny głośnik odpowiednio się zmienia.
Android 13 optymalizuje dźwięk przestrzenny i głowę przez oferowanie przetwarzania dźwięku przestrzennego na najniższym możliwym poziomie w ramach potoku audio, aby uzyskać jak najmniejsze opóźnienia.
Architektura
Zmodyfikowana platforma audio i interfejs API Androida w Androidzie 13 ułatwia wdrażanie technologii dźwięku przestrzennego w całym ekosystemie.
Na poniższym rysunku przedstawiono zmiany związane z dźwiękiem przestrzennym wprowadzone w architektura potoku audio z Androidem 13:
Rysunek 1. Architektura potoku audio z narzędziem przestrzennym
W nowym modelu funkcja spatializer jest częścią struktury audio. odłączony od dekodera. Spatializer bierze pod uwagę mieszane treści audio, renderuje strumień stereo do HAL Audio. Odłączenie narzędzia przestrzennego od pozwala producentom OEM wybrać różnych dostawców oraz uzyskanie pożądanego czasu oczekiwania w obie strony w przypadku śledzenia ruchów głowy. Ten nowy model Zawiera również zaczepy na czujniku do śledzenia ruchów głowy.
Ilustracja przedstawiająca architekturę systemu platformy audio aby uzyskać efekt przestrzenny i monitorowania ruchów głowy:
Rysunek 2. Architektura systemu z przestrzenią i monitorowaniem ruchów głowy
Wszystkie interfejsy API dźwięku przestrzennego są zgrupowane publicznie.
Spatializer
na poziomie aplikacji. SpatializerHelper
klasa w interfejsach usługi audio z zarządzanymi komponentami interfejsu systemu
funkcje związane z narzędziem przestrzennym na podstawie platformy i połączonego urządzenia.
funkcje zabezpieczeń. Nowa klasa Spatializer
w usłudze zasad dotyczących reklam audio tworzy i kontroluje wymiar przestrzenny.
wykres audio niezbędny do miksowania i przestrzennego miksowania kanałów wielokanałowych na podstawie
możliwości określonych przez OEM,
połączone urządzenia i aktywne przypadki użycia. Nowa klasa miksera SpatializerThread
łączy utwory wielokanałowe, a następnie przesyła powstałą składankę do efektów po przetworzeniu.
który renderuje dźwięk stereo do interfejsu HAL Audio. Przy monitorowaniu ruchów głowy
SpatializerPoseController
grupuje funkcje związane ze śledzeniem ruchów głowy,
do interfejsu czujnika oraz łączenia i filtrowania sygnałów z czujników
który jest przesyłany do silnika efektu. Dane z czujników śledzenia ruchów głowy są przenoszone przy użyciu protokołu HID
od sterownika Bluetootha.
Zmiany w architekturze potoku audio w Androidzie 13 poprawić następujące elementy:
- Skrócenie czasu oczekiwania między filtrem przestrzennym a słuchawkami.
- Udostępnianie ujednoliconych interfejsów API przeznaczonych dla deweloperów aplikacji.
- Kontrolowanie stanu śledzenia nagłówka za pomocą systemowych interfejsów API.
- Wykrywamy czujniki śledzące ruchy głowy i wiąże je z aktywnymi urządzeniami audio.
- Łączy sygnały z różnych czujników i oblicza pozycję głowy, jest wykorzystywana przez mechanizm efektu przestrzennego.
Funkcje takie jak kompensacja odchyleń, wykrywanie bezruchu i ograniczanie częstotliwości mogą można wdrożyć za pomocą biblioteki narzędzi do śledzenia ruchów głowy.
Interfejsy API dźwięku przestrzennego
Android 13 oferuje system dźwięku przestrzennego i program dla programistów API.
OEM może dostosowywać działanie aplikacji w zależności od dostępności funkcji i stanu włączenia, ustawianego przez systemowe interfejsy API. Aplikacje mogą też skonfigurować atrybuty audio, Wyłączanie dźwięku przestrzennego ze względów estetycznych lub do wskazania, że strumień audio jest już przetworzono na potrzeby dźwięku przestrzennego.
Informacje o interfejsach API przeznaczonych dla programistów znajdziesz na stronie Spatializer
.
OEM może za pomocą systemowych interfejsów API wdrożyć interfejs ustawień dźwięków i Bluetootha, która pozwala użytkownikowi kontrolować stan dźwięku przestrzennego i głowy. funkcji śledzenia użytkowników. Użytkownik może włączyć lub wyłączyć dźwięk przestrzenny. dla głośnika i słuchawek przewodowych w interfejsie ustawień dźwięku. Przestrzeń przestrzenna ustawienie dźwięku głośnika jest dostępne tylko wtedy, gdy jest używany efekt przestrzenny obsługuje tryb transaudycyjny.
Użytkownik może też włączyć lub wyłączyć dźwięk przestrzenny i śledzenie ruchów głowy w Ustawienia urządzeń Bluetooth dla każdego urządzenia. Ustawienie śledzenia ruchów głowy jest dostępne tylko wtedy, gdy zestaw słuchawkowy Bluetooth ujawnia czujnik śledzący ruchy głowy.
Domyślnie dźwięk przestrzenny jest zawsze WŁĄCZONY, jeśli funkcja jest włączona.
obsługiwane. Zobacz Spatializer.java
.
Nowy czujnik śledzenia ruchów głowy Sensor.TYPE_HEAD_TRACKER
został dodany do
Platforma czujnika i widoczne przez interfejs Sensor HAL jako czujnik dynamiczny
Bluetooth lub USB.
Zintegruj dźwięk przestrzenny
Oprócz wdrożenia silnika efektu przestrzennego producenci OEM muszą skonfigurować do obsługi dźwięku przestrzennego.
Wymagania
Aby zintegrować dźwięk przestrzenny, należy spełnić te wymagania:
- HAL audio i DSP audio muszą obsługiwać osobną ścieżkę wyjściową dla dźwięku przestrzennego audio.
- Aby uzyskać dźwięk przestrzenny ze śledzeniem ruchów głowy, słuchawki muszą mieć wbudowaną głowę czujniki śledzące.
- Implementacja musi być zgodna z proponowanym standardem śledzenia ruchów głowy nad protokołem HID z tagu zestaw słuchawkowy Bluetooth do telefonu.
- Audio HAL w wersji 7.1 do obsługi dźwięku przestrzennego.
Zintegruj dźwięk przestrzenny, wykonując te czynności:
Zadeklaruj obsługę dźwięku przestrzennego w pliku
device.mk
w ten sposób:PRODUCT_PROPERTY_OVERRIDES += \ ro.audio.spatializer_enabled=true
To powoduje, że
AudioService
inicjuje obsługę narzędzia przestrzennego.Zadeklaruj dedykowane wyjście miksu dźwięku przestrzennego w
audio_policy_configuration.xml
w następujący sposób:<audioPolicyConfiguration> <modules> <module> <mixPorts> <mixPort name="spatializer" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER"> <profile name="sa" format="AUDIO_FORMAT_PCM_FLOAT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
Zadeklaruj bibliotekę efektów przestrzennych w
audio_effects.xml
w ten sposób:<audio_effects_conf> <libraries> <library name="spatializer_lib" path="libMySpatializer.so"/> … </libraries> <effects> <effect name="spatializer" library="spatializer_lib" uuid="myunique-uuid-formy-spatializereffect"/>
Dostawcy, którzy stosują efekt przestrzenny, muszą spełniać następujące wymagania:
- Podstawowa konfiguracja i element sterujący są identyczne jak w przypadku innych efektów w sekcji Efekt HAL.
Określone parametry potrzebne platformie do wykrycia obsługiwanych funkcje i konfigurację, na przykład:
SPATIALIZER_PARAM_SUPPORTED_LEVELS
SPATIALIZER_PARAM_LEVEL
SPATIALIZER_PARAM_HEADTRACKING_SUPPORTED
SPATIALIZER_PARAM_HEADTRACKING_MODE
SPATIALIZER_PARAM_SUPPORTED_CHANNEL_MASKS
SPATIALIZER_PARAM_SUPPORTED_SPATIALIZATION_MODES
SPATIALIZER_PARAM_HEAD_TO_STAGE
Więcej informacji:
effect_spatializer.h
.
Rekomendacje
Podczas wdrażania zalecamy producentom OEM stosowanie tych wytycznych:
- Gdy jest dostępna, używaj LE Audio, aby ułatwić interoperacyjność i zmniejszyć opóźnienie celów.
- Opóźnienie w obie strony, od wykrywania ruchu czujnika po dźwięk odbierany przez słuchawki muszą być krótsze niż 150 ms, aby zapewnić wygodę korzystania.
- W przypadku klasycznego Bluetootha (BT) z profilem zaawansowanej dystrybucji dźwięku (A2DP):
Weryfikacja
Aby sprawdzić działanie funkcji dźwięku przestrzennego, przeprowadź testy CTS
dostępny w: SpatializerTest.java
.
Niewłaściwa implementacja algorytmów ustalania przestrzeni lub śledzenia ruchów głowy może spowodować, niespełnienie zaleceń dotyczących czasu oczekiwania w obie strony, opisanego w Rekomendacje.