Узлы топологии
Звуковые приложения могут получать доступ к элементам управления микшером с помощью мультимедийной функции Microsoft WindowsGetLineControls. Эта функция извлекает массив из одной или нескольких структур MIXERCONTROL, каждая из которых описывает состояние и метрики одного управляющего узла в звуковой строке. Члену dwControlType структуры MIXERCONTROL присваивается значение перечисления, указывающее тип элемента управления. Для аудиовыходов VXD было указано несколько типов элементов управления mixer, но для аудиодрайверов WDM доступно только подмножество этих элементов управления.
WDMAud преобразует некоторые, но не все узлы топологии в соответствующие элементы управления mixer-line. Типы узлов топологии, перечисленные в следующей таблице, имеют аналоги, которые являются элементами управления mixer-line.
Тип узла | Имя типа Topology-Node | Имя типа Mixer-Control |
---|---|---|
AGC |
MIXERCONTROL_CONTROLTYPE_ONOFF |
|
Громкость |
MIXERCONTROL_CONTROLTYPE_LOUDNESS |
|
Mute |
MIXERCONTROL_CONTROLTYPE_MUTE |
|
Тон (несколько) |
MIXERCONTROL_CONTROLTYPE_ONOFF (если поддерживается KSPROPERTY_AUDIO_BASS_BOOST) MIXERCONTROL_CONTROLTYPE_BASS (если поддерживается KSPROPERTY_AUDIO_BASS) MIXERCONTROL_CONTROLTYPE_TREBLE (если поддерживается KSPROPERTY_AUDIO_TREBLE) |
|
Громкость |
MIXERCONTROL_CONTROLTYPE_VOLUME |
|
Пиковая метрика |
MIXERCONTROL_CONTROLTYPE_PEAKMETER |
|
MUX |
MIXERCONTROL_CONTROLTYPE_MUX |
|
Стерео широкий |
MIXERCONTROL_CONTROLTYPE_FADER |
|
Хор |
MIXERCONTROL_CONTROLTYPE_FADER |
|
Реверберации |
MIXERCONTROL_CONTROLTYPE_FADER |
|
Супермикс (несколько) |
MIXERCONTROL_CONTROLTYPE_MUTE (если в узле супермикса поддерживается KSPROPERTY_AUDIO_MUTE) MIXERCONTROL_CONTROLTYPE_VOLUME (см. примечания в тексте) |
Типы узлов топологии, отсутствующие в предыдущей таблице, не превратятся в элементы управления линии микшера, а отсутствующие в таблице элементы управления линии микшера не поддерживаются аудиодрайверами WDM.
Обратите внимание, что в таблице отсутствует MIXERCONTROL_CONTROLTYPE_CUSTOM. Это означает, что аудиодрайверы WDM не поддерживают пользовательские элементы управления микшером.
Узел тона поддерживает четыре свойства: басовая, тройная, среднечастотная и басовая. Свойство средней частоты не имеет аналога линии микшера, но остальные три свойства это делают. Для каждого узла тона, обнаруженного в топологии, выполняется запрос для каждого из поддерживаемых свойств:
Каждый запрос свойства, который выполняется успешно, создает элемент управления mixer-line. Из-за проблем с именованием узел с одним тоном должен поддерживать только одно свойство. Например, если устройство поддерживает как басовую, так и тройную частоту, оно должно иметь два узла тона, чтобы узлы могли иметь разные имена.
Узел супермикса поддерживает до двух элементов управления: отключение звука и громкость. Узел супермикса можно использовать в качестве элемента управления отключением звука, если он удовлетворяет хотя бы одному из следующих двух условий для каждой записи в таблице возможностей узла супермикса:
Запись поддерживает свойство отключения звука, как указано в параметрах Capabilities. Отключить флаг.
Запись полностью затухает (затухание децибел бесконечности) и не может быть развернута, что определяется обеими возможностями. Минимум и возможности. Максимальное значение LONG_MIN (0x80000000).
Узел супермикса можно использовать в качестве элемента управления громкостью, если каждая запись в таблице возможностей супермикса имеет ненулевой диапазон. Все остальные элементы управления переводятся один к одному. При обнаружении распознанного узла драйвер линии микшера запрашивает соответствующее свойство для этого узла.
Чтобы проверка для поддержки стерео- или моно, запрашивается левый канал, за которым следует правый канал, и, наконец, если оба этих канала завершаются ошибкой, выполняется попытка master канала (-1). Если ни один из этих запросов не выполняется, для этого узла не создается элемент управления. Обратите внимание, что узел MUX не запрашивается для каждого канала. Вместо этого выполняется один запрос для получения текущего выделенного мультиплекса.
Имя элемента управления возвращается в виде строки, когда узел запрашивает его свойство KSPROPERTY_TOPOLOGY_NAME . Если узел создает несколько элементов управления, все элементы управления имеют одно и то же имя.