Microsoft DirectX 8.0 |
このインターフェイスは、キャプチャ グラフ、プレビュー グラフ、ファイル再圧縮グラフを作成するためのメソッドを備えている。キャプチャ グラフ ビルダがこのインターフェイスを実装する。
このインターフェイスは、ICaptureGraphBuilder インターフェイスを置き換えるものである。このインターフェイスでは、オーディオとビデオの両方など、複数のメディアをキャプチャできる Microsoft® Windows® Driver Model (WDM) キャプチャ ドライバを使用できる。従来の ICaptureGraphBuilder インターフェイスでは、ビデオとオーディオの両方のキャプチャに同じドライバを使用するデバイスは使用できない。
このインターフェイスの使い方の詳細については、「キャプチャ アプリケーションの書き方」および「AVI ファイルの再圧縮」を参照すること。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 ICaptureGraphBuilder2 メソッド 説明 SetFiltergraph キャプチャ グラフ ビルダが使用するフィルタ グラフを指定する。 GetFiltergraph ビルダが使用しているフィルタ グラフを取得する。 SetOutputFileName フィルタ グラフのファイル ライティング セクションを作成する。 FindInterface 指定されたフィルタから始めて、指定されたインターフェイスをグラフ内で検索する。 RenderStream ソース フィルタの出力ピンを、オプションで圧縮フィルタを経由して、レンダリング フィルタに接続する。 ControlStream キャプチャされたデータの 1 つ以上のストリームの開始タイムと終了タイムを設定する。 AllocCapFile キャプチャ ファイルを指定されたサイズにあらかじめ割り当てる。 CopyCaptureFile キャプチャ ファイルから有効なメディア データをコピーする。 FindPin フィルタの特定のピンを取得するか、特定のピンが指定された条件に適合するかどうかを判別する。
ICaptureGraphBuilder2 インターフェイス
キャプチャ ファイルを指定されたサイズにあらかじめ割り当てる。最良の結果を得るには、常に、キャプチャ データよりサイズが大きく、最適化され、あらかじめ割り当てられたキャプチャ ファイルにキャプチャする。
構文
HRESULT AllocCapFile( LPCOLESTR lpwstr, DWORDLONG dwlSize );
パラメータ
- lpwstr
- [in] 作成またはサイズを変更するファイルの名前が格納された Unicode 文字列へのポインタ。
- dwlSize
- [in] 割り当てるファイルのサイズ (バイト単位)。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、エラーの原因を示す HRESULT 値を返す。
注意
ファイルが読み取り専用の場合、このメソッドは失敗する。
理想的には必要以上に大きな可能な限りのスペースを割り当てることが最も望ましい。しかしこれは比較的小さなデータをもつ非常に大きなファイルを作成することになる。たとえば、1ギガバイト(GB)キャプ チャファイルに数メガバイトのキャプチャ ビデオが入る場合もある。CopyCaptureFile メソッドを使って新しいファイルにデータをコピーすること。このメソッドはデータだけをコピーし、オリジナルファイルの空き部分は無視する。
注 : AllocCapFile メソッドは、あらかじめ割り当てられたファイル全体にわたって書き込む必要があるため、Microsoft® Windows NT® 4.x プラットフォーム上または Microsoft® Windows® 2000 プラットフォーム上では、Windows 9x プラットフォーム上より動作が遅くなる。ただし、それでもこのメソッドはキャプチャのパフォーマンスが高いため、このメソッドを使用することが推奨されている。
ICaptureGraphBuilder2 インターフェイス
キャプチャされたデータの 1 つ以上のストリームの開始タイムと終了タイムを設定する。
このメソッドは、メソッドの呼び出しで指定された検索条件を使って、キャプチャ フィルタ上の出力ピンを検索する。次に、これらのピンに対して IAMStreamControl メソッドを呼び出す。このメソッドを利用すると、アプリケーションは、グラフ内のフィルタやピンを列挙せずに、ストリームを制御できる。
このメソッドは、フレーム単位の精度が要求されるキャプチャや、個別のキャプチャ動作およびプレビュー動作の制御に使用する。たとえば、ビデオのプレビューを中断せずに、ディスクへのキャプチャを停止することができる。
構文
HRESULT ControlStream( const GUID *pCategory, const GUID *pType, IBaseFilter *pFilter, REFERENCE_TIME *pstart, REFERENCE_TIME *pstop, WORD wStartCookie, WORD wStopCookie );
パラメータ
- pCategory
- [in] ピン カテゴリを指定する AMPROPERTY_PIN_CATEGORY プロパティ セットのメンバへのポインタ。このパラメータの値を NULL にすることはできない。
- pType
- [in] メディア タイプを指定するメジャー タイプ GUID へのポインタまたは NULL。このパラメータが NULL の場合は、pFilter パラメータも NULL に設定する。そうしないと、間違ったピンが制御され、予期しない結果が生じることがある。
- pFilter
- [in] 制御するフィルタを指定する IBaseFilter インターフェイスへのポインタ。グラフ内のすべてのキャプチャ フィルタを制御するには、このパラメータを NULL に設定する。
- pstart
- [in] 開始タイムが格納された変数へのポインタ。直ちに開始するには、値を NULL に設定する。前の開始要求をキャンセルするには、値を MAX_TIME に設定する。前の要求がない場合、値 を MAX_TIME にすることには何の効果もない。
- pstop
- [in] 終了タイムが格納された変数へのポインタ。直ちに終了するには、値を NULL に設定する。前の終了要求をキャンセルするには、値を MAX_TIME に設定する。前の要求がない場合、値 を MAX_TIME にすることには何の効果もない。
- wStartCookie
- [in] EC_STREAM_CONTROL_STARTED イベント通知の第 2 パラメータとして送られる値。詳細については、「注意」を参照すること。
- wStopCookie
- [in] EC_STREAM_CONTROL_STOPPED イベント通知の第 2 パラメータとして送られる値。詳細については、「注意」を参照すること。
戻り値
HRESULT 値を返す。設定される値は次のとおりである。
S_FALSE 少なくとも 1 つのダウンストリーム レンダラが終了通知を送らない。 S_OK 成功。 E_FAIL 適合するピンが見つからない、またはピンがストリーム コントロールをサポートしていない。 E_POINTER NULL ポインタ引数。
注意
最初の 3 つのパラメータは、制御するピンを指定する。キャプチャ グラフは、複数のキャプチャ フィルタを備えていることがある。たとえば、キャプチャ グラフは、ビデオ用のフィルタ、オーディオ用のフィルタ、クローズド キャプション データ用のフィルタを備えていることがある。また、キャプチャ フィルタは、複数の出力ピンを備えていることがある。一部のキャプチャ フィルタは、プレビュー用とキャプチャ用の別々のピンを備えていたり、ビデオ専用データ用とオーディオ-ビデオ インターリーブ データ用の別々のピンを備えていることがある。たとえば、ビデオ プレビューを制御するには、pCategory として PIN_CATEGORY_PREVIEW を指定し、pType として MEDIATYPE_Video を指定する。
ピンを制御するとき、このメソッドは IAMStreamControl::StartAt メソッドと IAMStreamControl::StopAt メソッドを呼び出す。各ピンは、開始時に EC_STREAM_CONTROL_STARTED イベント通知を送る。イベント通知の第 2 パラメータは、wStartCookie が示す値である。ピンは停止すると、EC_STREAM_CONTROL_STOPPED イベント通知を送る。このイベント通知の第 2 パラメータは、wStopCookie が示す値である。
このメソッドは、適合するピンを見つけると、ダウンストリームで、IAMStreamControl (通常はマルチプレクサ) をサポートする別のフィルタを検索する。フィルタが見つかると、このメソッドは、そのフィルタの開始タイムと終了タイムを設定する。これによって、キャプチャ フィルタ用とダウンストリーム フィルタ用の 2 つの終了通知のペアが生成される。ダウンストリーム フィルタからの終了通知のみが wStopCookie パラメータを使用する。このイベントを待機することにより、ダウンストリーム フィルタが最後のサンプルを受け取ることが保証される。
IAMStreamControl をサポートするダウンストリーム フィルタがない場合、メソッドは S_FALSE を返す。その場合は、最後のサンプルがレンダリングされる前に終了通知を受け取ることがある。
ICaptureGraphBuilder2 インターフェイス
キャプチャ ファイルから有効なメディア データをコピーする。
通常は、まずあらかじめ割り当てられた大きいファイルにキャプチャする。このメソッドは新しいファイルに有効なメディア データのみをコピーする。結果的に新しいファイルはコピー元ファイルよりずっと小さくなる。
構文
HRESULT CopyCaptureFile( LPOLESTR lpwstrOld, LPOLESTR lpwstrNew, int fAllowEscAbort, IAMCopyCaptureFileProgress *pCallback );
パラメータ
- lpwstrOld
- [in] コピー元ファイル名が格納された Unicode 文字列へのポインタ。
- lpwstrNew
- [in] コピー先ファイル名が格納された Unicode 文字列へのポインタ。このファイルに有効なデータがコピーされる。
- fAllowEscAbort
- [in] Esc キーを押すとコピー操作が中断されるかどうかを示すブール型の値。値が TRUE の場合は、ユーザーが Esc キーを押すとコピー操作が中断される。値が FALSE の場合、メソッドは Esc キー操作を無視する。
- pCallback
- [in] 進行状況を表示する IAMCopyCaptureFileProgress インターフェイスへのポインタまたは NULL。詳細については、「注意」を参照すること。
戻り値
HRESULT 値を返す。設定される値は次のとおりである。
S_FALSE 操作が完了する前にユーザーが操作をキャンセルした。 S_OK 成功。 E_FAIL 失敗。 E_INVALIDARG コピー元ファイルまたはコピー先ファイルが開けない。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ引数。
注意
コピー元ファイルとコピー先ファイルは AVI ファイルでなければならない。他のファイルタイプはサポートされていない。
コピー操作の進行状況を表示するには、IAMCopyCaptureFileProgress インターフェイスを実装し、pCallback パラメータを使ってポインタをインターフェイスに渡す。pCallback が NULL でない場合、このメソッドは、パーセント単位の達成率を示す 0 から 100 の間の整数を指定して、定期的に IAMCopyCaptureFileProgress::Progress メソッドを呼び出す。
ICaptureGraphBuilder2 インターフェイス
指定されたフィルタから始めて、指定されたインターフェイスをグラフ内で検索する。検索をフィルタのアップストリームまたはダウンストリームのグラフのセクションに限定したり、特定のピン カテゴリまたはメディア タイプに限定したりすることができる。
構文
HRESULT FindInterface( const GUID *pCategory, const GUID *pType, IBaseFilter *pf, REFIID riid, void **ppint );
パラメータ
- pCategory
- [in] 検索条件を指定する GUID へのポインタ。詳細については、「注意」を参照すること。指定できる値は次のとおりである。
- LOOK_UPSTREAM_ONLY
- LOOK_DOWNSTREAM_ONLY
- ピン カテゴリを指定する AMPROPERTY_PIN_CATEGORY プロパティ セットのメンバ。
- NULL
- pType
- [in] 出力ピンのメディア タイプを指定するメジャー タイプ GUID へのポインタまたは NULL。
- pf
- [in] フィルタの IBaseFilter インターフェイスへのポインタ。
- riid
- [in] インターフェイスの参照識別子 (ID)。
- ppint
- [out] インターフェイス ポインタを受け取る変数のアドレス。インターフェイスを使用した後は、取得したインターフェイス ポインタを必ず解放すること。
戻り値
HRESULT 値を返す。設定される値は次のとおりである。
S_OK 成功。 E_FAIL 失敗。 E_NOINTERFACE そのインターフェイスはサポートされていない。 E_POINTER NULL ポインタ引数。
注意
キャプチャ グラフでは、さまざまなフィルタおよびピンが、圧縮パラメータ (IAMVideoCompression) やストリーム フォーマット (IAMStreamConfig) などのプロパティを設定するインターフェイスを公開する可能性がある。キャプチャ デバイスによっては、アナログ信号のルーティングを行う IAMCrossbar や、TV チューナー デバイスを制御する IAMTVTuner など、ほかの有用なインターフェイスも使われる。このメソッドを使えば、グラフを対象に検索を行うための特殊なコードを書かなくても、インターフェイスを検索できる。
重要 : IVideoWindow インターフェイス ポインタを取得するときは、このメソッドを呼び出さずに、必ずフィルタ グラフ マネージャにこのインターフェイスを問い合わせる。そうしないと、フィルタ グラフ マネージャは、画面解像度およびその他のイベントに正しく反応しなくなる。
pCategory パラメータが NULL である場合、このメソッドは、グラフ全体を対象として要求されたインターフェイスを検索する。このメソッドは、pf パラメータによって指定されたフィルタから始めて、グラフ内で次のオブジェクトを検索する。
- フィルタ
- フィルタのピン
- フィルタのピンを含むすべてのダウンストリーム フィルタ
- フィルタのピンを含むすべてのアップストリーム フィルタ
pCategory パラメータと pType パラメータを設定することにより、検索を限定できる。
- pCategory が &LOOK_UPSTREAM_ONLY である場合、検索はフィルタの入力ピンから始まって、アップストリーム方向に継続する。フィルタ自体やフィルタのダウンストリームにあるものは検索の対象にならない。pType パラメータは無視される。
- pCategory が &LOOK_DOWNSTREAM_ONLY である場合、検索はフィルタの出力ピンから始まって、ダウンストリーム方向に継続する。フィルタ自体やフィルタのアップストリームにあるものは検索の対象にならない。pType パラメータは無視される。
- pCategory がピン カテゴリを指定している場合、検索のダウンストリームの部分は、ピン カテゴリと pType パラメータによって指定されるメディア タイプの両方が一致するフィルタの出力ピンに限定される。その場合、メソッドは、フィルタおよびフィルタのアップストリームにあるすべてのものも検索する。
ピン カテゴリは、キャプチャ フィルタのピン インターフェイスを検索するときに役立つ。たとえば、キャプチャ フィルタは、キャプチャ用とプレビュー用の別々のピンを備えていることがある。ピン カテゴリを指定する場合は、メソッドが正しいフィルタとピンを選択できるように、メディア タイプも指定する必要がある。
一部のビデオ キャプチャ フィルタは、プレビュー ピンの代わりにビデオ ポート ピン (PIN_CATEGORY_VIDEOPORT) を備えている。PIN_CATEGORY_PREVIE と MEDIATYPE_Video を指定すると、メソッドは、すべてのビデオ ポート ピンをプレビュー ピンとして扱う。アプリケーションでこの可能性をテストする必要はない。
サポートするフィルタ。キャプチャ デバイスが Windows Driver Model (WDM) ドライバを使用する場合、グラフは、TV チューナー フィルタやアナログ ビデオ クロスバー フィルタなど、WDM ビデオ キャプチャ フィルタのアップストリームにある特定のフィルタを必要とすることがある。グラフがこれらの WDM フィルタのいずれかを必要とする場合、このメソッドは自動的にそれらのフィルタをグラフに挿入する。メソッドは、キャプチャ フィルタの入力ピンに問い合わせて、入力ピンがサポートするメディアを判別し、それらのメディアを適合するフィルタに接続する。
ICaptureGraphBuilder2 インターフェイス
フィルタの特定のピンを取得するか、特定のピンが指定された条件に適合するかどうかを判別する。
構文
HRESULT FindPin( IUnknown *pSource, PIN_DIRECTION pindir, const GUID *pCategory, const GUID *pType, BOOL fUnconnected, int num, IPin **ppPin );
パラメータ
- pSource
- [in] フィルタのインターフェイスへのポインタまたはピンのインターフェイスへのポインタ。
- pindir
- [in] ピンの方向 (入力または出力) を指定する PIN_DIRECTION 列挙のメンバ。
- pCategory
- [in] ピン カテゴリを指定する AMPROPERTY_PIN_CATEGORY プロパティ セットのメンバ。すべてのカテゴリが適合する場合は NULL を使用する。
- pType
- [in] メディア タイプを指定するメジャー タイプ GUID へのポインタ。すべてのメディアが適合する場合は NULL を使用する。
- fUnconnected
- [in] ピンの接続が外れている必要があるかどうかを指定するブール型の値。TRUE の場合、ピンの接続は外れている必要がある。FALSE の場合は、ピンが接続されていても、接続されていなくてもよい。
- num
- [in] 適合するピンのセットから取得するピンの、開始値をゼロとするインデックス。pSource がフィルタへのポインタで、複数のピンが検索条件に適合する場合は、このパラメータで取得するピンを指定する。pSource がピンへのポインタである場合、このパラメータは無視される。
- ppPin
- [out] 適合するピンの IPin インターフェイスを受け取るポインタのアドレス。
戻り値
適合するピンが見つかった場合は S_OK、それ以外の場合は E_FAIL を返す。
注意
pSource がフィルタへのポインタである場合、メソッドは、そのフィルタ上で検索条件に適合する n 番目のピンを検索する。n は num パラメータによって指定される。メソッドは、適合するピンを見つけると、ppPin パラメータによってピンへのポインタを返す。
pSource がピンへのポインタである場合、メソッドは、そのピンが検索条件に適合するかどうかをテストする。ピンが条件に適合する場合、メソッドは S_OK を返し、ppPin パラメータによってピンの IPin インターフェイスへのポインタを返す。それ以外の場合、メソッドは E_FAIL を返す。
いずれの場合も、メソッドが成功すると、ppPin パラメータによって返される IPin インターフェイスには、未解決の参照カウントが残る。インターフェイスを使った後は、必ず解放すること。
通常、アプリケーションがこのメソッドを使う必要はない。このメソッドは、RenderStream メソッドではフィルタ グラフを作成できない、きわめて複雑なタスクを処理するために用意されている。このメソッドを使って目的のピンをキャプチャ フィルタから取得し、グラフの残りの部分を手動で作成する。
ICaptureGraphBuilder2 インターフェイス
キャプチャ グラフ ビルダが使用しているフィルタ グラフを取得する。
構文
HRESULT GetFiltergraph( IGraphBuilder **ppfg );
パラメータ
- ppfg
- [out] IGraphBuilder インターフェイス ポインタを受け取る変数のアドレス。
戻り値
次のいずれかの HRESULT 値を返す。
S_OK 成功。 E_POINTER NULL ポインタ引数。 E_UNEXPECTED フィルタ グラフがない。
注意
このメソッドは、IGraphBuilder インターフェイスの参照カウントをインクリメントする。インターフェイスの使用を終わったら、必ずインターフェイスを解放すること。
ICaptureGraphBuilder2 インターフェイス
ソース フィルタの出力ピンを、オプションで圧縮フィルタを経由して、レンダリング フィルタに接続する。
構文
HRESULT RenderStream( const GUID *pCategory, const GUID *pType, IUnknown *pSource, IBaseFilter *pfCompressor, IBaseFilter *pfRenderer );
パラメータ
- pCategory
- [in] ピン カテゴリを指定する AMPROPERTY_PIN_CATEGORY プロパティ セットのメンバへのポインタ。カテゴリに関係なく、任意のピンを使用する場合は NULL を指定する。通常は、次の値を指定する。
- pType
- [in] 出力ピンのメディア タイプを指定するメジャー タイプ GUID へのポインタ。メディア タイプに関係なく、任意のピンを使用する場合は NULL を指定する。
- pSource
- [in] ソース フィルタのインターフェイスへのポインタまたは出力ピンのインターフェイスへのポインタ。
- pfCompressor
- [in] 圧縮フィルタの IBaseFilter インターフェイスへのオプションのポインタ。
- pfRenderer
- [in] レンダリング フィルタまたはマルチプレクサ フィルタの IBaseFilter インターフェイスへのオプションのポインタ。
戻り値
HRESULT 値を返す。可能な戻り値は次のとおりである。
S_OK 成功。 VFW_S_NOPREVIEWPIN スマート ティー フィルタを経由してプレビューがレンダリングされた。 E_FAIL 失敗。 E_INVALIDARG 無効な引数。 E_POINTER NULL ポインタ引数。
注意
このメソッドは、プレビューまたはファイルへの書き込みを行う際にストリームをレンダリングする。このメソッドは、キャプチャ グラフの多くの複雑な処理を自動的に行う。
pSource パラメータでは、出力ピンまたはフィルタを指定する。出力ピンを指定した場合、メソッドは、そのピンからのストリームをレンダリングする。その場合は、pCategory パラメータと pType パラメータを NULL に設定する。フィルタを指定した場合、メソッドは、ピン カテゴリが pCategory パラメータと一致し、メディア タイプが pType パラメータと一致する、そのフィルタの出力ピンを検索する。
pfRenderer パラメータでは、シンク フィルタを指定する。シンク フィルタは、通常、ファイル ライタ フィルタ、AVI Mux などのマルチプレクサ フィルタのどちらかである。マルチプレクサへのポインタを取得するには、SetOutputFileName メソッドを呼び出す。このメソッドは、ppf パラメータによってポインタを返す。
pfRenderer が NULL である場合、メソッドは、デフォルトのレンダラ、つまりビデオの場合はビデオ レンダラ、オーディオの場合はデフォルト DirectSound デバイスを使用する。
pfCompressor パラメータでは、圧縮フィルタまたは一般的には任意の変換フィルタを指定する。ストリームを圧縮しない場合は、このパラメータを NULL に設定する。
スマート ティー。一部のキャプチャ フィルタにはキャプチャ ピンはあるが、プレビュー ピンがない。プレビューを行うには、キャプチャ ピンがスマート ティー フィルタに接続されている必要がある。このフィルタは、データをキャプチャ ストリームとプレビュー ストリームの 2 つのストリームに分割する。PIN_CATEGORY_PREVIEW または PIN_CATEGORY_CAPTURE を指定すると、必要に応じて、メソッドがスマート ティー フィルタを挿入する。次に、メソッドは、スマート ティー フィルタ上で指定されたストリームのレンダリングを行う。プレビュー ストリームをレンダリングするときにメソッドがスマート ティー フィルタを使用する場合、メソッドは VFW_S_NOPREVIEWPIN を返す。
クローズド キャプション。このメソッドを使ってクローズド キャプションのキャプチャまたはプレビューを行うことができる。一部のキャプチャ フィルタは垂直同期間隔 (VBI) データを出力し、別のキャプチャ フィルタはクローズド キャプション データを出力する。いずれの場合も、1 回は PIN_CATEGORY_VBI を使って、もう 1 回は PIN_CATEGORY_CC を使って、メソッドを 2 回呼び出す。メソッドは、VBI データをクローズド キャプションに変換するのに必要なすべてのフィルタを挿入する。データのプレビューを行うには、pfRenderer パラメータを NULL に設定する。データをファイルにキャプチャするには、マルチプレクサ フィルタの IBaseFilter インターフェイス ポインタを使用する。同じグラフでデータのキャプチャとプレビューを行うことができる。1 回目は NULL を使い、2 回目はマルチプレクサを使ってメソッドを呼び出す。pfCompressor パラメータを NULL に設定する。
ビデオ ポート ピン。ビデオ ポート エクステンション (VPE) ビデオ キャプチャ ハードウェアを使用するフィルタは、プレビュー ピンの代わりにビデオ ポート ピン (PIN_CATEGORY_VIDEOPORT) を備えている。プレビューやキャプチャを機能させるには、ビデオ ポート ピンがオーバーレイ ミキサー フィルタに接続されている必要がある。細部はメソッドが処理する。PIN_CATEGORY_VIDEOPORT を指定する必要はない。PIN_CATEGORY_PREVIEW または PIN_CATEGORY_CAPTURE を指定すれば、メソッドがピンを正しく接続する。これと同様に、一部のフィルタは、ビデオ ポート ピン (PIN_CATEGORY_VIDEOPORT_VBI) を使って VBI データを出力する。PIN_CATEGORY_VIDEOPORT の場合と同様に、メソッドが細部を処理する。PIN_CATEGORY_VIDEOPORT_VBI を指定する必要はない。
サポートするフィルタ。キャプチャ デバイスが Windows Driver Model (WDM) ドライバを使用する場合、グラフは、WDM ビデオ キャプチャ フィルタのアップストリームにある TV チューナー フィルタやアナログ ビデオ クロスバー フィルタなどの特定のフィルタを必要とすることがある。このメソッドが正しくストリームのレンダリングを行えば、メソッドは、必要になるすべての WDM フィルタをグラフに挿入する。メソッドは、キャプチャ フィルタの入力ピンに問い合わせて、入力ピンがサポートするメディアを判別し、それらのメディアを適合するフィルタに接続する。
ファイル ソース。このメソッドの本来の目的はキャプチャ グラフの作成であるが、このメソッドはファイルのトランスコードや再圧縮にも使用できる。以下の説明では、ファイルに最大でも 1 つのビデオ ストリームと 1 つのオーディオ ストリームまたは 1 つのインターリーブ ストリームが含まれているものとする。それ以外の条件では、メソッドは正しく機能しない。ファイル ソースの出力ピンは 1 つなので、pCategory と pType を NULL に設定する。1 回はビデオ ストリームをレンダリングするために、もう 1 回はオーディオ ストリームをレンダリングするために、計 2 回メソッドを呼び出す。最初の呼び出しでは、ソース フィルタがパーサー フィルタに接続され、パーサー フィルタの出力ピンの中の 1 つがレンダリングされる。2 回目の呼び出しでは、パーサーの残りの出力ピンがレンダリングされる。1 つのストリームを圧縮し、もう 1 つのストリームを圧縮しない場合は、必ず最初の呼び出しでコンプレッサ フィルタ (pfCompressor パラメータ) を指定すること。最初の呼び出しで pfCompressor を NULL にすると、メソッドはビデオ ストリームをレンダリングすることも、オーディオ ストリームをレンダリングすることもある。詳しい使用例については、「AVI ファイルの再圧縮」を参照すること。
ICaptureGraphBuilder2 インターフェイス
キャプチャ グラフ ビルダが使用するフィルタ グラフを指定する。
構文
HRESULT SetFiltergraph( IGraphBuilder *pfg );
パラメータ
- pfg
- [in] フィルタ グラフの IGraphBuilder インターフェイスへのポインタ。
戻り値
HRESULT 値を返す。設定される値は次のとおりである。
E_POINTER NULL ポインタ引数。 E_UNEXPECTED 予期せぬエラー。
注意
このメソッドを呼び出さない場合は、キャプチャ グラフ ビルダが、必要なときに自動的にフィルタ グラフを作成する。キャプチャ グラフ ビルダが既にフィルタ グラフを備えている場合、このメソッドは E_UNEXPECTED を返す。
ICaptureGraphBuilder2 インターフェイス
フィルタ グラフのファイル ライティング セクションを作成する。
構文
HRESULT SetOutputFileName( const GUID *pType, LPCOLESTR lpwstrFile, IBaseFilter **ppf, IFileSinkFilter **pSink );
パラメータ
- pType
- [in] 出力のメディア サブタイプあるいはマルチプレクサ フィルタまたはファイル ライタ フィルタのクラス識別子 (CSLID) を表す GUID へのポインタ。指定するメディア サブタイプは、次のいずれかでなければならない。
MEDIASUBTYPE_Avi AVI (Audio-Video Interleaved) MEDIASUBTYPE_Asf ASF (Advanced Streaming Format) - lpwstrFile
- [in] 出力ファイル名が格納された Unicode 文字列へのポインタ。
- ppf
- [out] マルチプレクサの IBaseFilter インターフェイスを受け取るポインタのアドレス。
- pSink
- [out] ファイル ライタの IFileSinkFilter インターフェイスを受け取るポインタのアドレス。NULL の場合がある。
戻り値
HRESULT 値を返す。設定される値は次のとおりである。
S_OK 成功。 E_FAIL 失敗。 E_POINTER Null ポインタ引数。
注意
このメソッドは、マルチプレクサと File ライタ フィルタをフィルタ グラフに挿入する。また、このメソッドは、IFileSinkFilter::SetFileName を呼び出して出力ファイル名を設定する。
ppf パラメータによって返されるマルチプレクサ フィルタへのポインタを、RenderStream メソッドの pfRenderer パラメータとして使うことができる。
メソッドが成功すると、ppf パラメータによって返される IBaseFilter インターフェイスに、未解決の参照カウントが残る。メソッドが成功し、pSink が NULL でない場合は、IFileSinkFilter インターフェイスにも未解決の参照カウントが残る。いずれのインターフェイスも、使用した後で、必ず解放すること。