Erfassung von Kopfbewegungen über LE Audio

Bluetooth (BT) Low Energy (LE) Audio führt die logischen Transportmechanismen Asynchronous Connection-oriented Logical (LE-ACL) und Isochronous (LE-ISO) für Head-Tracking-Daten (HT) ein.

Android 15 unterstützt Anpassungen des Latenzmodus für HT, je nachdem, ob der LE-ACL- oder LE-ISO-Transportmechanismus verwendet wird.

Auf dieser Seite wird beschrieben, wie das Audio-Framework, das Audio-HAL und der Bluetooth-Stack interagieren, um die vom Host und vom Headset unterstützten LE-ACL- oder LE-ISO-Transportmechanismen zu erkennen und auszuwählen.

Unterstützung für LE-ACL und LE-ISO

Android 15 unterstützt die Transportmechanismen LE-ACL und LE-ISO über eine anbieterdefinierte Systemeigenschaft, Audio-HAL-Latenzmodi und Spatializer-Verbindungsmodi.

Systemattribut

In der Implementierung des Smartphone-Anbieters werden die unterstützten Transportmechanismen in der Systemeigenschaft bluetooth.core.le.dsa_transport_preference aufgeführt. Der Wert ist eine durch Kommas getrennte Liste von Strings, in der die unterstützten Transportmethoden in der Reihenfolge der Präferenz aufgeführt sind:

  • le-acl: LE-ACL-Transport, wenn die Daten der inertialen Messeinheit (IMU) über den Sensor-Stack gemeldet werden.
  • iso-hw: ISO-Transport mit der Möglichkeit, HT-Daten direkt vom Bluetooth-Controller zum Spatializer im Audio-DSP zu tunneln.
  • iso-sw: ISO-Transport ohne Tunneling-Funktion, wenn die IMU-Daten über den Sensor-Stack gemeldet werden.

Latenzmodi

Bei BT LE Audio ist der Mechanismus, mit dem der BT-Stack die unterstützten Latenzmodi an den Audio-HAL und das Audio-Framework übergibt, derselbe wie für BT Classic (A2DP). Das Audio-HAL meldet die unterstützten Latenzmodi entsprechend dem aktuell ausgewählten Audiogerät.

A2DP-Implementierungen unterstützen nur die Modi FREE und LOW_LATENCY.

Im Gegensatz dazu werden für BT LE Audio die folgenden Latenzmodi im Audio-HAL definiert, um die Transportmechanismen LE-ACL und LE-ISO zu unterstützen:

  • FREE: Dieser Wert gibt an, dass es keine spezifische Einschränkung für die Latenz gibt. Dieser Modus wird verwendet, wenn eine niedrige Latenz nicht unterstützt wird (angegeben durch das HAL) oder wenn HT nicht aktiv ist (angegeben durch das Framework).

  • LOW: Dieser Wert weist auf eine relativ niedrige Latenz (z. B. unter 100 ms) hin, die mit dem HT-Betrieb kompatibel ist. Dieser Modus wird verwendet, wenn eine geringe Latenz unterstützt wird und HID über das ACL-Protokoll übertragen wird (angegeben durch den HAL) oder wenn HT aktiv ist und keine anderen Modi mit geringer Latenz verfügbar sind (angegeben durch das Framework).

  • DYNAMIC_SPATIAL_AUDIO_SOFTWARE: Dieser Modus wird verwendet, wenn eine der folgenden Bedingungen erfüllt ist:

    • Wenn eine niedrige Latenz unterstützt wird, wird HID über das ISO-Protokoll übertragen und kann nicht an die Spatializer-Effekt-Engine (angegeben durch den HAL) getunnelt werden.
    • Wenn HT aktiv ist und das ISO-Protokoll verwendet wird, wenn das Audio-Framework die HID-Daten für die Spatializer-Effekt-Engine bereitstellt (angegeben durch das Framework).

    In diesem Modus übernimmt die HT-Computing-Bibliothek im Framework die gesamte Vorverarbeitung der IMU-Daten und den Abgleich mit den Bewegungen des Smartphones, die von den Smartphone-Sensoren erfasst werden.

  • DYNAMIC_SPATIAL_AUDIO_HARDWARE: Dieser Modus wird verwendet, wenn eine der folgenden Bedingungen erfüllt ist:

    • Wenn eine niedrige Latenz unterstützt wird, wird HID über das ISO-Protokoll übertragen und kann an die Spatializer-Effekt-Engine getunnelt werden (angegeben durch den HAL).
    • Wenn die HT aktiv ist und das ISO-Protokoll verwendet wird, werden die HID-Daten an die Spatializer-Effekt-Engine getunnelt (angegeben durch das Framework).

    In diesem Modus empfängt die Spatializer-Effekt-Engine die unverarbeiteten IMU-Daten direkt vom Bluetooth-Stack oder vom Bluetooth-Controller. Die Implementierung des Spatializer-Effekts übernimmt die gesamte Vorverarbeitung der IMU-Daten und den Abgleich mit den durch die Smartphone-Sensoren erfassten Bewegungen des Smartphones.

