Considerazioni sul flusso del kernel
Questo articolo illustra i requisiti e le considerazioni speciali per lo streaming del kernel correlato al bypass di streaming audio Bluetooth.
Il driver audio deve supportare completamente il driver della porta WaveRT, inclusa la "modalità pull". Per altre informazioni, vedere Introduzione al driver della porta WaveRT. Anche se non è necessario implementare un motore audio hardware per l'output di bypass orientato alla connessione sincrona (SCO), non vi è alcun danno in questo modo.
I requisiti del logo di Windows per il supporto del formato includono un'eccezione per Bluetooth.
Il driver audio deve supportare i formati possibili tramite l'hardware sideband, in genere 8kHz mono audio streaming.
Topologia
Tutti i dispositivi Bluetooth Hands-Free supportano sia l'acquisizione che il rendering. Il driver audio deve esporre una topologia di streaming del kernel (KS) per il dispositivo Hands-Free, come illustrato nel diagramma seguente, per supportare sia il rendering che l'acquisizione.
Nota: Lo sviluppatore di driver audio può scegliere se implementare un singolo filtro per i percorsi di acquisizione e di rendering o filtri separati. Tuttavia, il dispositivo HFP consente solo un singolo oggetto file nell'interfaccia del dispositivo GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS. Pertanto, una progettazione che usa due filtri deve consentire a entrambi i filtri di condividere l'oggetto file singolo.
I nodi daC e ADC rappresentano le conversioni analogiche/digitali, ma non supportano alcuna proprietà KS.
I nodi del volume supportano KSPROPERTY_AUDIO_VOLUMELEVEL e KSEVENT_CONTROL_CHANGE inviando setVOLUME e GETVOLUMESTATUSUPDATE IOCTLs al driver HFP.
Il nodo del volume deve essere implementato come segue:
- Se il visore Bluetooth supporta il controllo del volume, il driver audio deve includere un nodo del volume nella topologia KS. I gestori delle proprietà del driver audio inviano gli IOCLT precedenti al driver HFP Bluetooth per gestire il volume.
- Se il visore Bluetooth non implementa un volume hardware e il codec (o DSP) ha un volume hardware, il driver audio deve gestire il controllo del volume sul codec (o DSP).
- Se né il visore Bluetooth né il dispositivo audio hanno controlli del volume hardware, non deve essere presentato alcun nodo del volume e Windows inserisce un nodo di controllo del volume software.
- Il nodo mute è facoltativo. Il driver audio deve implementare il nodo mute se e solo se il codec DSP o audio offre la possibilità di disattivare il segnale PCM bypass prima di passarlo al controller Bluetooth. I nodi mute supportano KSPROPERTY_AUDIO_MUTE.
Richieste di proprietà
Il driver audio usa le proprietà KS seguenti per ottenere informazioni su qualsiasi jack audio o jack nel percorso audio. Il driver audio può anche usare la richiesta di proprietà appropriata per effettuare o interrompere una connessione a qualsiasi dispositivo audio Bluetooth nel percorso audio.
KSPROPERTY_JACK_DESCRIPTION
Questa proprietà restituisce una struttura KSJACK_DESCRIPTION . Il driver audio deve impostare i campi KSPROPERTY_JACK_DESCRIPTION come indicato di seguito.
- ChannelMapping = KSAUDIO_SPEAKER_MONO
- Colore = 0
- ConnectionType = eConnTypeOtherDigital
- GeoLocation = eGeoLocNotApplicable
- GenLocation = eGenLocOther
- PortConnection = ePortConnUnknown
- IsConnected = <BOOL per lo stato di connessione corrente>
KSPROPERTY_JACK_DESCRIPTION2
Questa proprietà restituisce una struttura KSJACK_DESCRIPTION2 . Il driver audio deve impostare i campi KSPROPERTY_JACK_DESCRIPTION2 come indicato di seguito.
- DeviceStateInfo = 0
- JackCapabilities = JACKDESC2_PRESENCE_DETECT_CAPABILITY
KSPROPERTY_ONESHOT_RECONNECT
Il filtro del driver audio deve supportare KSPROPERTY_ONESHOT_RECONNECT. Per creare e inizializzare questa struttura, il driver audio invia IOCTL_BTHHFP_DEVICE_REQUEST_CONNECT al driver HFP. Il driver HFP completa questa richiesta e quindi tenta di connettersi al dispositivo audio Bluetooth in modo asincrono.
KSPROPERTY_ONESHOT_DISCONNECT
Il filtro del driver audio deve supportare KSPROPERTY_ONESHOT_DISCONNECT. Per creare e inizializzare questa struttura, il driver audio invia IOCTL_BTHHFP_DEVICE_REQUEST_DISCONNECT al driver HFP. Il driver HFP completa questa richiesta e quindi tenta di disconnettersi dal dispositivo audio Bluetooth in modo asincrono.
Quando un driver audio supporta queste proprietà, la finestra di dialogo Audio nella Pannello di controllo espone i comandi Connect and Disconnect per l'endpoint HFP.