篩選圖形管理員
[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、imfMediaEngine 取代,並在媒體基金會 音訊/視訊擷取。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
Filter Graph Manager 會建置及控制篩選圖形。 此物件是 DirectShow 中的中央元件。 應用程式會使用它來建置及控制篩選圖形。 Filter Graph 管理員也會處理控制篩選圖形的同步處理、事件通知和其他層面。 呼叫 coCreateInstance 來建立此物件。
CLSID
建立 Filter Graph 管理員有兩個 CLSID:
CLSID | 描述 |
---|---|
CLSID_FilterGraph | 在共用背景工作線程上建立 Filter Graph Manager。 |
CLSID_FilterGraphNoThread | 在應用程式線程上建立 Filter Graph Manager。 |
一般而言,應用程式應該使用CLSID_FilterGraph。 這兩個 CLSID 都會建立相同的物件,但會使用不同的線程模型:
- CLSID_FilterGraph會在背景工作線程上建立 Filter Graph 管理員,此線程是由相同進程中所有CLSID_FilterGraph實例共用。 線程會分派篩選所傳送的訊息,並控制篩選條件所建立之任何視窗的存留期。
- CLSID_FilterGraphNoThread會在應用程式的線程上建立 Filter Graph Manager。 如果您使用這個 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
相關主題