Consideraciones sobre el streaming del kernel
En este artículo se aclaran los requisitos y las consideraciones especiales para el streaming de kernel relacionado con el streaming de audio de omisión de Bluetooth.
El controlador de audio debe admitir completamente el controlador de puerto WaveRT, incluido el "modo de extracción". Para obtener más información, consulte Introducción al controlador de puerto waveRT. Aunque no hay ningún requisito para implementar un motor de audio de hardware para la salida de omisión de conexión sincrónica orientada a la conexión (SCO), no hay ningún daño al hacerlo.
Los requisitos del logotipo de Windows para la compatibilidad con el formato incluyen una excepción para Bluetooth.
El controlador de audio debe admitir los formatos que son posibles a través del hardware de banda lateral, normalmente streaming de audio mono de 8 kHz.
Topología
Todos los dispositivos Bluetooth Hands-Free admiten captura y representación. El controlador de audio debe exponer una topología de streaming de kernel (KS) para el dispositivo Hands-Free, como se muestra en el diagrama siguiente, para admitir tanto la representación como la captura.
Nota: El desarrollador del controlador de audio puede elegir si implementar un único filtro para rutas de acceso de captura y representación o filtros independientes. Sin embargo, el dispositivo HFP solo permite un único objeto de archivo en la interfaz de dispositivo GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS. Por lo tanto, un diseño que usa dos filtros debe permitir que ambos filtros compartan el único objeto de archivo.
Los nodos DAC y ADC representan las conversiones analógicas o digitales, pero no admiten ninguna propiedad KS.
Los nodos de volumen admiten KSPROPERTY_AUDIO_VOLUMELEVEL y KSEVENT_CONTROL_CHANGE enviando los IOCTLs SETVOLUME y GETVOLUMESTATUSUPDATE al controlador HFP.
El nodo de volumen debe implementarse de la siguiente manera:
- Si el auricular Bluetooth admite el control de volumen, el controlador de audio debe incluir un nodo de volumen en su topología KS. Los controladores de propiedades de volumen del controlador de audio envían los IOCLT anteriores al controlador Bluetooth HFP para controlar el volumen.
- Si los auriculares Bluetooth no implementan un volumen de hardware y el códec (o DSP) tiene un volumen de hardware, el controlador de audio debe controlar el control de volumen en el códec (o DSP).
- Si ni los auriculares Bluetooth ni el dispositivo de audio tienen controles de volumen de hardware, no se debe presentar ningún nodo de volumen y Windows insertará un nodo de control de volumen de software.
- El nodo silenciado es opcional. El controlador de audio debe implementar el nodo silenciado si y solo si el códec DSP o audio proporciona la capacidad de silenciar la señal PCM de omisión antes de pasarla al controlador Bluetooth. Los nodos silenciados admiten KSPROPERTY_AUDIO_MUTE.
Solicitudes de propiedades
El controlador de audio usa las siguientes propiedades KS para obtener información sobre cualquier conector de audio o conectores en la ruta de acceso de audio. El controlador de audio también puede usar la solicitud de propiedad adecuada para realizar o interrumpir una conexión a cualquier dispositivo de audio Bluetooth en la ruta de acceso de audio.
KSPROPERTY_JACK_DESCRIPTION
Esta propiedad devuelve una estructura KSJACK_DESCRIPTION . El controlador de audio debe establecer los campos de KSPROPERTY_JACK_DESCRIPTION de la siguiente manera.
- ChannelMapping = KSAUDIO_SPEAKER_MONO
- Color = 0
- ConnectionType = eConnTypeOtherDigital
- GeoLocation = eGeoLocNotApplicable
- GenLocation = eGenLocOther
- PortConnection = ePortConnUnknown
- IsConnected = <BOOL para el estado de conexión actual>
KSPROPERTY_JACK_DESCRIPTION2
Esta propiedad devuelve una estructura KSJACK_DESCRIPTION2 . El controlador de audio debe establecer los campos de KSPROPERTY_JACK_DESCRIPTION2 de la siguiente manera.
- DeviceStateInfo = 0
- JackCapabilities = JACKDESC2_PRESENCE_DETECT_CAPABILITY
KSPROPERTY_ONESHOT_RECONNECT
El filtro del controlador de audio debe admitir KSPROPERTY_ONESHOT_RECONNECT. Para crear e inicializar esta estructura, el controlador de audio envía IOCTL_BTHHFP_DEVICE_REQUEST_CONNECT al controlador HFP. El controlador HFP completa esta solicitud e intenta conectarse al dispositivo de audio Bluetooth de forma asincrónica.
KSPROPERTY_ONESHOT_DISCONNECT
El filtro del controlador de audio debe admitir KSPROPERTY_ONESHOT_DISCONNECT. Para crear e inicializar esta estructura, el controlador de audio envía IOCTL_BTHHFP_DEVICE_REQUEST_DISCONNECT al controlador HFP. El controlador HFP completa esta solicitud e intenta desconectar del dispositivo de audio Bluetooth de forma asincrónica.
Cuando un controlador de audio admite estas propiedades, el cuadro de diálogo Sonido del Panel de control expone los comandos Connect y Disconnect para el punto de conexión de HFP.