Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden die Anforderungen und besonderen Überlegungen zum Kernelstreaming im Zusammenhang mit bluetooth bypass audio streaming erläutert.
Der Audiotreiber sollte den WaveRT-Porttreiber vollständig unterstützen, einschließlich des "Pullmodus". Weitere Informationen finden Sie unter Einführung des WaveRT-Porttreibers. Obwohl es keine Anforderung gibt, eine Hardware-Audio-Engine für den synchron verbindungsorientierten (SCO) Bypass-Ausgang zu implementieren, schadet es nicht.
Die Windows-Logoanforderungen für die Formatunterstützung umfassen eine Ausnahme für Bluetooth.
Der Audiotreiber sollte die Formate unterstützen, die über die Sideband-Hardware möglich sind, in der Regel 8kHz Mono-Audiostreaming.
Topologie
Alle Bluetooth-Hands-Free-Geräte unterstützen sowohl die Aufnahme als auch das Rendern. Der Audiotreiber sollte eine Kernelstreaming-Topologie (KS) für das Hands-Free-Gerät bereitstellen, wie im folgenden Diagramm dargestellt, um sowohl das Rendern als auch die Aufnahme zu unterstützen.
Anmerkung: Der Entwickler des Audiotreibers kann auswählen, ob ein einzelner Filter für Aufnahme- und Renderpfade oder separate Filter implementiert werden soll. Das HFP-Gerät lässt jedoch nur ein einzelnes Dateiobjekt auf der GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS Geräteschnittstelle zu. Daher muss ein Entwurf, der zwei Filter verwendet, sicherstellen, dass beide Filter das einzelne Dateiobjekt gemeinsam nutzen können.
Die DAC- und ADC-Knoten stellen die analogen/digitalen Konvertierungen dar, unterstützen jedoch keine KS-Eigenschaften.
Die Lautstärkeknoten unterstützen KSPROPERTY_AUDIO_VOLUMELEVEL und KSEVENT_CONTROL_CHANGE, indem sie die SETVOLUME- und GETVOLUMESTATUSUPDATE-IOCTLs an den HFP-Treiber senden.
Der Volumeknoten sollte wie folgt implementiert werden:
- Wenn das Bluetooth-Headset die Lautstärkeregelung unterstützt, sollte der Audiotreiber einen Volumeknoten in der KS-Topologie enthalten. Die Lautstärkeeigenschafts-Handler des Audiotreibers senden die obigen IOCLTs an den Bluetooth HFP-Treiber, um die Lautstärke zu steuern.
- Wenn das Bluetooth-Headset kein Hardwarevolume implementiert und der Codec (oder DSP) über ein Hardwarevolume verfügt, sollte der Audiotreiber die Lautstärkeregelung auf dem Codec (oder DSP) verarbeiten.
- Wenn weder das Bluetooth-Headset noch das Audiogerät über Hardwarelautstärkesteuerungen verfügen, sollte kein Volumeknoten angezeigt werden, und Windows fügt einen Softwarelautstärkensteuerungsknoten ein.
- Der Stummknoten ist optional. Der Audiotreiber sollte den Stummschaltungsknoten implementieren, wenn und nur, wenn der DSP oder Audiocodec die Möglichkeit bietet, das Umgehungs-PCM-Signal stummzuschalten, bevor er an den Bluetooth-Controller übergeben wird. Die Stummschaltknoten unterstützen KSPROPERTY_AUDIO_MUTE.
Eigenschaftsanforderungen
Der Audiotreiber verwendet die folgenden KS-Eigenschaften, um Informationen über alle Audiobuchsen oder -jacks im Audiopfad abzurufen. Der Audiotreiber kann auch die entsprechende Eigenschaftsanforderung verwenden, um eine Verbindung mit jedem Bluetooth-Audiogerät im Audiopfad herzustellen oder zu unterbrechen.
KSPROPERTY_JACK_DESCRIPTION
Diese Eigenschaft gibt eine KSJACK_DESCRIPTION Struktur zurück. Der Audiotreiber sollte die KSPROPERTY_JACK_DESCRIPTION Felder wie folgt festlegen.
- ChannelMapping = KSAUDIO_SPEAKER_MONO
- Farbe = 0
- ConnectionType = eConnTypeOtherDigital
- GeoLocation = eGeoLocNotApplicable
- GenLocation = eGenLocOther
- PortConnection = ePortConnUnknown
- IsConnected = <BOOL für den aktuellen Verbindungsstatus>
KSPROPERTY_JACK_DESCRIPTION2
Diese Eigenschaft gibt eine KSJACK_DESCRIPTION2 Struktur zurück. Der Audiotreiber sollte die KSPROPERTY_JACK_DESCRIPTION2 Felder wie folgt festlegen.
- DeviceStateInfo = 0
- JackCapabilities = JACKDESC2_PRESENCE_DETECT_CAPABILITY
KSPROPERTY_ONESHOT_RECONNECT
Der Filter des Audiotreibers sollte KSPROPERTY_ONESHOT_RECONNECT unterstützen. Zum Erstellen und Initialisieren dieser Struktur sendet der Audiotreiber IOCTL_BTHHFP_DEVICE_REQUEST_CONNECT an den HFP-Treiber. Der HFP-Treiber schließt diese Anforderung ab und versucht dann, asynchron eine Verbindung mit dem Bluetooth-Audiogerät herzustellen.
KSPROPERTY_ONESHOT_DISCONNECT
Der Filter des Audiotreibers sollte KSPROPERTY_ONESHOT_DISCONNECT unterstützen. Um diese Struktur zu erstellen und zu initialisieren, sendet der Audiotreiber IOCTL_BTHHFP_DEVICE_REQUEST_DISCONNECT an den HFP-Treiber. Der HFP-Treiber schließt diese Anforderung ab und versucht dann, die Verbindung mit dem Bluetooth-Audiogerät asynchron zu trennen.
Wenn ein Audiotreiber diese Eigenschaften unterstützt, macht das Dialogfeld "Sound" in der Systemsteuerung die Befehle "Verbinden" und "Trennen" für den HFP-Endpunkt verfügbar.