Overwegingen voor kernelstreaming

In dit artikel worden de vereisten en speciale overwegingen voor kernel streaming met betrekking tot het omzeilen van audiostreaming via Bluetooth verduidelijkt.

Het audiostuurprogramma moet het WaveRT-poortstuurprogramma volledig ondersteunen, inclusief de 'pull-modus'. Zie Inleiding tot het WaveRT-poortstuurprogramma voor meer informatie. Hoewel er geen vereiste is om een hardware-audio-engine te implementeren voor de synchrone Connection Oriented (SCO)-uitvoer, is er geen nadeel aan.

De Windows-logovereisten voor ondersteuning voor indelingen bevatten een uitzondering voor Bluetooth.

De audiodriver moet ondersteuning bieden voor de formaten die mogelijk zijn via de sideband-hardware, meestal 8kHz mono audiostreaming.

Topologie

Alle Bluetooth-Hands-Free-apparaten ondersteunen zowel vastleggen als renderen. Het audiostuurprogramma moet een KS-topologie (Kernel Streaming) beschikbaar maken voor het Hands-Free apparaat, zoals wordt weergegeven in het volgende diagram, ter ondersteuning van zowel renderen als vastleggen.

Diagram met KS-topologie voor audiostuurprogramma's, die ondersteuning bieden voor weergave en opname in Bluetooth Hands-Free-apparaten.

Notitie: De ontwikkelaar van het audiostuurprogramma kan kiezen of er één filter moet worden geïmplementeerd voor zowel capture- als renderpaden of afzonderlijke filters. Het HFP-apparaat staat echter slechts één bestandsobject toe op de GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS apparaatinterface. Daarom moet een ontwerp dat gebruikmaakt van twee filters beide filters toestaan om hetzelfde bestandobject te delen.

De DAC- en ADC-knooppunten vertegenwoordigen de analoge/digitale conversies, maar bieden geen ondersteuning voor KS-eigenschappen.

De volumeknooppunten ondersteunen KSPROPERTY_AUDIO_VOLUMELEVEL en KSEVENT_CONTROL_CHANGE door de IOCTLs SETVOLUME en GETVOLUMESTATUSUPDATE naar het HFP-stuurprogramma te verzenden.

Het volumeknooppunt moet als volgt worden geïmplementeerd:

  • Als de Bluetooth-headset volumebesturing ondersteunt, moet het audiostuurprogramma een volumeknooppunt opnemen in de KS-topologie. De volume-eigenschapshandlers van het audiostuurprogramma verzenden de bovenstaande IOCLT's naar het Bluetooth HFP-stuurprogramma om het volume te verwerken.
  • Als de Bluetooth-headset geen hardwarevolume implementeert en de codec (of DSP) een hardwarevolume heeft, moet het audiostuurprogramma de volumeregeling op de codec (of DSP) verwerken.
  • Als de Bluetooth-headset of het audioapparaat geen hardwarevolumebesturingselementen heeft, moet er geen volumeknooppunt worden weergegeven en zal Windows een knooppunt voor softwarevolumeregeling invoegen.
  • Het mute-knooppunt is optioneel. Het audiostuurprogramma moet het dempen-knooppunt implementeren, alleen als de DSP of audiocodec de mogelijkheid biedt om het bypass-PCM-signaal te dempen voordat het naar de Bluetooth-controller wordt geleid. Dempknooppunten ondersteunen KSPROPERTY_AUDIO_MUTE.

Eigenschapsaanvragen

Het audiostuurprogramma maakt gebruik van de volgende KS-eigenschappen om informatie in te winnen over audioaansluitingen in de audioketen. Het audiostuurprogramma kan ook de juiste eigenschapsaanvraag gebruiken om een verbinding te maken of te verbreken met elk Bluetooth-audioapparaat in het audiopad.

KSPROPERTY_JACK_DESCRIPTION

Deze eigenschap retourneert een KSJACK_DESCRIPTION structuur. Het audiostuurprogramma moet de KSPROPERTY_JACK_DESCRIPTION velden als volgt instellen.

  • ChannelMapping = KSAUDIO_SPEAKER_MONO
  • Kleur = 0
  • ConnectionType = eConnTypeOtherDigital
  • GeoLocation = eGeoLocNotApplicable
  • GenLocation = eGenLocOther
  • PortConnection = ePortConnUnknown
  • IsConnected = <BOOL voor de huidige verbindingsstatus>

KSPROPERTY_JACK_DESCRIPTION2

Deze eigenschap retourneert een KSJACK_DESCRIPTION2 structuur. Het audiostuurprogramma moet de KSPROPERTY_JACK_DESCRIPTION2 velden als volgt instellen.

  • DeviceStateInfo = 0
  • JackCapabilities = JACKDESC2_PRESENCE_DETECT_CAPABILITY

KSPROPERTY_ONESHOT_RECONNECT

Het filter van het audiostuurprogramma moet KSPROPERTY_ONESHOT_RECONNECT ondersteunen. Als u deze structuur wilt maken en initialiseren, verzendt het audiostuurprogramma IOCTL_BTHHFP_DEVICE_REQUEST_CONNECT naar het HFP-stuurprogramma. Het HFP-stuurprogramma voltooit deze aanvraag en probeert vervolgens asynchroon verbinding te maken met het Bluetooth-audioapparaat.

KSPROPERTY_ONESHOT_DISCONNECT

Het filter van het audiostuurprogramma moet KSPROPERTY_ONESHOT_DISCONNECT ondersteunen. Als u deze structuur wilt maken en initialiseren, verzendt het audiostuurprogramma IOCTL_BTHHFP_DEVICE_REQUEST_DISCONNECT naar het HFP-stuurprogramma. Het HFP-stuurprogramma voltooit deze aanvraag en probeert vervolgens asynchroon de verbinding met het Bluetooth-audioapparaat te verbreken.

Wanneer een audiostuurprogramma deze eigenschappen ondersteunt, worden in het dialoogvenster Geluid in het Configuratiescherm de opdrachten Verbinding maken en verbreken voor het HFP-eindpunt weergegeven.

Theorie van Bluetooth-bypass-audiostreaming