Compartilhar via


Considerações sobre streaming de kernel

Este artigo esclarece os requisitos e considerações especiais para o streaming de kernel relacionado ao streaming de áudio de bypass bluetooth.

O driver de áudio deve dar suporte total ao driver de porta WaveRT, incluindo o "modo de pull". Para obter mais informações, consulte Introdução ao driver de porta WaveRT. Embora não haja nenhum requisito para implementar um mecanismo de áudio de hardware para a saída de bypass SCO (orientada a conexão síncrona), não há nenhum dano ao fazer isso.

Os requisitos do logotipo do Windows para suporte ao formato incluem uma exceção para Bluetooth.

O driver de áudio deve dar suporte aos formatos possíveis por meio do hardware de sideband, normalmente streaming de áudio mono de 8kHz.

Topologia

Todos os dispositivos Hands-Free Bluetooth dão suporte à captura e à renderização. O driver de áudio deve expor uma topologia de streaming de kernel (KS) para o dispositivo Hands-Free, conforme mostrado no diagrama a seguir, para dar suporte à renderização e à captura.

Diagrama ilustrando a topologia KS para driver de áudio, dando suporte à renderização e captura em dispositivos Bluetooth Hands-Free.

Nota: O desenvolvedor do driver de áudio pode escolher se deseja implementar um único filtro para capturar e renderizar caminhos ou filtros separados. No entanto, o dispositivo HFP permite apenas um único objeto de arquivo na interface do dispositivo GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS. Portanto, um design que usa dois filtros precisa permitir que ambos os filtros compartilhem o objeto de arquivo único.

Os nós DAC e ADC representam as conversões analógicas/digitais, mas não dão suporte a nenhuma propriedade KS.

Os nós de volume dão suporte a KSPROPERTY_AUDIO_VOLUMELEVEL e KSEVENT_CONTROL_CHANGE enviando os IOCTLs SETVOLUME e GETVOLUMESTATUSUPDATE para o driver HFP.

O nó de volume deve ser implementado da seguinte maneira:

  • Se o fone de ouvido Bluetooth der suporte ao controle de volume, o driver de áudio deverá incluir um nó de volume em sua topologia KS. Os manipuladores de propriedade de volume do driver de áudio enviam os IOCLTs acima para o driver HFP Bluetooth para lidar com o volume.
  • Se o fone de ouvido Bluetooth não implementar um volume de hardware e o codec (ou DSP) tiver um volume de hardware, o driver de áudio deverá manipular o controle de volume no codec (ou DSP).
  • Se o fone de ouvido Bluetooth nem o dispositivo de áudio tiverem controles de volume de hardware, nenhum nó de volume deverá ser apresentado e o Windows inserirá um nó de controle de volume de software.
  • O nó mudo é opcional. O driver de áudio deverá implementar o nó mudo se e somente se o DSP ou o codec de áudio fornecer a capacidade de silenciar o sinal de bypass do PCM antes de passá-lo para o controlador Bluetooth. Os nós mudo dão suporte a KSPROPERTY_AUDIO_MUTE.

Solicitações de propriedade

O driver de áudio usa as propriedades KS a seguir para obter informações sobre qualquer tomada de áudio ou tomadas no caminho de áudio. O driver de áudio também pode usar a solicitação de propriedade apropriada para fazer ou interromper uma conexão com qualquer dispositivo de áudio Bluetooth no caminho de áudio.

KSPROPERTY_JACK_DESCRIPTION

Essa propriedade retorna uma estrutura KSJACK_DESCRIPTION . O driver de áudio deve definir os campos de KSPROPERTY_JACK_DESCRIPTION da seguinte maneira.

  • ChannelMapping = KSAUDIO_SPEAKER_MONO
  • Cor = 0
  • ConnectionType = eConnTypeOtherDigital
  • GeoLocation = eGeoLocNotApplicable
  • GenLocation = eGenLocOther
  • PortConnection = ePortConnUnknown
  • IsConnected = <BOOL para conexão atual status>

KSPROPERTY_JACK_DESCRIPTION2

Essa propriedade retorna uma estrutura KSJACK_DESCRIPTION2 . O driver de áudio deve definir os campos KSPROPERTY_JACK_DESCRIPTION2 da seguinte maneira.

  • DeviceStateInfo = 0
  • JackCapabilities = JACKDESC2_PRESENCE_DETECT_CAPABILITY

KSPROPERTY_ONESHOT_RECONNECT

O filtro do driver de áudio deve dar suporte a KSPROPERTY_ONESHOT_RECONNECT. Para criar e inicializar essa estrutura, o driver de áudio envia IOCTL_BTHHFP_DEVICE_REQUEST_CONNECT para o driver HFP. O driver HFP conclui essa solicitação e tenta se conectar ao dispositivo de áudio Bluetooth de forma assíncrona.

KSPROPERTY_ONESHOT_DISCONNECT

O filtro do driver de áudio deve dar suporte a KSPROPERTY_ONESHOT_DISCONNECT. Para criar e inicializar essa estrutura, o driver de áudio envia IOCTL_BTHHFP_DEVICE_REQUEST_DISCONNECT para o driver HFP. O driver HFP conclui essa solicitação e tenta se desconectar do dispositivo de áudio Bluetooth de forma assíncrona.

Quando um driver de áudio dá suporte a essas propriedades, a caixa de diálogo Som no Painel de Controle expõe os comandos Conectar e Desconectar para o ponto de extremidade HFP.

Teoria do streaming de áudio de bypass bluetooth