Microsoft DirectX 8.0 |
このインターフェイスは、ライブ ソースをレンダリングするフィルタ グラフの同期をとるメソッドを備えている。ライブ ソースとは、キャプチャ デバイスやネットワーク ブロードキャストのように、リアルタイムでデータをストリーミングするものである。このインターフェイスは、IAMLatency インターフェイスを継承している。
ライブ データをストリームするソース フィルタは、その出力ピンにおいてこのインターフェイスを公開する必要がある。
一般に、アプリケーションはこのインターフェイスのメソッドを呼び出してはならない。代わりに、IAMGraphStreams インターフェイスを使用する。フィルタ グラフ マネージャは、このインターフェイスのメソッドを使用して、ライブ ソースをレンダリングするときに共通して発生する 2 つの問題を解決する。
遅延時間を補正するためにフィルタ グラフは、IAMPushSource インターフェイスを公開している各出力ピンにおいて IAMLatency::GetLatency を呼び出し、グラフ内の最大の遅延時間を調べる。次に、最大遅延時間よりも遅延時間が短いフィルタにおいて IAMPushSource::SetStreamOffset を呼び出し、各自が生成するタイム スタンプを正しいオフセットで調整する。
レート マッチングを実行するためにフィルタ グラフは、レンダリング フィルタがクロック レートをソース フィルタに一致できるかどうかを調べる必要がある。IAMPushSource::GetPushSourceFlags メソッドによって、レンダラがレートをソースに一致させても問題がないかどうかを示すフラグのセットが返される。
これらの問題は、ファイルへのキャプチャには影響しない。ファイル ライタ フィルタは、受信するサンプル上のタイム スタンプに基づいてファイルに正しく書き込む。この後、再生するときにストリームの同期化が行われる。レート マッチングに関して、データは常に可能な限り高速にファイルに書き込まれる。
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IAMLatency メソッド 説明 GetLatency このフィルタに関連付けられている、予期される遅延時間を取得する。 IAMPushSource メソッド 説明 GetPushSourceFlags フィルタの動作を表すフラグの組み合わせを取得する。 SetPushSourceFlags フィルタの動作を指定するフラグを設定する。 SetStreamOffset このフィルタで生成されるタイム スタンプのオフセットを設定する。 GetStreamOffset タイム スタンプを生成するときにフィルタが使用するオフセットを取得する。 GetMaxStreamOffset フィルタがサポートできる最大ストリーム オフセットを取得する。 SetMaxStreamOffset 最大ストリーム オフセットを指定する基準タイム。
フィルタがサポートできる最大ストリーム オフセットを取得する。
構文
HRESULT GetMaxStreamOffset( REFERENCE_TIME *prtMaxOffset );
パラメータ
- prtMaxOffset
- [out] フィルタがサポートできる最大オフセットを示す基準タイムを受け取る変数へのポインタ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。Microsoft® DirectShow® の実装では、E_POINTER または S_OK を返す。
注意
ストリームのオフセットが、サポートされる最大オフセットよりも大きな値に設定される場合、オフセット全体のデータを保持できるだけのバッファが、フィルタに用意されるとは限らない。別のバッファ ダウンストリームがない限り、データが失われる可能性がある。
フィルタの動作を表すフラグの組み合わせを取得する。
構文
HRESULT GetPushSourceFlags( ULONG *pFlags );
パラメータ
- pFlags
- [out] AM_PUSHSOURCE_FLAGS 列挙型で定義されるフラグの組み合わせを受け取る変数へのポインタ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
このメソッドを使用すると、レンダリング フィルタがクロック レートをこのソース フィルタに確実に一致できるかどうかを判別できる。
フィルタがタイム スタンプを生成するときに使用するオフセットを取得する。
構文
HRESULT GetStreamOffset( REFERENCE_TIME *prtOffset );
パラメータ
- prtOffset
- [out] 現在のストリーム オフセットを示す基準タイムを受け取る変数へのポインタ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
フィルタ グラフ内で可能なストリーム オフセットを指定する。
構文
HRESULT SetMaxStreamOffset( REFERENCE_TIME rtMaxOffset );
パラメータ
- rtMaxOffset
- [in] 最大ストリーム オフセットを指定する基準タイム。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
フィルタを接続する前にこのメソッドを呼び出すと、フィルタは適切なサイズのバッファを割り当てることができる。
フィルタの動作を指定するフラグを設定する。現在、アプリケーションでこのメソッドを呼び出してはならない。これは、要求フラグがサポートされていないので、フィルタが設定したフラグをアプリケーションがオーバーライドしてはならないためである。
構文
HRESULT SetPushSourceFlags( ULONG Flags );
パラメータ
- Flags
- [in] AM_PUSHSOURCE_FLAGS 列挙型で定義されるフラグの組み合わせ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
このフィルタで生成されるタイム スタンプのオフセットを設定する。
構文
HRESULT SetStreamOffset( REFERENCE_TIME rtOffset );
パラメータ
- rtOffset
- [in] フィルタの新しいストリーム オフセット。
戻り値
指定されたオフセットが、フィルタで可能な最大オフセットよりも大きい場合は、S_FALSE を返す。それ以外の場合で、成功した場合は S_OK を返す。または、エラーの原因を示す HRESULT 値を返す。
注意
遅延時間がそれぞれ異なるストリームの同期をとるために、フィルタ グラフはこのメソッドを呼び出してフィルタのストリーム オフセットを調整する。
戻り値が S_FALSE の場合、要求されたオフセットに対応できるだけの大きさのバッファを、フィルタがサポートしない可能性がある。別のダウンストリーム バッファがない限り、データが失われることがある。サポートできるフィルタの最大オフセットを取得するには、GetMaxStreamOffset メソッドを呼び出す。