Implementierung von hochwertigem räumlichem Audio und Head-Tracking

Android 13 führt die Unterstützung für räumliches Audio ein, indem es APIs bereitstellt, mit denen App-Entwickler herausfinden können, ob die aktuelle Kombination aus Telefonimplementierung, angeschlossenem Headset und Benutzereinstellungen die immersive Wiedergabe von Mehrkanal-Audioinhalten ermöglicht.

Mithilfe der neuen Audio-Pipeline-Architektur und der Sensor-Framework-Integration können OEMs einen Spatializer-Audioeffekt mit Unterstützung für Head-Tracking mit dem erforderlichen Leistungs- und Latenzniveau bereitstellen. Das HID-Protokoll legt fest, wie ein Head-Tracking-Gerät über Bluetooth angeschlossen und über das Android-Sensor-Framework als HID-Gerät verfügbar gemacht wird. Weitere Anforderungen und Validierung finden Sie unter Spatial Audio und Head Tracking .

Die Richtlinien auf dieser Seite gelten für eine räumliche Audiolösung, die die neuen räumlichen Audio-APIs und die neue Audioarchitektur mit einem Android-Telefon mit Android 13 und höher und kompatiblen Headsets mit Head-Tracking-Sensor übernimmt.

Richtlinien für die Implementierung dynamischer und statischer räumlicher Audiomodi

Statisches räumliches Audio erfordert kein Head-Tracking, sodass im Headset keine spezifischen Funktionen erforderlich sind. Alle kabelgebundenen und kabellosen Headsets unterstützen statisches räumliches Audio.

API-Implementierung

OEMs MÜSSEN die in Android 12 eingeführte Spatializer Klasse implementieren. Die Implementierung muss die für die Spatializer Klasse eingeführten CTS-Tests bestehen.

Eine robuste API-Implementierung stellt sicher, dass App-Entwickler, insbesondere Medien-Streaming-Dienste, sich auf ein konsistentes Verhalten im gesamten Ökosystem verlassen und die besten Inhalte entsprechend den Gerätefunktionen, dem aktuellen Rendering-Kontext und den Benutzerentscheidungen auswählen können.

Benutzeroberfläche

Überprüfen Sie nach der Implementierung der Spatializer Klasse, ob Ihre Benutzeroberfläche das folgende Verhalten aufweist:

  • Wenn das Spatial Audio-fähige Headset gekoppelt ist, wird in den Bluetooth-Geräteeinstellungen für dieses Headset ein Spatial Audio- Schalter angezeigt:

    spatial-audio-ui

    Abbildung 1. Räumliche Audioeinstellung.

  • Die Einstellungen sind verfügbar, wenn das Headset nicht angeschlossen ist.

  • Der Standardstatus für räumliches Audio ist nach der ersten Kopplung des Headsets auf „Aktiviert“ eingestellt.

  • Der vom Benutzer ausgewählte Status, ob aktiviert oder deaktiviert, hält einen Neustart des Telefons oder das Entkoppeln und Koppeln des Headsets aufrecht.

Funktionelles Verhalten

Audioformate

Die folgenden Audioformate MÜSSEN durch den Spatializer-Effekt gerendert werden, wenn räumliches Audio aktiviert ist und das Rendering-Gerät ein kabelgebundenes oder Bluetooth-Headset ist:

  • AAC, 5.1 Kanäle
  • Rohes PCM, 5.1 Kanäle

Für ein besseres Benutzererlebnis empfehlen wir dringend, die folgenden Formate/Kanalkonfigurationen zu unterstützen:

  • Dolby Digital Plus
  • 5.1.2, 7.1, 7.1.2, 7.1.4 Kanäle

Wiedergabe von Stereoinhalten

