Поделиться через


Рекомендации по потоковой передаче ядра

В этой статье разъясняются требования и особые рекомендации для потоковой передачи ядра, связанные с обходом потоковой передачи звука по Bluetooth.

Аудиодрайвер должен полностью поддерживать драйвер порта WaveRT, включая режим извлечения. Дополнительные сведения см. в статье Общие сведения о драйвере порта WaveRT. Хотя нет необходимости реализовывать аппаратный звуковой механизм для выхода обхода с синхронным подключением (SCO), в этом нет никакого вреда.

Требования к логотипу Windows для поддержки формата включают исключение для Bluetooth.

Звуковой драйвер должен поддерживать форматы, которые можно использовать с помощью аппаратного обеспечения бокового канала, как правило, 8 кГц моно-потоковой передачи звука.

Топология

Все устройства Bluetooth Hands-Free поддерживают захват и отрисовку. Аудиодрайвер должен предоставлять топологию потоковой передачи ядра (KS) для Hands-Free устройства, как показано на следующей схеме, для поддержки как отрисовки, так и записи.

Схема, иллюстрирующая топологию KS для аудиодрайвера, поддерживающую отрисовку и запись на устройствах Bluetooth Hands-Free.

Примечание: Разработчик аудиодрайва может выбрать, следует ли реализовать один фильтр для путей захвата и отрисовки или отдельных фильтров. Однако устройство HFP допускает только один файловый объект в интерфейсе устройства GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS. Таким образом, проект, использующий два фильтра, должен позволить обоим фильтрам совместно использовать один объект файла.

Узлы DAC и ADC представляют аналоговые и цифровые преобразования, но не поддерживают свойства KS.

Узлы томов поддерживают KSPROPERTY_AUDIO_VOLUMELEVEL и KSEVENT_CONTROL_CHANGE путем отправки ioCTLs SETVOLUME и GETVOLUMESTATUSUPDATE в драйвер HFP.

Узел тома должен быть реализован следующим образом:

  • Если гарнитура Bluetooth поддерживает управление громкости, звуковой драйвер должен включать узел громкости в топологию KS. Обработчики свойств громкости драйвера звука отправляют указанные выше ioCLT в драйвер Bluetooth HFP для обработки громкости.
  • Если гарнитура Bluetooth не реализует аппаратный том, а кодек (или DSP) имеет аппаратный том, звуковой драйвер должен управлять громкость кодека (или DSP).
  • Если ни гарнитура Bluetooth, ни звуковое устройство не имеют аппаратных элементов управления громкости, узел громкости не должен отображаться, и Windows вставляет узел управления громкость программного обеспечения.
  • Узел отключения звука является необязательным. Звуковой драйвер должен реализовать узел отключения звука, если и только в том случае, если DSP или аудиокодек предоставляет возможность отключения сигнала PCM перед передачей его на контроллер Bluetooth. Узлы отключения звука поддерживают KSPROPERTY_AUDIO_MUTE.

Запросы свойств

Звуковой драйвер использует следующие свойства KS для получения сведений о любом аудиоразъеме или разъемах в звуковой дорожке. Звуковой драйвер также может использовать соответствующий запрос свойства, чтобы установить или разорвать подключение к любому звуковому устройству Bluetooth в звуковом пути.

KSPROPERTY_JACK_DESCRIPTION

Это свойство возвращает структуру KSJACK_DESCRIPTION . Звуковой драйвер должен задать поля KSPROPERTY_JACK_DESCRIPTION следующим образом.

  • ChannelMapping = KSAUDIO_SPEAKER_MONO
  • Цвет = 0
  • ConnectionType = eConnTypeOtherDigital
  • GeoLocation = eGeoLocNotApplicable
  • GenLocation = eGenLocOther
  • PortConnection = ePortConnUnknown
  • IsConnected = <BOOL для текущего состояния подключения>

KSPROPERTY_JACK_DESCRIPTION2

Это свойство возвращает структуру KSJACK_DESCRIPTION2 . Звуковой драйвер должен задать поля KSPROPERTY_JACK_DESCRIPTION2 следующим образом.

  • DeviceStateInfo = 0
  • JackCapabilities = JACKDESC2_PRESENCE_DETECT_CAPABILITY

KSPROPERTY_ONESHOT_RECONNECT

Фильтр звукового драйвера должен поддерживать KSPROPERTY_ONESHOT_RECONNECT. Чтобы создать и инициализировать эту структуру, звуковой драйвер отправляет IOCTL_BTHHFP_DEVICE_REQUEST_CONNECT драйверу HFP. Драйвер HFP выполняет этот запрос, а затем пытается асинхронно подключиться к звуковому устройству Bluetooth.

KSPROPERTY_ONESHOT_DISCONNECT

Фильтр драйвера звука должен поддерживать KSPROPERTY_ONESHOT_DISCONNECT. Чтобы создать и инициализировать эту структуру, звуковой драйвер отправляет IOCTL_BTHHFP_DEVICE_REQUEST_DISCONNECT в драйвер HFP. Драйвер HFP выполняет этот запрос, а затем пытается асинхронно отключиться от звукового устройства Bluetooth.

Если аудиодрайв поддерживает эти свойства, диалоговое окно Звук в панель управления предоставляет команды Connect и Disconnect для конечной точки HFP.

Теория обхода потоковой передачи звука по Bluetooth