Erfassung von Kopfbewegungen über LE Audio

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

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, der Audio-HAL und der Bluetooth-Stack interagieren, um die vom Host und dem 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 LE-ACL- und LE-ISO-Transportmechanismen mithilfe einer vom Anbieter definierten Systemeigenschaft, Audio-HAL-Latenzmodi und Spatializer-Verbindungsmodi.

Systemeigenschaft

Die vom Smartphone-Hersteller implementierten unterstützten Transportmechanismen werden 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 Transports in der Reihenfolge der Präferenz aufgeführt sind:

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

Latenzmodi

Bei BT LE-Audio ist der Mechanismus, mit dem der BT-Stack die unterstützten Latenzmodi an die Audio-HAL und das Audio-Framework angibt, derselbe wie für BT Classic (A2DP). Die 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.

Für BT LE Audio werden dagegen in der Audio-HAL die folgenden Latenzmodi definiert, um die Hinzufügung von LE-ACL- und LE-ISO-Transportmechanismen zu unterstützen:

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

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

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

    • Wenn eine geringe Latenz unterstützt wird, wird HID über das ISO-Protokoll übertragen und kann nicht zur Spatializer-Effekt-Engine getunnelt werden (wird von der HAL angezeigt).
    • Wenn HT aktiv ist und das ISO-Protokoll verwendet wird, wenn das Audio-Framework die HID-Daten an die Spatializer-Effekt-Engine weitergibt (vom Framework angegeben).

    In diesem Modus übernimmt die HT-Computing-Bibliothek im Framework die gesamte Vorverarbeitung der IMU-Daten und den Abgleich mit Smartphone-Bewegungen, die durch Telefonsensoren erkannt werden.

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

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

    In diesem Modus empfängt die Spatializer-Effekt-Engine die unverarbeiteten IMU-Daten direkt vom BT-Stack oder BT-Controller. Die Implementierung des Spatializer-Effekts übernimmt die gesamte Vorverarbeitung der IMU-Daten und die Abgleichung mit den Smartphone-Bewegungen, die von den Smartphone-Sensoren angezeigt werden.

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

Unterstützung für Spatializer

Der Spatializer-Controller im Audiorichtliniendienst steuert die Auswahl des HT-Transportprotokolls über LE-Audio. Die Implementierung der Spatializer-Effekt-Engine gibt an, dass HT-Datentunneling mit der Funktion HeadTracking.ConnectionMode unterstützt wird.

Die unterstützten HT-Verbindungsmodi sind:

  • FRAMEWORK_PROCESSED: Das Audio-Framework stellt vorverarbeitete IMU-Daten im Head-to-Stage-Vektorformat an HAL bereit. Dieser Standardmodus entspricht dem aktuellen Modus mit BT Classic.
  • DIRECT_TO_SENSOR_SW: Die Spatializer-Effekt-Engine stellt über den Sensor-Softwarestack eine direkte Verbindung zum Sensor her. Das Audio-Framework steuert nur den Aktivierungsstatus des Sensors. Softwareimplementierungen, die nicht die AOSP-libheadtracking-IMU-Datenvorverarbeitung oder DSP-offloaded-Spatializer-Implementierungen verwenden, können den DIRECT_TO_SENSOR_SW-Modus verwenden.
  • DIRECT_TO_SENSOR_TUNNEL: Die Spatializer-Effekt-Engine stellt über Hardware-Tunneling eine direkte Verbindung zum Sensor her. Das Audio-Framework steuert nur den aktivierten Status des Sensors. Für DSP-ausgelagerte Spatializer-Implementierungen kann der Modus DIRECT_TO_SENSOR_TUNNEL verwendet werden.

Auswahl des Latenzmodus

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

Das Framework verwendet in selectHeadtrackingConnectionMode_l den folgenden Prozess, um den Latenzmodus auszuwählen:

  1. Das Framework lädt die Transporteinstellung aus der Systemeigenschaft bluetooth.core.le.dsa_transport_preference.
  2. Die unterstützten Latenzmodi, die vom Audio-HAL gemeldet werden, werden gefiltert und anhand der in Schritt 1 geladenen Liste sortiert.
  3. Wenn der Modus mit der höchsten Priorität für eine geringe Latenz 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 ist), wird der Latenzmodus auf DYNAMIC_SPATIAL_AUDIO_HARDWARE gesetzt.
  4. Wenn der Modus mit der niedrigsten Latenz 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), wird der Latenzmodus (DYNAMIC_SPATIAL_AUDIO_SOFTWARE oder LOW) durch den nächsten bevorzugten Modus (iso-sw oder le-acl) bestimmt.

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