Stereoinhalte dürfen nicht über die Spatializer-Effekt-Engine gerendert werden, auch wenn räumliches Audio aktiviert ist. Wenn eine Implementierung die Räumlichkeit von Stereoinhalten ermöglicht, muss sie eine benutzerdefinierte Benutzeroberfläche bieten, mit der der Benutzer diese Funktion einfach aktivieren oder deaktivieren kann. Wenn räumliches Audio aktiviert ist, muss es möglich sein, zwischen der Wiedergabe räumlicher Mehrkanalinhalte und nicht räumlicher Stereoinhalte zu wechseln, ohne dass Änderungen an den Benutzereinstellungen oder eine erneute Verbindung oder Neukonfiguration des Headsets erforderlich sind. Der Übergang zwischen räumlichen Audioinhalten und Stereoinhalten muss mit minimalen Audiostörungen erfolgen.

Anwendungsfallübergänge und Parallelität

Behandeln Sie spezielle Anwendungsfälle wie folgt:

  • Benachrichtigungen müssen mit dem räumlichen Audioinhalt auf die gleiche Weise gemischt werden wie mit nichträumlichem Audioinhalt.
  • Klingeltöne müssen mit räumlichen Audioinhalten gemischt werden dürfen. Standardmäßig pausiert der Audiofokusmechanismus jedoch den räumlichen Audioinhalt, wenn ein Klingelton vorhanden ist.
  • Beim Annehmen oder Tätigen eines Telefonanrufs oder einer Videokonferenz muss die räumliche Audiowiedergabe angehalten werden. Die räumliche Audiowiedergabe muss nach Beendigung des Anrufs mit denselben räumlichen Audioeinstellungen fortgesetzt werden. Die Neukonfiguration eines Audiopfads zum Wechsel vom räumlichen Audiomodus in den Konversationsmodus muss schnell und nahtlos genug erfolgen, damit das Anruferlebnis nicht beeinträchtigt wird.

Wiedergabe über Lautsprecher

Die Unterstützung der Audioräumlichkeit über Lautsprecher oder des transauralen Modus ist nicht erforderlich.

Richtlinien zur Implementierung von Headtracking

Dieser Abschnitt konzentriert sich auf dynamisches räumliches Audio, für das besondere Headset-Anforderungen gelten.

Benutzeroberfläche

Überprüfen Sie nach der Implementierung und Kopplung des räumlichen Audio-fähigen Headsets, dass Ihre Benutzeroberfläche das folgende Verhalten aufweist:

  • Wenn in den Bluetooth-Geräteeinstellungen die Spatial Audio- Einstellung für das Headset aktiviert ist, wird unter Spatial Audio eine Head-Tracking- Einstellung angezeigt:

    ht-ui

    Abbildung 2. Räumliche Audio- und Head-Tracking-Einstellung.

  • Die Head-Tracking-Einstellung ist NICHT sichtbar, wenn räumliches Audio deaktiviert ist.

  • Der Standardstatus für die Kopfverfolgung nach der ersten Kopplung des Headsets ist auf „Aktiviert“ eingestellt.

  • Der vom Benutzer ausgewählte Status, ob aktiviert oder deaktiviert, muss über einen Neustart des Telefons oder das Entkoppeln und Koppeln des Headsets bestehen bleiben.

Funktionelles Verhalten

Berichterstattung über die Kopfhaltung

  • Informationen zur Kopfhaltung in X-, Y- und Z-Koordinaten, die vom Headset an das Android-Gerät gesendet werden, müssen die Kopfbewegungen des Benutzers schnell und genau widerspiegeln.
  • Die Kopfhaltungsmeldung über die Bluetooth-Verbindung muss dem über HID definierten Protokoll folgen.
  • Das Headset darf die Head-Tracking-Informationen nur dann an das Android-Telefon senden, wenn der Benutzer Head-Tracking in der Benutzeroberfläche für die Bluetooth-Geräteeinstellungen aktiviert.

Leistung

Latenz

Die Head-Tracking-Latenz ist definiert als die Zeit, die von der Erfassung der Kopfbewegung durch die Inertialmesseinheit (IMU) bis zur Erkennung der durch diese Bewegung verursachten Klangveränderung durch die Kopfhörerwandler vergeht. Die Head-Tracking-Latenz darf 150 ms nicht überschreiten.

