フィルタ グラフ マネージャについて

フィルタ グラフ マネージャは、フィルタ グラフ内のフィルタを制御する COM オブジェクトである。次のような多くの機能を実行する。

  • フィルタ間の状態変更を調整する。
  • 基準クロックを確立する。
  • イベントをアプリケーションに返す。
  • アプリケーションがフィルタ グラフを作成するためのメソッドを提供する。

ここでは、これらの各機能について簡単に説明する。詳細については、このドキュメントの他の場所で説明している。

状態変更。フィルタ内の状態変更は特定の順序で行われる必要がある。したがって、アプリケーションは状態変更コマンドを直接フィルタに対して発行しない。その代わりに、アプリケーションは単一のコマンドをフィルタ グラフ マネージャに対して発行し、フィルタ グラフ マネージャが各フィルタにコマンドを発行する。シークの処理も同様である。アプリケーションはシーク コマンドをフィルタ グラフ マネージャに対して発行し、フィルタ グラフ マネージャがフィルタにシーク コマンドを発行する。

基準クロック。グラフ内のすべてのフィルタは、"基準クロック" と呼ばれる同一のクロックを使う。基準クロックによって、すべてのストリームの同期が保証される。ビデオ フレームまたはオーディオ サンプルがレンダリングされる時間を、"プレゼンテーション タイム" と呼ぶ。プレゼンテーション タイムは基準クロックから相対的に測定される。フィルタ グラフ マネージャは、通常、サウンド カードのクロックまたはシステム クロックのいずれかの基準クロックを選択する。

グラフ イベント。フィルタ グラフ マネージャは、イベント キューを使って、フィルタ グラフ内で発生したイベントをアプリケーションに通知する。このメカニズムは、Windows のメッセージ ループに似ている。

グラフ作成メソッド。フィルタ グラフ マネージャは、グラフへのフィルタの追加、フィルタと他のフィルタの接続、フィルタの接続解除を行うためのメソッドをアプリケーションに提供する。

フィルタ グラフ マネージャが "行わない" 処理の 1 つは、フィルタから次のフィルタへのデータの移動である。この処理は、フィルタ自体がフィルタのピン接続を介して行う。処理は常に独立したスレッドで行われる。

  フィルタは常にフィルタ グラフ マネージャと同じプロセスで実行され、インプロセス サーバーからロードされる。したがって、メソッドの呼び出しは、フィルタ間、またはフィルタとフィルタ グラフ マネージャの間で、マーシャリングされない。

参照