篩選圖形管理員

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

Filter Graph Manager 會建置及控制篩選圖形。 此物件是 DirectShow 中的中央元件。 應用程式會使用它來建置和控制篩選圖形。 Filter Graph 管理員也會處理控制篩選圖形的同步處理、事件通知和其他層面。 呼叫 CoCreateInstance 來建立此物件。

CLSID

建立 Filter Graph 管理員有兩個 CLSID:

CLSID Description
CLSID_FilterGraph 在共用背景工作執行緒上建立 Filter Graph 管理員。
CLSID_FilterGraphNoThread 在應用程式執行緒上建立 Filter Graph Manager。

 

一般而言,應用程式應該使用 CLSID_FilterGraph。 這兩個 CLSID 都會建立相同的物件,但它們使用不同的執行緒模型:

  • CLSID_FilterGraph會在背景工作執行緒上建立 Filter Graph 管理員,該執行緒是由相同進程中的所有CLSID_FilterGraph實例共用。 執行緒會分派篩選所傳送的訊息,並控制篩選準則所建立之任何視窗的存留期。
  • CLSID_FilterGraphNoThread會在應用程式的執行緒上建立 Filter Graph 管理員。 如果您使用這個 CLSID,呼叫 CoCreateInstance 的 執行緒必須有分派訊息的訊息迴圈;否則,可能會發生死結。 此外,在應用程式執行緒結束之前,它必須釋放 Filter Graph Manager 和所有繪圖物件 (,例如篩選、釘選、參考時鐘等等) 。

介面

Filter Graph 管理員會公開下列介面:

DirectShow 物件