Synth 篩選範例
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
Description
Synth 篩選是產生音訊波的來源篩選準則。
此篩選會說明動態圖表建置。 它可以在未壓縮的 PCM 音訊與壓縮的 MS_ADPCM (Microsoft Adaptive Delta Pulse Code) 格式之間切換。
此篩選準則會顯示在 GraphEdit 中為「音訊合成器篩選」。
如需動態圖形建置的詳細資訊,請參閱 動態圖形建置。
使用方式
Synth 篩選可讓使用者透過屬性頁設定電壓、頻率、通道數目和其他屬性。 若要設定掃掠頻率範圍的上限或下層端點,請按住 SHIFT,同時調整頻率滑杆。 篩選也支援自訂介面 ISynth2,以設定這些屬性。
若要示範動態圖表建置功能,請執行下列動作:
- 建置篩選並向 Regsvr32 公用程式註冊。
- 啟動 GraphEdit。
- 插入音訊合成器篩選。 它會出現在 DirectShow 篩選類別中。
- 轉譯篩選準則的輸出針腳。
- 按一下 [ 播放] 按鈕。
- 開啟篩選準則的屬性頁。
- 在 [輸出格式] 區域中,選取 [PCM] 或 [Microsoft ADPCM]。
程式設計注意事項
此範例包含下列檔案:
- Dynsrc.h、Dynsrc.cpp:包含兩個基類,可支援動態圖形建置、CDynamicSource 和 CDynamicSourceStream 的來源篩選。
- ISynth.h:宣告自訂 ISynth2 介面,以在篩選上設定屬性。
- Resource.h:包含資源常數。
- Synth.def:匯出 COM 程式庫所需的 DLL 函式。
- Synth.h、Synth.cpp:包含會產生音訊資料的 CAudioSynth 類別,以及實作篩選的 CSynthFilter 類別。
- Synth.rc:包含篩選所使用的資源。
- Synthprp.h、Synthprp.cpp:實作篩選的屬性頁。
CDynamicSource 類別會從 CSource 基類進行調整。 它會使用衍生自 CDynamicSourceStream 類別的一或多個輸出針腳。 CDynamicSourceStream 類別是從 CSourceStream 類別調整,但衍生自 CDynamicOutputPin 類別,而不是 CBaseOutputPin 類別。
CDynamicSource 類別在 CSource中找不到下列方法:
- 停止:發出停止事件訊號, (CDynamicOutputPin::m_hStopEvent) ,並關閉所有未連接的針腳的背景工作執行緒。 在連接的針腳上,針腳的 Inactive 方法將會關閉背景工作執行緒。
- 暫停:重設停止事件。
- JoinFilterGraph:在每個針腳上呼叫 CDynamicOutputPin::SetConfigInfo 方法。
CDynamicSourceStream 類別在 CSourceStream中找不到下列方法:
- DestroySourceThread:關閉背景工作執行緒。
- FatalError:向篩選圖形管理員發出錯誤訊號。
- OutputPinNeedsToBeReconnected:輸出針腳應該重新連線的訊號。 呼叫這個方法時,背景工作執行緒會呼叫 CDynamicOutputPin::D ynamicReconnect 方法來重新連接針腳。
下載範例
若要下載 DirectShow SDK 範例,請安裝最新版本的 Windows SDK。
此範例會安裝在下列路徑之下: [SDK Root]\Samples\Multimedia\DirectShow\Filters\Synth。
相關主題