Freigeben über


Audiostreaming mit Bluetooth HFP-Umgehung

In diesem Artikel wird der Betrieb und die Theorie der Umgehung des Audiostreamings (Bluetooth Hands-Free Profile, HFP) erläutert.

Im Umgehungsmodus fließt der Bluetooth-Audiosteuerungspfad über eine andere Hardwareverbindung als die Hostcontrollerschnittstelle (HCI), z. B. I2S, an den Bluetooth-Controller. Diese andere Hardwareverbindung ist häufig I2S, kann aber eine beliebige Schnittstelle sein, die vom Bluetooth-Hostcontroller bestimmt wird. Diese Verbindung wird als Umgehungs- oder Seitenbandverbindung bezeichnet.

Während Audio-E/A über die Umgehungsverbindung erfolgt, wird der über die Luft synchrone Verbindung orientierte Audiodatenstrom (SCO) weiterhin über die HCI verwaltet. Windows 8 stellt einen HFP-Treiber (Bluetooth Hands-Free Profile) bereit, um die Verwaltung der SCO-Verbindung und anderer Aspekte des Hands-Free-Profils zu vereinfachen. Ein benutzerdefinierter Audiotreiber steuert jedoch die Audiodaten-E/A zwischen Windows und der Umgehungsverbindung.

Der HFP-Treiber und der benutzerdefinierte Steuertreiber für Audio-E/A-Daten verfügen über separate Rollen, die eine effiziente Kommunikation zwischen ihnen erfordern. Diese Kommunikation wird von einer Reihe von IOCTLs verarbeitet, die vom benutzerdefinierten Audiotreiber an den Windows HFP-Treiber übergeben werden.

In der Regel ist die Umgehungsverbindung immer vorhanden. Der Plug & Play-Dienst (PnP) listet die Hardware auf, die diese Verbindung enthält, und lädt den erforderlichen Audiotreiber. Das Audiosystem kann jedoch über HFP-Headsets gekoppelt sein, und die Umgehungsverbindung ist nur nützlich, wenn mindestens ein HFP-Headset gekoppelt ist.

Für jedes gekoppelte HFP-Gerät registriert und aktiviert der Windows HFP-Treiber eine Geräteschnittstelle in der GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS-Schnittstellenklasse. Für HFP-Geräte gelten die folgenden Bedingungen:

  • Wenn Windows den HFP-Treiber aktiviert (normalerweise während des Startvorgangs), registriert und aktiviert der HFP-Treiber eine Schnittstelle für jedes gekoppelte HFP-Gerät.
  • Wenn ein HFP-Gerät zum ersten Mal mit Windows gekoppelt wird, das bereits ausgeführt wird, registriert der HFP-Treiber und aktiviert eine Schnittstelle für das Gerät.
  • Wenn n gekoppelte HFP-Geräte vorhanden sind, registriert der Windows HFP-Treiber n Instanzen der Geräteschnittstelle.
  • Wenn ein gekoppeltes HFP-Gerät entfernt wird, deaktiviert der Windows HFP-Treiber die Geräteschnittstelle.
  • Wenn Windows den HFP-Treiber beendet (normalerweise während des Herunterfahrens oder Neustarts), deaktiviert der HFP-Treiber die Schnittstelle für jedes gekoppelte HFP-Gerät.
  • Der Audiotreiber muss mehrere Ein- und Auslagerungen von Schnittstellen jederzeit verarbeiten, nicht nur beim Starten oder Herunterfahren.

Verwalten von I2S- und SCO-Ressourcen

In diesem Abschnitt werden die Annahmen erläutert, die beim Entwurf der Bluetooth-Umgehung von Audiostreamingunterstützung getroffen wurden.

Derzeit geht Windows davon aus, dass es nur einen Bluetooth-Hostcontroller gibt. Darüber hinaus geht die Hands-Free Profile (HFP) synchrone SCO-Umgehungsunterstützung (Hands-Free Profile) davon aus, dass es nur eine Umgehungsverbindung gibt, und jeder kanal, der über die HFP-Gerätetreiberschnittstelle geöffnet wird, ist dieser einzelnen Verbindung zugeordnet.

Audiotreiber sollten diesen Kanal und die einzelne Umgehungsverbindung für einen einzelnen Consumer auf einer First-Come-First-Serve-Basis schlichten. Die einfachste Möglichkeit, dies zu erreichen, besteht darin, dass der Treiber nur einem einzelnen Filter erlaubt, seine Pins in den ACQUIRE-Zustand zu überstellen.

Weitere Informationen

Die folgenden Themen enthalten weitere Informationen zum Verbindungslebenszyklus und einigen Designfeatures eines HFP-Geräts und seines Audiotreibers: