拓扑节点

音频应用程序可以通过 Microsoft Windows 多媒体函数 mixerGetLineControls 访问混音器控件。 此函数检索一个或多个 MIXERCONTROL 结构的数组,其中每个结构描述了音频线上单个控制节点的状态和指标。 MIXERCONTROL 结构的 dwControlType 成员设置为指定控件类型的枚举值。 为音频 VxD 指定了许多混音器控件类型,但只有这些控件的子集可用于 WDM 音频驱动程序。

WDMAud 将部分但并非所有拓扑节点转换为相应的混音器线控件。 下表中列出的拓扑节点类型具有混音器线控件的对应项。

节点类型 拓扑节点类型名称 Mixer-Control 类型名称

AGC

KSNODETYPE_AGC

MIXERCONTROL_CONTROLTYPE_ONOFF

响度

KSNODETYPE_LOUDNESS

MIXERCONTROL_CONTROLTYPE_LOUDNESS

静音

KSNODETYPE_MUTE

MIXERCONTROL_CONTROLTYPE_MUTE

音调(多)

KSNODETYPE_TONE

MIXERCONTROL_CONTROLTYPE_ONOFF(如果支持KSPROPERTY_AUDIO_BASS_BOOST)

MIXERCONTROL_CONTROLTYPE_BASS(如果支持KSPROPERTY_AUDIO_BASS)

MIXERCONTROL_CONTROLTYPE_TREBLE(如果支持KSPROPERTY_AUDIO_TREBLE)

体积

KSNODETYPE_VOLUME

MIXERCONTROL_CONTROLTYPE_VOLUME

Peakmeter

KSNODETYPE_PEAKMETER

MIXERCONTROL_CONTROLTYPE_PEAKMETER

MUX

KSNODETYPE_MUX

MIXERCONTROL_CONTROLTYPE_MUX

立体声宽

KSNODETYPE_STEREO_WIDE

MIXERCONTROL_CONTROLTYPE_FADER

Chorus

KSNODETYPE_CHORUS

MIXERCONTROL_CONTROLTYPE_FADER

混响

KSNODETYPE_REVERB

MIXERCONTROL_CONTROLTYPE_FADER

Supermix (多个)

KSNODETYPE_SUPERMIX

MIXERCONTROL_CONTROLTYPE_MUTE(如果超级混合节点支持KSPROPERTY_AUDIO_MUTE)

MIXERCONTROL_CONTROLTYPE_VOLUME(请参阅文本中的注释)

上表中缺少的拓扑节点类型不会转换为混音器线控件,WDM 音频驱动程序不支持表中缺少的混音器线控件。

请注意,表中缺少MIXERCONTROL_CONTROLTYPE_CUSTOM。 这意味着 WDM 音频驱动程序不支持自定义混音器控件。

音调节点支持四个属性:低音高音中频低音提升。 中间频率属性没有混音器线对应项,但其他三个属性确实存在。 对于拓扑中发现的每个音调节点,会针对每个受支持的属性执行查询:

KSPROPERTY_AUDIO_BASS

KSPROPERTY_AUDIO_TREBLE

KSPROPERTY_AUDIO_BASS_BOOST

成功的每个属性查询都会生成混音器线控件。 由于命名问题,单个音调节点应仅支持单个属性。 例如,如果设备同时支持低音和高音,则应有两个音调节点,以便节点可以具有不同的名称。

超级混合节点最多支持两个控件:静音和音量。 当超级混合节点满足超级混合节点 功能表中每个条目的以下两个条件中的至少一个时,可以将超级混合节点用作静音控件:

  • 该条目支持功能指定的静音属性。静音标志。

  • 该条目完全衰减(-无穷大分贝衰减),并且不能打开,这两 个功能都指定。最小值功能最大 值为LONG_MIN(0x80000000)。

当 supermix 功能表中的每个条目具有非零范围时,超级混合节点可以用作卷控件。 所有其他控件将一对一转换。 遇到已识别的节点时,混音器线驱动程序会查询该节点的相应属性。

若要检查立体声或单声道支持,将查询左声道,后跟右声道,最后,如果这两个都失败,则尝试主声道(-1)。 如果这些查询均未成功,则不会为该节点生成任何控件。 请注意,不会为每个通道查询 MUX 节点。 而是执行用于检索当前 MUX 选择的单个查询。

当查询节点 的KSPROPERTY_TOPOLOGY_NAME 属性时,控件的名称将作为字符串返回。 如果节点生成多个控件,则所有控件共享相同的名称。