指定拓撲
在硬體廠商決定要針對波浪和 MIDI 裝置寫入的迷你埠驅動程式之後,下一個步驟是代表這些裝置的核心串流 (KS) 拓撲。 KS 拓撲是由一組資料結構所組成,這些結構描述音訊或 MIDI 資料流程在每部裝置中流動時所遵循的資料路徑。 透過此拓撲,驅動程式會公開控制節點 (例如,磁片區控制) 位於每個路徑上。 一般而言,應用程式會使用 Windows 多媒體混音器Xxx 函式,藉由列舉每個路徑上的節點序列來探索拓撲。 例如,在探索磁片區層級控制節點之後,應用程式可以在該節點上設定磁片區層級。 如需 Windows 多媒體的詳細資訊,請參閱Microsoft Windows SDK檔。 如需混合器Xxx 函式表示 KS 拓撲的詳細資訊,請參閱 核心串流拓撲至音訊混音器 API 翻譯。
PortCls 提供六個埠驅動程式:WavePci、WaveCyclic、WaveRT、MIDI、DMus 和拓撲。 (WaveRT 自 Windows Vista 起已提供,且是建議的方法。) 拓撲埠驅動程式會控制音訊配接器線路的一部分,以混合來自波和 MIDI 裝置的轉譯串流。 它也會控制從輸入插孔選取擷取資料流程。 儘管拓撲埠驅動程式的名稱有點誤導,但通常包含大部分的音訊配接器拓撲,但不會包含所有音訊配接器的拓撲。 其他埠驅動程式會貢獻配接器拓撲的其餘部分。
每個埠驅動程式都會與對應的迷你埠驅動程式配對,以形成 KS 篩選器 ,代表音訊介面卡上的特定裝置 (波、MIDI 或混音器) ,如下表所示。
篩選類型 | 描述 |
---|---|
WaveXxx 篩選 |
表示將波輸出資料流程轉換成類比音訊訊號或將類比音訊訊號轉換成波輸入資料流程的波浪裝置。 |
MIDI 或 DMus 篩選 |
表示播放或擷取 MIDI 資料流程的 MIDI 裝置。 |
拓撲篩選 |
表示配接器的混音器線路。 |
迷你埠驅動程式會實作篩選器的裝置特定功能,包括裝置所包含之配接器拓撲部分的定義。 埠驅動程式會處理每種篩選類型的一般篩選作業,包括與作業系統的通訊。
每個篩選都有一或多個 KS 針腳 ,可作為音訊資料流程的路徑,以進入和離開篩選準則。 一般而言,拓撲篩選器上的針腳會透過配接器線路中的硬式連接,系結至波、MIDI 和 DMus 上的針腳。 這些篩選及其相互連線會形成 KS 篩選圖形,其中包含配接器的拓撲。
下圖顯示範例音訊配接器的拓撲。
在上圖中,最上層的拓撲是由 MIDI、WaveXxx和拓撲篩選器之間的連線所組成。 此外,每個篩選都有自己的內部拓撲,其中包含透過篩選和位於每個路徑的控制節點的資料路徑。 節點會加上標籤,如下表所示。
標籤 | 描述 | KS Node-Type GUID |
---|---|---|
Synth |
合成器節點 |
KSNODETYPE_SYNTHESIZER |
DAC |
數位到音訊轉換器節點 |
KSNODETYPE_DAC |
ADC |
類比數位轉換器節點 |
KSNODETYPE_ADC |
磁碟區 |
磁片區層級控制節點 |
KSNODETYPE_VOLUME |
Mute |
將控制節點設為靜音 |
KSNODETYPE_MUTE |
Sum |
加總節點 |
KSNODETYPE_SUM |
MUX |
多工器節點 |
KSNODETYPE_MUX |
在上圖中,音訊配接器左側的針腳代表邏輯連線, (非實體連線) 資料流程從系統匯流排進入配接器,或從介面卡進入系統匯流排。 這些針腳會以邏輯方式連接到其他篩選上的來源和接收針腳, (未顯示在介面卡外部) 。 一般而言,這些篩選是軟體模組,連同配接器拓撲一起形成較大的篩選圖形,其拓撲可由使用混音器Xxx 函式的應用程式探索。 例如,上圖中標示為 「PCM Wave Out」 的針腳會以邏輯方式連接到 Windows 中的使用者模式音訊引擎。 這些邏輯連線是由透過系統匯流排的 DMA 傳輸所維護。
相反地,拓撲篩選器左邊緣的針腳實際上會連接到 MIDI 和 WaveXxx 篩選器上的針腳。 這些連線是硬式連線,無法由軟體變更。
音訊配接器右側的橋接器接腳代表系統底座上的音訊插腳。 這些針腳稱為 橋接器接點 ,因為它們會橋接 KS 篩選圖形與外部世界之間的界限。
篩選、釘選和節點通常具有用戶端可存取的屬性, (音訊驅動程式) 核心模式元件或使用者模式應用程式。 用戶端可以將 KS 屬性要求 傳送至篩選、釘選或節點,以查詢屬性的目前值或變更屬性值。 例如,磁片區層級控制節點具有 KSPROPERTY_AUDIO_VOLUMELEVEL 屬性,用戶端可以透過 KS 屬性要求變更。 總和節點是通常沒有屬性的節點類型範例。
為了簡單起見,上圖中的 WaveXxx 篩選器僅提供單一針腳,以接受系統匯流排的 PCM 波輸出資料流程。 相反地,有些波裝置會提供 PCM 波輸出的多個針腳,並包含用於內部混合輸入針腳的資料流程的硬體。 這些裝置會接受從應用程式音效緩衝區播放的 PCM 串流,為使用 DirectSound 的應用程式提供硬體加速。 若要讓 DirectSound 使用這些針腳,它們必須針對二維 (2D) 和三維 (3D) 處理提供額外的節點,如 WDM 音訊中的 DirectSound 硬體加速中所述。
Windows Server 2003、Windows XP、Windows 2000 和 Windows Me/98 支援這種類型的硬體加速,但 Windows Vista 不支援此加速。 Windows Vista 不會在較舊的波浪裝置上使用硬體加速針腳。
在上圖中,MIDI、WaveXxx和拓撲之間的實體連線會篩選所有傳輸類比音訊訊號。 不過,不同的拓撲裝置可能會接受 MIDI 和波浪裝置的數位輸出串流、數位混合它們,以及將數位混合轉換成類比輸出訊號,來達到類似的效果。
上圖左下角的「非 PCM 波出」針腳接受 S/PDIF 傳遞格式的非 PCM 輸出資料流程,例如 AC-3-over-S/PDIF 或 WMA Pro-over-S/PDIF。 使用其中一種格式,裝置只會透過 S/PDIF 連結傳輸壓縮的資料,而不會解碼資料。 基於這個理由,上圖右下角 「S/PDIF Out」 針腳的資料路徑不包含磁片區或靜音節點。 如需非 PCM 音訊格式和 S/PDIF 傳遞傳輸的詳細資訊,請參閱 支援非 PCM 波格式 和 S/PDIF Pass-Through 非 PCM 資料流程傳輸。
迷你埠驅動程式會以 PCFILTER_DESCRIPTOR 結構的形式,將其拓撲呈現給埠驅動程式。 此結構描述篩選準則的所有針腳和節點,並指定針腳和節點彼此連線的方式。
除了設計整合型拓撲篩選器,如上圖所示,音訊配接器中的混音器線路可以分割成數個拓撲篩選器。 例如,在上圖中,驅動說話者的資料路徑可能會實作為一個拓撲篩選器,而從輸入裝置擷取音訊資料的資料路徑可以實作為個別的拓撲篩選器。 當特定拓撲篩選器中的資料路徑未使用時,該部分的介面卡可以關閉電源,而不需要停用整個介面卡。 如需詳細資訊,請參閱 動態音訊子裝置。