拓撲針腳
WDMAud 系統驅動程式會將 KS 篩選器上的拓撲針腳轉譯成混合器 API 向應用程式公開的來源和目的地混音器線。 輸入 (接收) 針腳變成來源混音器線,而輸出 (來源) 針腳會變成目的地混音器線。
如 Pin Factory中所述,迷你埠驅動程式會提供針腳描述元的陣列,其中每一個 都是類型PCPIN_DESCRIPTOR 的結構,描述屬於篩選準則的針腳處理站。 每個針腳描述元都包含下列資訊:
資料流程方向規範
指出資料流程輸入 (KSPIN_DATAFLOW_IN) 或結束 (KSPIN_DATAFLOW_OUT) 透過釘選篩選。
KS 針腳類別 GUID
指出針腳所屬的針腳類別。 例如,在音訊播放裝置上,一個針腳可能會接受波浪格式的數位音訊串流,而另一個針腳可能會產生類比音訊訊號來驅動喇叭。 迷你埠驅動程式會將這兩種類型的針腳識別為屬於不同針腳類別。
通訊類型規範
指出針腳支援的 IRP 通訊類型。 支援 IRP 通訊的針腳可以是 IRP 接收 (KSPIN_COMMUNICATION_SINK) 、IRP 來源 (KSPIN_COMMUNICATION_SOURCE) ,或兩者 (KSPIN_COMMUNICATION_BOTH) 。 不支援 IRP 通訊的針腳可以位於 KS 篩選圖形內 (KSPIN_COMMUNICATION_NONE) ,或是在圖形端點的 橋接器釘 (KSPIN_COMMUNICATION_BRIDGE) 。
如需橋接器接腳的詳細資訊,請參閱 音訊篩選圖形。
WDMAud 會將迷你埠驅動程式的針腳描述元中的資訊轉換成混合器線條描述元,這是一種包含下列資訊的類型:MIXERLINE 的結構:
混合器線元件類型
指出混音器線是來源或目的線,也表示混音器線的一般函式。 例如,混合器線的元件類型會傳輸從波輸出產生的類比訊號, (轉譯) 串流來驅動一組耳機是MIXERLINE_COMPONENTTYPE_DST_HEADPHONES。
混音器線條目標型別
指出混音器線路傳輸的資料流程類型。 例如,轉譯) 資料流程 (波浪輸出的目標型別是MIXERLINE_TARGETTYPE_WAVEOUT,而波浪輸入 (擷取) 資料流程的目標型別則是MIXERLINE_TARGETTYPE_WAVEIN。
如需詳細資訊,請參閱 SDK 檔中的 MIXERLINE 結構 。
下列兩個表格顯示 WDMAud 如何轉譯輸入 (KSPIN_DATAFLOW_IN) 接點來源混音器線。
第一個表格顯示輸入針腳 KS 針腳類別 GUID (PCPIN_DESCRIPTOR 值) 對應至相關聯的 MIXERLINE 目標型別。
KS 針腳類別 GUID | 橋接器針腳? | MIXERLINE 目標型別 |
---|---|---|
KSNODETYPE_MICROPHONE | - | 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 | Yes | MIXERLINE_TARGETTYPE_WAVEIN |
KSNODETYPE_ANALOG_CONNECTOR | No | MIXERLINE_TARGETTYPE_WAVEOUT |
KSNODETYPE_SPDIF_INTERFACE | Yes | MIXERLINE_TARGETTYPE_WAVEIN |
KSNODETYPE_SPDIF_INTERFACE | No | MIXERLINE_TARGETTYPE_WAVEOUT |
下表顯示輸入針腳 KS 針腳類別 GUID 如何對應至相關聯的 MIXERLINE 元件類型。
PCPIN_DESCRIPTOR值 | MIXERLINE 值 |
---|---|
KS 針腳類別 GUID | 元件類型 |
KSNODETYPE_MICROPHONE KSNODETYPE_DESKTOP_MICROPHONE |
MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE |
KSNODETYPE_LEGACY_AUDIO_CONNECTOR KSCATEGORY_AUDIO KSNODETYPE_SPEAKER |
MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT |
KSNODETYPE_CD_PLAYER |
MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC |
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_ANALOG_CONNECTOR |
MIXERLINE_COMPONENTTYPE_SRC_ANALOG |
KSNODETYPE_SPDIF_INTERFACE |
MIXERLINE_COMPONENTTYPE_SRC_DIGITAL |
KSNODETYPE_SPDIF_INTERFACE |
MIXERLINE_COMPONENTTYPE_SRC_DIGITAL |
在上述表格中,左資料行會指定針腳PCPIN_DESCRIPTOR結構的針腳類別 GUID,而右邊的資料行會指定一個對應的目標型別和元件類型來表示一個混合器LINE 結構。
標示為「橋接器接腳?」的資料行中的專案會指出針腳是否為橋接器接腳。 「是」表示針腳通訊類型KSPIN_COMMUNICATION_BRIDGE。 「否」表示針腳通訊類型是KSPIN_COMMUNICATION_BRIDGE以外的KSPIN_COMMUNICATION_Xxx 值。 如果 WDMAud 將針腳參數轉譯為混音器線路參數時忽略針腳通訊類型,則 「Bridge Pin?」 專案是虛線 ( ) 。
對於上述表格中未出現的所有針腳類別,WDMAud 會將輸入針腳轉譯為來源混音器線,其目標型別為 MIXERLINE_TARGETTYPE_UNDEFINED 和元件類型的MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED。
下表顯示 WDMAud 如何將輸出轉譯 (KSPIN_DATAFLOW_OUT) 針腳到目的地混音器線。 資料行標題的意義與上表相同。 第一個表格顯示輸出針腳 KS 針腳類別 GUID 如何對應至相關聯的 MIXERLINE 目標型別。
KS 針腳類別 GUID | 橋接器接腳? | 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 | Yes | MIXERLINE_TARGETTYPE_WAVEOUT |
KSNODETYPE_ANALOG_CONNECTOR | No | MIXERLINE_TARGETTYPE_WAVEIN |
KSNODETYPE_SPDIF_INTERFACE | Yes | MIXERLINE_TARGETTYPE_WAVEOUT |
KSNODETYPE_SPDIF_INTERFACE | No | MIXERLINE_TARGETTYPE_WAVEIN |
下表顯示輸出針腳 KS 針腳類別 GUID 如何對應至相關聯的 MIXERLINE 元件類型。
PCPIN_DESCRIPTOR值 | MIXERLINE 值 |
---|---|
KS 針腳類別 GUID | 元件類型 |
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的目標混音器線。
在上述表格中,大部分的 KS 針腳類別 GUID 都有KSNODETYPE_Xxx 名稱。 這些名稱定義于標頭檔 Ksmedia.h 和 Dmusprop.h 中。 (此命名慣例的兩個出發點是 GUID KSCATEGORY_AUDIO 和 PINNAME_CAPTURE,Ksmedia.h.) 如 拓撲節點中所述,KSNODETYPE_Xxx GUID 也可用來指定 KS 節點類型。 大部分KSNODETYPE_Xxx GUID 都會指定針腳類別或節點類型,但不能同時指定兩者。 例外 狀況是KSNODETYPE_SYNTHESIZER,視所使用的內容而定,可以指定釘選類別或節點類型。 如需代表釘選類別的 KSNODETYPE_Xxx GUID 清單,請參閱 Pin 類別屬性。 如需代表節點類型的KSNODETYPE_Xxx GUID 清單,請參閱 音訊拓撲節點。
KSCATEGORY_AUDIO是另一個雙重使用 GUID。 視內容而定,它可以當做 KS 針腳類別 GUID 或 KS 篩選類別 GUID使用。 在裝置安裝期間,音訊驅動程式會在篩選類別KSCATEGORY_AUDIO下註冊其裝置介面。 如需詳細資訊,請參閱 安裝音訊配接器的裝置介面。
對於KSNODETYPE_ANALOG_CONNECTOR或KSNODETYPE_SPDIF_INTERFACE的針腳類別,WDMAud 必須知道針腳是否為橋接器接腳,才能正確地將針腳轉譯成其混音線對等專案。 例如,具有針腳類別的 S/PDIF 針腳 (KSNODETYPE_SPDIF_INTERFACE) 轉譯為下圖所示四種混音器線條類型的其中一種。 轉譯取決於針腳的資料方向 (或輸出) ,以及它是橋接器針腳 (是還是否) ,這兩者一起會產生四種可能的混合線類型 (in+yes、in+no、out+yes 和 out+no) 。 圖中顯示的四個混音器線條類型代表上表中專案的底端配對。
請注意,圖中音訊裝置右側的兩個數據流是 S/PDIF 格式,而左側的兩個數據流則為波浪格式。 音訊裝置會執行兩種數位格式之間的轉換。
SndVol32 應用程式是混合器 API 的用戶端。 混音器 API 會將拓撲中找到的每個針腳轉換成來源或目的地混音器線,但線條可能不會顯示在 SndVol32 中,這只會辨識標頭檔 Mmsystem.h 為混合器 API 定義的混合器線元件類型子集。 如需 SndVol32 的詳細資訊,請參閱 SysTray 和 SndVol32。