Рекомендации по потоковой передаче ядра
В этой статье разъясняются требования и особые рекомендации для потоковой передачи ядра, связанные с обходом потоковой передачи звука по Bluetooth.
Аудиодрайвер должен полностью поддерживать драйвер порта WaveRT, включая режим извлечения. Дополнительные сведения см. в статье Общие сведения о драйвере порта WaveRT. Хотя нет необходимости реализовывать аппаратный звуковой механизм для выхода обхода с синхронным подключением (SCO), в этом нет никакого вреда.
Требования к логотипу Windows для поддержки формата включают исключение для Bluetooth.
Звуковой драйвер должен поддерживать форматы, которые можно использовать с помощью аппаратного обеспечения бокового канала, как правило, 8 кГц моно-потоковой передачи звука.
Топология
Все устройства Bluetooth Hands-Free поддерживают захват и отрисовку. Аудиодрайвер должен предоставлять топологию потоковой передачи ядра (KS) для 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.
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по