ビデオのプレビュー
ビデオ プレビュー グラフを作成するには、次のように ICaptureGraphBuilder2::RenderStream メソッドを呼び出す。
ICaptureGraphBuilder2 *pBuild; // キャプチャ グラフ ビルダ。
// pBuild を初期化する (省略)。
IBaseFilter *pCap; // ビデオ キャプチャ フィルタ。
/* pCap を初期化し、フィルタ グラフに追加する (省略)。 */
hr = pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,
pCap, NULL, NULL);
この例では、次のことを仮定している。
- 「Capture Graph Builder について」で説明しているように、pBuild は初期化されている。
- 「キャプチャ デバイスの選択」で説明しているように、キャプチャ フィルタのインスタンスを作成し、フィルタ グラフに追加して、pCap は初期化されている。
RenderStream メソッドの最初の引数にはピン カテゴリを指定する。プレビュー グラフの場合、PIN_CATEGORY_PREVIEW を使う。2 番目の引数には、メジャー タイプ GUID としてメディア タイプを指定する。ビデオの場合、MEDIATYPE_Video を使う。DV デバイスはインターリーブされたオーディオとビデオを送信する。そのメディア タイプは MEDIATYPE_Interleaved である。 (DV キャプチャの詳細については、「DirectShow でのデジタル ビデオ」を参照すること。)
3 番目の引数は、キャプチャ フィルタの IBaseFilter インターフェイスへのポインタである。次の 2 つの引数はこの例では必要ない。これらの引数は、ストリームのレンダリングに必要なことがある追加フィルタを指定するときに使う。最後の引数を NULL に設定すると、Capture Graph Builder はメディア タイプに基づいて、ストリームにデフォルトのレンダラを選択する。ビデオの場合、Capture Graph Builder はデフォルト レンダラとして常にビデオ レンダラ フィルタを使う。
注 : Windows XP では、Video Mixing Renderer (VMR) は IGraphBuilder メソッドのデフォルト ビデオ レンダラであるが、RenderStream メソッドのデフォルト レンダラ "ではない"。いずれのプラットフォームでも、特に指定しない限り、Capture Graph Builder は常に古いビデオ レンダラ フィルタを使う。
ピン カテゴリは PIN_CATEGORY_PREVIEW と指定するが、フィルタに実際にプレビュー ピンがあるかどうかは関係ない。ビデオ ポート ピンやキャプチャ ピンがあってもよい。どちらの場合も、Capture Graph Builder は自動的に正しいグラフを作成する。
次の図は、ビデオをプレビューできる最も単純なグラフを示している。
この図で、キャプチャ フィルタにはプレビュー ピンがあり、ビデオ レンダラに直接接続している。
キャプチャ フィルタにキャプチャ ピンしかない場合、Capture Graph Builder はスマート ティー フィルタを挿入する。このフィルタはストリームをキャプチャ ストリームとプレビュー ストリームに分割する。詳細については、「ビデオ キャプチャとプレビューの組み合わせ」で説明している。
場合によっては、ビデオ ストリームをオーバーレイ ミキサー フィルタに通さなければならない。その場合は、RenderStream メソッドが自動的にグラフに追加する。
参照