Mit Bluetooth Low Energy (BT LE) Audio werden die logischen asynchronen verbindungsorientierten (LE-ACL) und isochronen (LE-ISO) Transportmechanismen für die Erfassung von Kopfbewegungen (HT) eingeführt.
Android 15 unterstützt die Anpassung 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, die Audio-HAL und der Bluetooth-Stack interagieren, um die vom Host und vom Headset unterstützten LE-ACL- oder LE-ISO-Transportmechanismen zu ermitteln 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
In der Implementierung des Smartphone-Anbieters werden die unterstützten Transportmechanismen in der
bluetooth.core.le.dsa_transport_preference Systemeigenschaft aufgeführt. Der Wert ist eine durch Kommas getrennte Liste von Strings,
in der die unterstützten Transporte in der Reihenfolge der Präferenz aufgeführt sind:
le-acl: LE-ACL-Transport, wenn die Daten der Inertial Measurement Unit (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 die Audio-HAL und das Audio-Framework meldet, 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.
Im Gegensatz dazu sind für BT LE Audio die folgenden Latenzmodi in der Audio-HAL definiert, um die Hinzufügung von LE-ACL- und LE-ISO Transportmechanismen 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 die HAL) oder wenn HT nicht aktiv ist (angegeben durch das Framework).LOW: Dieser Wert gibt eine relativ niedrige Latenz an (z. B. weniger als 100 ms), die mit dem HT-Betrieb kompatibel ist. Dieser Modus wird verwendet, wenn eine niedrige Latenz unterstützt wird und HID über das ACL-Protokoll übertragen wird (angegeben durch die HAL) oder wenn HT aktiv ist und keine anderen Modi mit niedriger 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, HID über das ISO-Protokoll übertragen wird und HID nicht an die Spatializer-Effekt-Engine getunnelt werden kann (angegeben durch die HAL).
- Wenn HT aktiv ist und das ISO-Protokoll verwendet wird, wenn das Audio-Framework die HID-Daten an die Spatializer-Effekt-Engine übergibt (angegeben durch das Framework).
In diesem Modus führt die HT-Computing-Bibliothek im Framework die gesamte Vorverarbeitung der IMU-Daten und den Abgleich mit den durch die Smartphone-Sensoren angegebenen Smartphone-Bewegungen durch.
DYNAMIC_SPATIAL_AUDIO_HARDWARE: Dieser Modus wird verwendet, wenn eine der folgenden Bedingungen erfüllt ist:- Wenn eine niedrige Latenz unterstützt wird, HID über das ISO-Protokoll übertragen wird und HID an die Spatializer-Effekt-Engine getunnelt werden kann (angegeben durch die HAL).
- Wenn HT aktiv ist und das ISO-Protokoll verwendet wird, wenn die HID-Daten an die Spatializer-Effekt-Engine getunnelt werden (angegeben durch das Framework).
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 führt die gesamte Vorverarbeitung der IMU-Daten und den Abgleich mit den durch die Smartphone-Sensoren angegebenen Smartphone-Bewegungen durch.
Die Aufzählungen des Latenzmodus werden der bluetooth.core.le.dsa_transport_preference
Systemeigenschaft in Spatializer.cpp zugeordnet.
Spatializer-Unterstützung
Der Spatializer
Controller im Audio-Policy-Dienst steuert die Auswahl des HT-Transport
Protokolls über LE Audio. Die Implementierung der Spatializer-Effekt-Engine gibt
die Unterstützung für das Tunneln von HT-Daten mit der HeadTracking.ConnectionMode Funktion an.
Die unterstützten HT-Verbindungsmodi sind wie folgt:
FRAMEWORK_PROCESSED: Das Audio-Framework stellt der HAL vorverarbeitete IMU-Daten im Vektorformat „Head-to-Stage“ zur Verfügung. Dieser Standardmodus entspricht dem aktuellen Modus mit BT Classic.DIRECT_TO_SENSOR_SW: Die Spatializer-Effekt-Engine stellt über den Sensor-Software-Stack eine direkte Verbindung zum Sensor her. Das Audio-Framework steuert nur den aktivierten Status des Sensors. Softwareimplementierungen, die nicht die AOSP-Vorverarbeitung von IMU-Daten (libheadtracking) oder DSP-ausgelagerte Spatializer-Implementierungen verwenden, können den ModusDIRECT_TO_SENSOR_SWverwenden.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. DSP-ausgelagerte Spatializer-Implementierungen können den ModusDIRECT_TO_SENSOR_TUNNELverwenden.
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 den folgenden Prozess in selectHeadtrackingConnectionMode_l
um den Latenzmodus auszuwählen:
- Das Framework lädt die Transportpräferenz aus der
bluetooth.core.le.dsa_transport_preferenceSystemeigenschaft. - Die von der Audio-HAL gemeldeten unterstützten Latenzmodi werden gefiltert und anhand der in Schritt 1 geladenen Liste sortiert.
- Wenn der Modus mit der höchsten Priorität und niedriger Latenz
iso-hwist und die Spatializer-Implementierung eine direkte Sensorverbindung unterstützt (d. h.DIRECT_TO_SENSOR_SWoderDIRECT_TO_SENSOR_TUNNELsind im Spatializer festgelegt), wird der Latenzmodus aufDYNAMIC_SPATIAL_AUDIO_HARDWAREgesetzt. Wenn der Modus mit der höchsten Priorität und niedriger Latenz
iso-hwist und die Spatializer-Implementierung keine direkte Sensorverbindung unterstützt (DIRECT_TO_SENSOR_SWoderDIRECT_TO_SENSOR_TUNNELsind nicht im Spatializer festgelegt), bestimmt der nächste bevorzugte Modus (entwederiso-swoderle-acl) den Latenzmodus (entwederDYNAMIC_SPATIAL_AUDIO_SOFTWAREoderLOW).Wenn der nächste bevorzugte Modus nicht angegeben ist, meldet das System einen Produktkonfigurationsfehler.