Die Enumerationen für den Latenzmodus werden in Spatializer.cpp der Systemeigenschaft bluetooth.core.le.dsa_transport_preference zugeordnet.

Unterstützung für Spatializer

Der Spatializer-Controller im Audio Policy Service steuert die Auswahl des HT-Transportprotokolls über LE Audio. Die Implementierung der Spatializer-Effekt-Engine weist auf die Unterstützung von HT-Datentunneling mit der HeadTracking.ConnectionMode-Funktion hin.

Die unterstützten HT-Verbindungsmodi sind:

  • FRAMEWORK_PROCESSED: Das Audio-Framework stellt vorverarbeitete IMU-Daten im Format „Head-to-Stage-Vektor“ für HAL bereit. Dieser Standardmodus entspricht dem aktuellen Modus mit BT Classic.
  • DIRECT_TO_SENSOR_SW: Die Spatializer-Effekt-Engine wird über den Sensor-Softwarestack direkt mit dem Sensor verbunden. Das Audio-Framework steuert nur den aktivierten Status des Sensors. Softwareimplementierungen, die nicht die AOSP-libheadtracking-IMU-Datenvorverarbeitung oder DSP-offloadierte Spatializer-Implementierungen verwenden, können den DIRECT_TO_SENSOR_SW-Modus verwenden.
  • DIRECT_TO_SENSOR_TUNNEL: Die Spatializer-Effekt-Engine ist über Hardware-Tunneling direkt mit dem Sensor verbunden. Das Audio-Framework steuert nur den aktivierten Status des Sensors. DSP-offload-Implementierungen des Spatializers können den DIRECT_TO_SENSOR_TUNNEL-Modus verwenden.

Auswahl des Latenzmodus

Das Framework wählt einen Latenzmodus aus der Liste der unterstützten Latenzmodi aus, die vom HAL gemeldet werden. Der Latenzmodus wird festgelegt basierend auf dem aktuellen HT-Aktivierungsstatus, der aktuellen Spatializer-Unterstützung und der anbieterspezifischen Systemeigenschaft, die eine Prioritätsreihenfolge zwischen Transportmechanismen festlegt.

Das Framework verwendet das folgende Verfahren in selectHeadtrackingConnectionMode_l, um den Latenzmodus auszuwählen:

  1. Das Framework lädt die Transportpräferenz aus der bluetooth.core.le.dsa_transport_preference-Systemeigenschaft.
  2. Die vom Audio-HAL gemeldeten unterstützten Latenzmodi werden gefiltert und anhand der in Schritt 1 geladenen Liste sortiert.
  3. Wenn der Low-Latency-Modus mit der höchsten Priorität iso-hw ist und die Spatializer-Implementierung eine direkte Sensorverbindung unterstützt (d. h. DIRECT_TO_SENSOR_SW oder DIRECT_TO_SENSOR_TUNNEL im Spatializer festgelegt sind), wird der Latenzmodus auf DYNAMIC_SPATIAL_AUDIO_HARDWARE festgelegt.
  4. Wenn der Low-Latency-Modus mit der höchsten Priorität iso-hw ist und die Spatializer-Implementierung keine direkte Sensorverbindung unterstützt (DIRECT_TO_SENSOR_SW oder DIRECT_TO_SENSOR_TUNNEL sind im Spatializer nicht festgelegt), bestimmt der nächste bevorzugte Modus (entweder iso-sw oder le-acl) den Latency-Modus (entweder DYNAMIC_SPATIAL_AUDIO_SOFTWARE oder LOW).

    Wenn der nächste bevorzugte Modus nicht angegeben ist, meldet das System einen Produktkonfigurationsfehler.