Synth 篩選範例

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

Description

Synth 篩選是產生音訊波的來源篩選準則。

此篩選會說明動態圖表建置。 它可以在未壓縮的 PCM 音訊與壓縮的 MS_ADPCM (Microsoft Adaptive Delta Pulse Code) 格式之間切換。

此篩選準則會顯示在 GraphEdit 中為「音訊合成器篩選」。

如需動態圖形建置的詳細資訊,請參閱 動態圖形建置。

使用方式

Synth 篩選可讓使用者透過屬性頁設定電壓、頻率、通道數目和其他屬性。 若要設定掃掠頻率範圍的上限或下層端點,請按住 SHIFT,同時調整頻率滑杆。 篩選也支援自訂介面 ISynth2,以設定這些屬性。

若要示範動態圖表建置功能,請執行下列動作:

  1. 建置篩選並向 Regsvr32 公用程式註冊。
  2. 啟動 GraphEdit。
  3. 插入音訊合成器篩選。 它會出現在 DirectShow 篩選類別中。
  4. 轉譯篩選準則的輸出針腳。
  5. 按一下 [ 播放] 按鈕。
  6. 開啟篩選準則的屬性頁。
  7. 在 [輸出格式] 區域中,選取 [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中找不到下列方法:

CDynamicSourceStream 類別在 CSourceStream中找不到下列方法:

  • DestroySourceThread:關閉背景工作執行緒。
  • FatalError:向篩選圖形管理員發出錯誤訊號。
  • OutputPinNeedsToBeReconnected:輸出針腳應該重新連線的訊號。 呼叫這個方法時,背景工作執行緒會呼叫 CDynamicOutputPin::D ynamicReconnect 方法來重新連接針腳。

下載範例

若要下載 DirectShow SDK 範例,請安裝最新版本的 Windows SDK

此範例會安裝在下列路徑之下: [SDK Root]\Samples\Multimedia\DirectShow\Filters\Synth。

DirectShow 範例