拓撲節點

音訊應用程式可以透過 Microsoft Windows 多媒體函式 混音器GetLineControls 存取混音器控制項。 此函式會擷取一或多個 MIXERCONTROL 結構的陣列,每個結構都會描述音訊線上單一控制節點的狀態和計量。 MIXERCONTROL 結構的 dwControlType成員會設定為指定控制項類型的列舉值。 已針對音訊 VxD 指定許多混音器控制項類型,但 WDM 音訊驅動程式只能使用這些控制項的子集。

WDMAud 會將部分但並非所有拓撲節點轉譯成對應的混音器線控制項。 下表所列的拓撲節點類型具有混合器線條控制項的對應專案。

節點類型 Topology-Node類型名稱 Mixer-Control類型名稱

AGC

KSNODETYPE_AGC

MIXERCONTROL_CONTROLTYPE_ONOFF

響度

KSNODETYPE_LOUDNESS

MIXERCONTROL_CONTROLTYPE_LOUDNESS

Mute

KSNODETYPE_MUTE

MIXERCONTROL_CONTROLTYPE_MUTE

音調 (多個)

KSNODETYPE_TONE

如果支援KSPROPERTY_AUDIO_BASS_BOOST,MIXERCONTROL_CONTROLTYPE_ONOFF ()

如果支援KSPROPERTY_AUDIO_BASS,MIXERCONTROL_CONTROLTYPE_BASS ()

MIXERCONTROL_CONTROLTYPE_TREBLE (如果支援KSPROPERTY_AUDIO_TREBLE)

磁碟區

KSNODETYPE_VOLUME

MIXERCONTROL_CONTROLTYPE_VOLUME

尖峰計

KSNODETYPE_PEAKMETER

MIXERCONTROL_CONTROLTYPE_PEAKMETER

MUX

KSNODETYPE_MUX

MIXERCONTROL_CONTROLTYPE_MUX

立體寬

KSNODETYPE_STEREO_WIDE

MIXERCONTROL_CONTROLTYPE_FADER

合唱

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 音訊驅動程式不支援自訂混音器控制項。

音調節點支援四個屬性:basstreblemid-frequencybass boost。 中間頻率屬性沒有混音器線對應專案,但其他三個屬性則這麼做。 針對拓撲中探索到的每個音調節點,會針對每個支援的屬性進行查詢:

KSPROPERTY_AUDIO_BASS

KSPROPERTY_AUDIO_TREBLE

KSPROPERTY_AUDIO_BASS_BOOST

成功的每個屬性查詢都會產生混音器線條控制項。 由於命名問題,單一音調節點應該只支援單一屬性。 例如,如果裝置同時支援 Bass 和 treble,它應該有兩個音調節點,讓節點可以有不同的名稱。

超混音節點最多支援兩個控制項:靜音和磁片區。 當超混音節點滿足超混音節點 功能資料表中每個專案的至少兩個條件之一時,可以做為靜音控制項:

  • 專案支援 Mute 屬性,如 功能所指定。靜音 旗標。

  • 專案會完全衰減 (-infinity decibels 衰減) 且無法開啟,這兩個功能都是由這兩個 功能所指定。最小功能值LONG_MIN (0x80000000) 上限

當 supermix 功能資料表中的每個專案都有非零範圍時,可以使用超混音節點做為磁片區控制項。 所有其他控制項都會一對一轉譯。 遇到辨識的節點時,混音器線驅動程式會查詢該節點的個別屬性。

若要檢查立體或單聲道支援,會查詢左側通道,後面接著右側通道,最後,如果兩者都失敗,則會嘗試主要通道 (-1) 。 如果沒有這些查詢成功,則不會針對該節點產生任何控制項。 請注意,不會針對每個通道查詢 MUX 節點。 相反地,會執行單一查詢來擷取目前的 MUX 選取範圍。

當查詢節點的 KSPROPERTY_TOPOLOGY_NAME 屬性時,控制項的名稱會以字串的形式傳回。 如果節點產生多個控制項,則所有控制項都會共用相同的名稱。