Melderate der Kopfhaltung

Wenn die Kopfverfolgung aktiv ist, muss das Headset die Kopfhaltung in einer empfohlenen periodischen Basis von etwa 20 ms melden. Um zu vermeiden, dass die Logik zur Erkennung veralteter Eingaben auf dem Telefon während eines Übertragungsjitters des Bluetooth ausgelöst wird, darf die maximale Zeit zwischen zwei Aktualisierungen 40 ms nicht überschreiten.

Leistungsoptimierung

Um die Leistung zu optimieren, empfehlen wir, dass die Implementierung die Bluetooth-Codec-Umschalt- und Latenzmodus- Auswahlmechanismen verwendet, die von den Audio-HAL- und Bluetooth-Audio-HAL- Schnittstellen bereitgestellt werden.

Die AOSP-Implementierungen des Audio-Frameworks und des Bluetooth-Stacks unterstützen bereits die Signale zur Steuerung der Codec-Umschaltung. Wenn die OEM-Implementierung den primären Audio-HAL für Bluetooth-Audio verwendet, der als Codec-Offload-Modus bezeichnet wird, muss der OEM sicherstellen, dass der Audio-HAL diese Signale zwischen dem Audio-HAL und dem Bluetooth-Stack weiterleitet.

Codec-Umschaltung

Wenn dynamisches räumliches Audio und Head-Tracking aktiviert sind, verwenden Sie einen Codec mit geringer Latenz, z. B. Opus . Verwenden Sie beim Abspielen nichträumlicher Audioinhalte einen Codec mit geringem Stromverbrauch, z. B. Advanced Audio Coding (AAC) .

Befolgen Sie beim Codec-Wechsel die folgenden Regeln:

  • Verfolgen Sie nur die Aktivität auf den folgenden Audio-HAL-Ausgabestreams:
    • Dedizierte Spatializer-Ausgabe
    • Medienspezifische Streams, z. B. Deep Buffer oder komprimierte Offload-Wiedergabe
  • Wenn alle relevanten Streams inaktiv sind und der Spatializer-Stream startet, starten Sie den Bluetooth-Stream mit isLowLatency auf „ true , um einen Codec mit niedriger Latenz anzugeben.

  • Wenn alle relevanten Streams inaktiv sind und ein Medienstream startet, starten Sie den Bluetooth-Stream mit isLowLatency auf false , um einen Codec mit geringem Stromverbrauch anzugeben.

  • Wenn ein Medienstream aktiv ist und der Spatializer-Stream startet, starten Sie den Bluetooth-Stream neu, wobei isLowLatency auf true gesetzt ist .

Auf der Headset-Seite muss das Headset sowohl die Low-Latency- als auch die Low-Power-Decoder unterstützen und das Standard-Codec-Auswahlprotokoll implementieren.

Anpassung des Latenzmodus

Die Anpassung des Latenzmodus erfolgt, wenn der Codec mit niedriger Latenz ausgewählt wird.

Abhängig davon, ob das Head-Tracking ein- oder ausgeschaltet ist, nutzt die Anpassung des Latenzmodus verfügbare Mechanismen, um die Latenz zu reduzieren oder zu erhöhen und so den besten Kompromiss zwischen Latenz, Leistung und Audioqualität zu erreichen. Wenn räumliches Audio und Head-Tracking aktiviert sind, wird der Modus mit geringer Latenz ausgewählt. Wenn räumliches Audio aktiviert und Head-Tracking deaktiviert ist, wird der Modus mit freier Latenz ausgewählt. Die Latenzanpassung sorgt für erhebliche Energieeinsparungen und eine erhöhte Robustheit der Bluetooth-Audioverbindung, wenn nur statisches räumliches Audio angefordert wird. Der gebräuchlichste Latenzanpassungsmechanismus ist die Reduzierung oder Erweiterung der Jitter-Puffergröße im Bluetooth-Headset.