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-Umgehungs-Audiostreaming erläutert.
Der Audiotreiber sollte den WaveRT-Porttreiber vollständig unterstützen, einschließlich des "Pullmodus". Weitere Informationen finden Sie unter Einführung in den WaveRT-Porttreiber. Obwohl es keine Notwendigkeit gibt, eine Hardwareaudio-Engine für die synchrone verbindungsorientierte (SCO)-Umgehungsausgabe zu implementieren, ist dies nicht schadet.
Die Windows-Logoanforderungen für die Formatunterstützung umfassen eine Ausnahme für Bluetooth.
Der Audiotreiber sollte die Formate unterstützen, die über die Sidebandhardware möglich sind, in der Regel 8kHz Mono-Audiostreaming.
Topologie
Alle Bluetooth Hands-Free-Geräte unterstützen sowohl die Erfassung als auch das Rendern. Der Audiotreiber sollte eine Kernelstreamingtopologie (KS) für das Hands-Free-Gerät verfügbar machen, wie im folgenden Diagramm gezeigt, um sowohl Rendern als auch Erfassen zu unterstützen.
Hinweis: Der Audiotreiberentwickler 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, zulassen, 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 Volumeknoten 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 seine KS-Topologie aufnehmen. Die Volumeeigenschaftenhandler des Audiotreibers senden die oben genannten IOCLTs an den Bluetooth HFP-Treiber, um das Volume zu verarbeiten.
- Wenn das Bluetooth-Headset kein Hardwarevolume implementiert und der Codec (oder DSP) über eine Hardwarelautstärke verfügt, sollte der Audiotreiber die Lautstärkeregelung auf dem Codec (oder DSP) verarbeiten.
- Wenn weder das Bluetooth-Headset noch das Audiogerät über Eine Hardware-Lautstärkeregelung verfügen, sollte kein Lautstärkeknoten angezeigt werden, und Windows fügt einen Softwarelautsteuerungsknoten ein.
- Der Stummschaltungsknoten ist optional. Der Audiotreiber sollte den Stummschaltungsknoten nur implementieren, wenn der DSP oder Audiocodec die Möglichkeit bietet, das Umgehungs-PCM-Signal stummzuschalten, bevor es an den Bluetooth-Controller übergeben wird. Die Stummschaltungsknoten unterstützen KSPROPERTY_AUDIO_MUTE.
Eigenschaftenanforderungen
Der Audiotreiber verwendet die folgenden KS-Eigenschaften, um Informationen zu beliebigen Audiobuchsen oder Buchsen im Audiopfad abzurufen. Der Audiotreiber kann auch die entsprechende Eigenschaftsanforderung verwenden, um eine Verbindung mit einem beliebigen 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 aktuelle Verbindungs-status>
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 führt diese Anforderung aus 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, werden im Dialogfeld Sound im Systemsteuerung die Befehle Verbinden und Trennen für den HFP-Endpunkt verfügbar gemacht.