Considérations relatives à la diffusion en continu du noyau
Cet article clarifie les exigences et les considérations particulières pour la diffusion en continu de noyau liée à la diffusion en continu audio de contournement Bluetooth.
Le pilote audio doit prendre entièrement en charge le pilote de port WaveRT, y compris le « mode pull ». Pour plus d’informations, consultez Présentation du pilote de port WaveRT. Bien qu’il ne soit pas nécessaire d’implémenter un moteur audio matériel pour la sortie de contournement synchrone orientée connexion (SCO), cela n’est pas préjudiciable.
La configuration requise du logo Windows pour la prise en charge du format inclut une exception pour Bluetooth.
Le pilote audio doit prendre en charge les formats possibles via le matériel à bande latérale, généralement 8 kHz en streaming audio mono.
Topologie
Tous les appareils Hands-Free Bluetooth prennent en charge la capture et le rendu. Le pilote audio doit exposer une topologie de diffusion en continu du noyau (KS) pour l’appareil Hands-Free, comme illustré dans le diagramme suivant, afin de prendre en charge à la fois le rendu et la capture.
Note: Le développeur de pilotes audio peut choisir d’implémenter un filtre unique pour les chemins d’accès de capture et de rendu ou des filtres distincts. Toutefois, l’appareil HFP n’autorise qu’un seul objet de fichier sur l’interface de l’appareil GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS. Par conséquent, une conception qui utilise deux filtres doit autoriser les deux filtres à partager l’objet de fichier unique.
Les nœuds DAC et ADC représentent les conversions analogiques/numériques, mais ne prennent pas en charge les propriétés KS.
Les nœuds de volume prennent en charge KSPROPERTY_AUDIO_VOLUMELEVEL et KSEVENT_CONTROL_CHANGE en envoyant les IOCTL SETVOLUME et GETVOLUMESTATUSUPDATE au pilote HFP.
Le nœud de volume doit être implémenté comme suit :
- Si le casque Bluetooth prend en charge le contrôle du volume, le pilote audio doit inclure un nœud de volume dans sa topologie KS. Les gestionnaires de propriétés de volume du pilote audio envoient les IOCTL ci-dessus au pilote Bluetooth HFP pour gérer le volume.
- Si le casque Bluetooth n’implémente pas de volume matériel et que le codec (ou DSP) a un volume matériel, le pilote audio doit gérer le contrôle du volume sur le codec (ou DSP).
- Si ni le casque Bluetooth ni le périphérique audio ne disposent de contrôles de volume matériels, aucun nœud de volume ne doit être présenté et Windows insère un nœud de contrôle de volume logiciel.
- Le nœud muet est facultatif. Le pilote audio doit implémenter le nœud muet si et uniquement si le codec DSP ou audio permet de désactiver le signal PCM de contournement avant de le passer au contrôleur Bluetooth. Les nœuds mute prennent en charge les KSPROPERTY_AUDIO_MUTE.
Demandes de propriété
Le pilote audio utilise les propriétés KS suivantes pour obtenir des informations sur toute prise ou prise audio dans le chemin audio. Le pilote audio peut également utiliser la demande de propriété appropriée pour créer ou interrompre une connexion à n’importe quel périphérique audio Bluetooth dans le chemin audio.
KSPROPERTY_JACK_DESCRIPTION
Cette propriété retourne une structure KSJACK_DESCRIPTION . Le pilote audio doit définir les champs KSPROPERTY_JACK_DESCRIPTION comme suit.
- ChannelMapping = KSAUDIO_SPEAKER_MONO
- Couleur = 0
- ConnectionType = eConnTypeOtherDigital
- GeoLocation = eGeoLocNotApplicable
- GenLocation = eGenLocOther
- PortConnection = ePortConnUnknown
- IsConnected = <BOOL pour les status de connexion actuelles>
KSPROPERTY_JACK_DESCRIPTION2
Cette propriété retourne une structure KSJACK_DESCRIPTION2 . Le pilote audio doit définir les champs KSPROPERTY_JACK_DESCRIPTION2 comme suit.
- DeviceStateInfo = 0
- JackCapabilities = JACKDESC2_PRESENCE_DETECT_CAPABILITY
KSPROPERTY_ONESHOT_RECONNECT
Le filtre du pilote audio doit prendre en charge KSPROPERTY_ONESHOT_RECONNECT. Pour créer et initialiser cette structure, le pilote audio envoie IOCTL_BTHHFP_DEVICE_REQUEST_CONNECT au pilote HFP. Le pilote HFP effectue cette demande, puis tente de se connecter au périphérique audio Bluetooth de manière asynchrone.
KSPROPERTY_ONESHOT_DISCONNECT
Le filtre du pilote audio doit prendre en charge KSPROPERTY_ONESHOT_DISCONNECT. Pour créer et initialiser cette structure, le pilote audio envoie IOCTL_BTHHFP_DEVICE_REQUEST_DISCONNECT au pilote HFP. Le pilote HFP effectue cette demande, puis tente de se déconnecter du périphérique audio Bluetooth de manière asynchrone.
Lorsqu’un pilote audio prend en charge ces propriétés, la boîte de dialogue Son dans le Panneau de configuration expose les commandes Connect et Disconnect pour le point de terminaison HFP.