篩選圖形管理員
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 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 管理員會公開下列介面:
- IAMGraphStreams
- IAMStats
- IBasicAudio
- IBasicVideo
- IBasicVideo2
- IFilterChain
- IFilterGraph
- IFilterGraph2
- IFilterGraph3
- IFilterMapper2
- IGraphBuilder
- IGraphConfig
- IGraphVersion
- IMediaControl
- IMediaEvent
- IMediaEventEx
- IMediaEventSink
- IMediaFilter
- IMediaPosition
- IMediaSeeking
- IQueueCommand
- IRegisterServiceProvider
- IResourceManager
- IServiceProvider
- IVideoFrameStep
- IVideoWindow
相關主題