次の方法で共有


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

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

Filter Graph Manager は、フィルター グラフ内のフィルターを制御する COM オブジェクトです。 次のような多くの関数を実行します。

  • フィルター間の状態変更の調整。
  • 参照クロックの確立。
  • イベントをアプリケーションに伝える。
  • アプリケーションがフィルター グラフを構築するためのメソッドを提供します。

これらの各関数については、ここで簡単に説明します。 詳細については、ドキュメントの他の場所で確認できます。

状態の変更。 フィルター内の状態の変更は、特定の順序で行う必要があります。 そのため、アプリケーションは状態変更コマンドをフィルターに直接発行しません。 代わりに、フィルター グラフ マネージャーに 1 つのコマンドが提供され、各フィルターにコマンドが分散されます。 シークは同様の方法で動作します。アプリケーションは、フィルター グラフ マネージャーに seek コマンドを提供し、フィルターに分散させます。

基準クロック。 グラフ内のすべてのフィルターは、基準クロックと呼ばれる同じクロックを使用 します。 参照クロックにより、すべてのストリームが確実に同期されます。 ビデオ フレームまたはオーディオ サンプルをレンダリングする時間を プレゼンテーション時間と呼びます。 プレゼンテーション時間は、基準クロックを基準にして測定されます。 フィルター グラフ マネージャーは、基準クロック (通常はサウンド カードのクロックまたはシステム クロック) を選択します。

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

グラフ構築メソッド。 フィルター グラフ マネージャーには、フィルターをグラフに追加したり、フィルターを他のフィルターに接続したり、フィルターを切断したりするためのメソッドがアプリケーションに用意されています。

フィルター グラフ マネージャーが処理しない関数の 1 つは、あるフィルターから次のフィルターにデータを移動することです。 これは、ピン接続を介してフィルター自体によって行われます。 処理は常に別のスレッドで行われます。

注意

フィルターは常にフリースレッドであり、フィルター グラフ マネージャーと同じプロセスに存在し、インプロセス サーバーから読み込まれます。 そのため、フィルター間、またはフィルターとフィルター グラフ マネージャーの間では、メソッド呼び出しはマーシャリングされません。

 

フィルター グラフのData Flow

DirectShow でのイベント通知

グラフ クロックの設定

DirectShow の時刻と時計