Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер системы WDMAud преобразует топологические контакты на фильтрах KS в входные и выходные линии микшера, которые API микшера предоставляет приложениям. Входные (приемник) контакты становятся линиями смешивания источников, а выходные (исходные) закрепления становятся конечными линиями миксера.
Как описано в pin-фабриках, минипорт-драйвер предоставляет массив дескрипторов контактов, каждый из которых является структурой типа PCPIN_DESCRIPTOR, описывающей фабрику контактов фильтра. Каждый дескриптор пин-кода содержит следующие сведения:
Описатель направления потока данных
Указывает, входит ли поток данных (KSPIN_DATAFLOW_IN) или выходит (KSPIN_DATAFLOW_OUT) фильтр через контакт.
GUID категории пинов KS
Указывает категорию контактов, к которой принадлежит данный контакт. Например, на устройстве воспроизведения звука один пин может принимать цифровой аудиопоток в формате WAV, а другой пин может создать аналоговый звуковой сигнал для управления динамиком. Минипорт-драйвер идентифицирует эти два типа пин-кодов как принадлежащие отдельным категориям пин-кода.
Описатель типа связи
Указывает тип коммуникаций IRP, поддерживаемых пином. Штырь, который поддерживает IRP-коммуникации, может быть приемником IRP (KSPIN_COMMUNICATION_SINK), источником IRP (KSPIN_COMMUNICATION_SOURCE) или обоими (KSPIN_COMMUNICATION_BOTH). Пин, который не поддерживает обмен данными IRP, может находиться внутри графа фильтров KS (KSPIN_COMMUNICATION_NONE) или быть мостовым контактом в конечной точке графа (KSPIN_COMMUNICATION_BRIDGE).
Дополнительные сведения о штифтах для бриджа см. в разделе «Аудиофильтровые графы».
WDMAud преобразует сведения из дескриптора пин-кода драйвера miniport в дескриптор линии миксера, который является структурой типа MIXERLINE, которая содержит следующие сведения:
Тип компонента mixer-line
Указывает, является ли линия миксера источником или конечной линией, а также указывает общую функцию линии миксера. Например, тип компонента для линии микшера, которая передает аналоговый сигнал, полученный из потока вывода звуковой волны (рендеринга), для работы с набором наушников, - это MIXERLINE_COMPONENTTYPE_DST_HEADPHONES.
Тип целевого объекта mixer-line
Указывает тип потока данных, который транспортирует линия миксера. Например, целевой тип для потока визуализации звука (rendering) - MIXERLINE_TARGETTYPE_WAVEOUT, а целевой тип для потока ввода звука (capture) - MIXERLINE_TARGETTYPE_WAVEIN.
Дополнительные сведения см. в структуре MIXERLINE в документации по пакету SDK.
В следующих двух таблицах показано, как WDMAud преобразует входные штыри (KSPIN_DATAFLOW_IN) на линии исходного миксера.
В первой таблице показано, как GUID категорий входного контакта KS (значения PCPIN_DESCRIPTOR) сопоставляются с соответствующими типами целевых объектов MIXERLINE.
| GUID категории пинов KS | Штифт моста? | Тип целевого объекта MIXERLINE |
|---|---|---|
| KSNODETYPE_МИКРОФОН | - | MIXERLINE_TARGETTYPE_WAVEIN |
| KSNODETYPE_DESKTOP_MICROPHONE (микрофон для настольного использования) | - | MIXERLINE_TARGETTYPE_WAVEIN |
| KSNODETYPE_LEGACY_AUDIO_CONNECTOR | - | MIXERLINE_TARGETTYPE_WAVEOUT |
| Категория звука KSCATEGORY_AUDIO | - | MIXERLINE_TARGETTYPE_WAVEOUT |
| KSNODETYPE_SPEAKER | - | MIXERLINE_TARGETTYPE_WAVEOUT |
| KSNODETYPE_CD_PLAYER | - | MIXERLINE_TARGETTYPE_UNDEFINED |
| KSNODETYPE_SYNTHESIZER | - | MIXERLINE_TARGETTYPE_MIDIOUT |
| KSNODETYPE_LINE_CONNECTOR | - | MIXERLINE_TARGETTYPE_UNDEFINED |
| KSNODETYPE_TELEPHONE | - | MIXERLINE_TARGETTYPE_UNDEFINED |
| KSNODETYPE_PHONE_LINE | - | MIXERLINE_TARGETTYPE_UNDEFINED |
| KSNODETYPE_DOWN_LINE_PHONE | - | MIXERLINE_TARGETTYPE_UNDEFINED |
| KSNODETYPE_ANALOG_CONNECTOR (Тип узла аналогового соединителя) | Да | MIXERLINE_TARGETTYPE_WAVEIN |
| KSNODETYPE_ANALOG_CONNECTOR | нет | MIXERLINE_TARGETTYPE_WAVEOUT |
| KSNODETYPE_SPDIF_INTERFACE | Да | MIXERLINE_TARGETTYPE_WAVEIN |
| KSNODETYPE_SPDIF_INTERFACE | нет | MIXERLINE_TARGETTYPE_WAVEOUT |
В следующей таблице показано, как GUID категории входных контактов KS соответствуют типам компонентов MIXERLINE.
| Значения PCPIN_DESCRIPTOR | Значения MIXERLINE |
|---|---|
| GUID категории контакта KS | Тип компонента |
KSNODETYPE_МИКРОФОН KSNODETYPE_DESKTOP_MICROPHONE (микрофон для настольного использования) |
MIXERLINE_COMPONENTTYPE_SRC_МИКРОФОН |
KSNODETYPE_LEGACY_AUDIO_CONNECTOR Категория звука KSCATEGORY_AUDIO KSNODETYPE_SPEAKER |
MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT |
KSNODETYPE_CD_PLAYER |
MIXERLINE_COMPONENTTYPE_SRC_КОМПАКТ-ДИСК |
KSNODETYPE_SYNTHESIZER |
MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER |
KSNODETYPE_LINE_CONNECTOR |
MIXERLINE_COMPONENTTYPE_SRC_LINE |
KSNODETYPE_TELEPHONE KSNODETYPE_PHONE_LINE KSNODETYPE_DOWN_LINE_PHONE |
MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE |
KSNODETYPE_ANALOG_CONNECTOR |
MIXERLINE_COMPONENTTYPE_SRC_ANALOG |
KSNODETYPE_АНАЛОГОВЫЙ_КОННЕКТОР |
MIXERLINE_COMPONENTTYPE_SRC_ANALOG |
KSNODETYPE_SPDIF_INTERFACE |
MIXERLINE_COMPONENTTYPE_SRC_DIGITAL |
KSNODETYPE_SPDIF_INTERFACE |
MIXERLINE_COMPONENTTYPE_SRC_DIGITAL |
В предыдущих таблицах левый столбец указывает GUID категории выводов из структуры PCPIN_DESCRIPTOR вывода, а правые столбцы указывают соответствующий тип целевого объекта и тип компонента для структуры MIXERLINE.
Записи в столбце с меткой "Штифт моста?" указывают, является ли штифт мостовым. Значение "Да" означает, что тип связи контакта — KSPIN_COMMUNICATION_BRIDGE. Значение "Нет" означает, что тип связи пина — это значение KSPIN_COMMUNICATION_Xxx, отличающееся от KSPIN_COMMUNICATION_BRIDGE. Если WDMAud игнорирует тип коммуникации пина при переводе параметров пина в параметры линии микшера, запись "бриджевый пин?" — это тире (-).
Для всех категорий пинов, которые не отображаются в предыдущих таблицах, WDMAud преобразует входные пины на каналы исходного миксера с целевыми типами MIXERLINE_TARGETTYPE_UNDEFINED и типами компонентов MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED.
В следующих таблицах показано, как WDMAud преобразует выходные выводы (KSPIN_DATAFLOW_OUT) в линии назначения микшера. Заголовки столбцов имеют те же значения, что и в предыдущей таблице. В первой таблице показано, как GUID категорий выводного пина KS сопоставляются с целевыми типами MIXERLINE.
| GUID категории пинов KS | Штифт моста? | Тип целевого объекта MIXERLINE |
|---|---|---|
| KSNODETYPE_SPEAKER | - | MIXERLINE_TARGETTYPE_WAVEOUT |
| KSNODETYPE_DESKTOP_SPEAKER | - | MIXERLINE_TARGETTYPE_WAVEOUT |
| KSNODETYPE_ROOM_SPEAKER | - | MIXERLINE_TARGETTYPE_WAVEOUT |
| KSNODETYPE_COMMUNICATION_SPEAKER | - | MIXERLINE_TARGETTYPE_WAVEOUT |
| Категория звука KSCATEGORY_AUDIO | - | MIXERLINE_TARGETTYPE_WAVEIN |
| PINNAME_CAPTURE | - | MIXERLINE_TARGETTYPE_WAVEIN |
| KSNODETYPE_HEADPHONES | - | MIXERLINE_TARGETTYPE_WAVEOUT |
| KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO | - | MIXERLINE_TARGETTYPE_WAVEOUT |
| KSNODETYPE_TELEPHONE | - | MIXERLINE_TARGETTYPE_UNDEFINED |
| KSNODETYPE_PHONE_LINE | - | MIXERLINE_TARGETTYPE_UNDEFINED |
| KSNODETYPE_DOWN_LINE_PHONE (телефонная линия с нисходящей линией) | - | MIXERLINE_TARGETTYPE_UNDEFINED |
| KSNODETYPE_ANALOG_CONNECTOR | Да | MIXERLINE_TARGETTYPE_WAVEOUT |
| KSNODETYPE_ANALOG_CONNECTOR | нет | MIXERLINE_TARGETTYPE_WAVEIN |
| KSNODETYPE_SPDIF_INTERFACE | Да | MIXERLINE_TARGETTYPE_WAVEOUT |
| KSNODETYPE_SPDIF_INTERFACE | нет | MIXERLINE_TARGETTYPE_WAVEIN |
В следующей таблице показано, как категории GUID выходных штырей KS сопоставляются с соответствующими типами компонентов MIXERLINE.
| значения PCPIN_DESCRIPTOR | Значения MIXERLINE |
|---|---|
| GUID категории пинов KS | Тип компонента |
KSNODETYPE_SPEAKER KSNODETYPE_DESKTOP_SPEAKER KSNODETYPE_ROOM_SPEAKER KSNODETYPE_COMMUNICATION_SPEAKER |
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS |
Категория звука KSCATEGORY_AUDIO PINNAME_CAPTURE |
MIXERLINE_COMPONENTTYPE_DST_WAVEIN (Тип компонента микшера: входной сигнал) |
KSNODETYPE_HEADPHONES KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO |
MIXERLINE_COMPONENTTYPE_DST_HEADPHONES (тип компонента линии микшера: наушники) |
KSNODETYPE_TELEPHONE KSNODETYPE_PHONE_LINE KSNODETYPE_DOWN_LINE_PHONE |
MIXERLINE_COMPONENTTYPE_DST_TELEPHONE |
KSNODETYPE_ANALOG_CONNECTOR |
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS |
KSNODETYPE_ANALOG_CONNECTOR |
MIXERLINE_COMPONENTTYPE_DST_WAVEIN |
KSNODETYPE_SPDIF_INTERFACE |
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS |
KSNODETYPE_SPDIF_INTERFACE |
MIXERLINE_COMPONENTTYPE_DST_WAVEIN |
Для всех категорий контактов, которые не отображаются в предыдущих таблицах, WDMAud преобразует выходные контакты в линии целевого миксера с целевыми типами MIXERLINE_TARGETTYPE_UNDEFINED и типами компонентов MIXERLINE_COMPONENTTYPE_DST_UNDEFINED.
В предыдущих таблицах большинство GUID категории пинов KS имеют имена KSNODETYPE_Xxx. Эти имена определены в файлах заголовков Ksmedia.h и Dmusprop.h. (Два отклонения от этого соглашения об именовании — это идентификаторы GUID KSCATEGORY_AUDIO и PINNAME_CAPTURE, которые также определены в Ksmedia.h.) Как описано в разделе "Узлы топологии", KSNODETYPE_Xxx GUID также можно использовать для назначения типов узлов KS. Большинство KSNODETYPE_Xxxx GUID указывает либо категории выводов, либо типы узлов, но не то и другое одновременно. Исключением является KSNODETYPE_SYNTHESIZER, который может указывать категорию разъема или тип узла в зависимости от контекста использования. Список идентификаторов GUID KSNODETYPE_Xxxx, представляющих категории контактов, см. в разделе "Свойство категории контактов". Список KSNODETYPE_Xxx GUID, представляющих типы узлов, см. в разделе "Узлы аудио топологии".
KSCATEGORY_AUDIO — это еще один GUID двойного использования. Его можно использовать как GUID категории пинов KS или GUID категории фильтров KS в зависимости от контекста. Во время установки устройства звуковой драйвер регистрирует свой интерфейс устройства в категории фильтра KSCATEGORY_AUDIO. Дополнительные сведения см. в статье об установке интерфейсов устройств для аудиоадаптера.
Для категории контакта KSNODETYPE_ANALOG_CONNECTOR или KSNODETYPE_SPDIF_INTERFACE WDMAud необходимо знать, является ли контакт мостовым контактом, чтобы правильно перевести его в эквивалент линии микшера. Например, пин-код S/PDIF (с категорией контактов KSNODETYPE_SPDIF_INTERFACE) преобразуется в один из четырех типов линий миксера, показанных на следующем рисунке. Перевод зависит от направления данных пина (вход или выход), а также от того, является ли он мостовым пином (да или нет), что вместе дает четыре возможных типа линии микшера (вход+да, вход+нет, выход+да и выход+нет). Четыре типа смешивания, показанные на рисунке, представляют нижние пары записей из предыдущих таблиц.
Обратите внимание, что два потока в правой части звукового устройства на рисунке находятся в формате S/PDIF, а два потока слева находятся в формате волны. Звуковое устройство выполняет преобразование между двумя цифровыми форматами.
Приложение SndVol32 является клиентом API микшера. API микшера преобразует каждый пин, найденный в топологии, в линию источника или приемника микшера, но линия может не отображаться в SndVol32, которая распознает только подмножество типов микшерных линий, определенных в заголовочном файле Mmsystem.h для API микшера. Дополнительные сведения о SndVol32 см. в статье SysTray и SndVol32.