フィルタ グラフ マネージャ
フィルタ グラフ マネージャは、フィルタ グラフを作成および制御する。このオブジェクトは、DirectShow の中心的コンポーネントである。アプリケーションは、このコンポーネントを使ってフィルタ グラフを作成および制御する。また、フィルタ グラフ マネージャは、同期、イベント通知、その他のフィルタ グラフの側面も処理する。このオブジェクトを作成するには、CoCreateInstance を呼び出す。
クラス識別子
フィルタ グラフ マネージャを作成する CLSID は 2 つある。
CLSID | 説明 |
CLSID_FilterGraph | 共有ワーカー スレッド上でフィルタ グラフ マネージャを作成する。 |
CLSID_FilterGraphNoThread | アプリケーション スレッド上でフィルタ グラフ マネージャを作成する。 |
一般に、アプリケーションでは CLSID_FilterGraph を使用すべきである。どちらの CLSID も同じオブジェクトを作成するが、異なるスレッド モデルを使う。
- CLSID_FilterGraph は、ワーカー スレッド上でフィルタ グラフ マネージャを作成する。これは、同じプロセス内で、すべての CLSID_FilterGraph インスタンスによって共有される。このスレッドは、フィルタによって送信されるメッセージをディスパッチし、フィルタによって作成されるあらゆるウィンドウの有効期間を制御する。
- CLSID_FilterGraphNoThread は、アプリケーションのスレッド上でフィルタ グラフ マネージャを作成する。この CLSID を使う場合、CoCreateInstance を呼び出すスレッドは、メッセージをディスパッチするためのメッセージ ループを持っていなければならない。そうでないと、デッドロックが発生することがある。また、アプリケーション スレッドが存在する前に、フィルタ グラフ マネージャおよびフィルタ、ピン、基準クロックといったすべてのグラフ オブジェクトを解放する必要がある。
インターフェイス
フィルタ グラフ マネージャは、以下のインターフェイスを公開する。
- IAMGraphStreams
- IAMStats
- IBasicAudio
- IBasicVideo
- IBasicVideo2
- IFilterChain
- IFilterGraph
- IFilterGraph2
- IFilterMapper2
- IGraphBuilder
- IGraphConfig
- IGraphVersion
- IMediaControl
- IMediaEvent
- IMediaEventEx
- IMediaEventSink
- IMediaFilter
- IMediaPosition
- IMediaSeeking
- IQueueCommand
- IRegisterServiceProvider
- IResourceManager
- IServiceProvider
- IVideoFrameStep
- IVideoWindow