Microsoft DirectX 8.0

IAMPushSource インターフェイス

このインターフェイスは、ライブ ソースをレンダリングするフィルタ グラフの同期をとるメソッドを備えている。ライブ ソースとは、キャプチャ デバイスやネットワーク ブロードキャストのように、リアルタイムでデータをストリーミングするものである。このインターフェイスは、IAMLatency インターフェイスを継承している。

ライブ データをストリームするソース フィルタは、その出力ピンにおいてこのインターフェイスを公開する必要がある。

一般に、アプリケーションはこのインターフェイスのメソッドを呼び出してはならない。代わりに、IAMGraphStreams インターフェイスを使用する。フィルタ グラフ マネージャは、このインターフェイスのメソッドを使用して、ライブ ソースをレンダリングするときに共通して発生する 2 つの問題を解決する。

遅延時間を補正するためにフィルタ グラフは、IAMPushSource インターフェイスを公開している各出力ピンにおいて IAMLatency::GetLatency を呼び出し、グラフ内の最大の遅延時間を調べる。次に、最大遅延時間よりも遅延時間が短いフィルタにおいて IAMPushSource::SetStreamOffset を呼び出し、各自が生成するタイム スタンプを正しいオフセットで調整する。

レート マッチングを実行するためにフィルタ グラフは、レンダリング フィルタがクロック レートをソース フィルタに一致できるかどうかを調べる必要がある。IAMPushSource::GetPushSourceFlags メソッドによって、レンダラがレートをソースに一致させても問題がないかどうかを示すフラグのセットが返される。

これらの問題は、ファイルへのキャプチャには影響しない。ファイル ライタ フィルタは、受信するサンプル上のタイム スタンプに基づいてファイルに正しく書き込む。この後、再生するときにストリームの同期化が行われる。レート マッチングに関して、データは常に可能な限り高速にファイルに書き込まれる。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterfaceサポートされているインターフェイスへのポインタを取得する。
AddRef参照カウントをインクリメントする。
Release参照カウントをデクリメントする。
IAMLatency メソッド説明
GetLatencyこのフィルタに関連付けられている、予期される遅延時間を取得する。
IAMPushSource メソッド説明
GetPushSourceFlagsフィルタの動作を表すフラグの組み合わせを取得する。
SetPushSourceFlagsフィルタの動作を指定するフラグを設定する。
SetStreamOffsetこのフィルタで生成されるタイム スタンプのオフセットを設定する。
GetStreamOffsetタイム スタンプを生成するときにフィルタが使用するオフセットを取得する。
GetMaxStreamOffsetフィルタがサポートできる最大ストリーム オフセットを取得する。
SetMaxStreamOffset最大ストリーム オフセットを指定する基準タイム。

IAMPushSource::GetMaxStreamOffset

IAMPushSource インターフェイス

フィルタがサポートできる最大ストリーム オフセットを取得する。

構文

HRESULT GetMaxStreamOffset(
    REFERENCE_TIME *prtMaxOffset
);

パラメータ

prtMaxOffset
[out] フィルタがサポートできる最大オフセットを示す基準タイムを受け取る変数へのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。Microsoft® DirectShow® の実装では、E_POINTER または S_OK を返す。

注意

ストリームのオフセットが、サポートされる最大オフセットよりも大きな値に設定される場合、オフセット全体のデータを保持できるだけのバッファが、フィルタに用意されるとは限らない。別のバッファ ダウンストリームがない限り、データが失われる可能性がある。

IAMPushSource::GetPushSourceFlags

IAMPushSource インターフェイス

フィルタの動作を表すフラグの組み合わせを取得する。

構文

HRESULT GetPushSourceFlags(
    ULONG *pFlags
);

パラメータ

pFlags
[out] AM_PUSHSOURCE_FLAGS 列挙型で定義されるフラグの組み合わせを受け取る変数へのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。

注意

このメソッドを使用すると、レンダリング フィルタがクロック レートをこのソース フィルタに確実に一致できるかどうかを判別できる。

IAMPushSource::GetStreamOffset

IAMPushSource インターフェイス

フィルタがタイム スタンプを生成するときに使用するオフセットを取得する。

構文

HRESULT GetStreamOffset(
    REFERENCE_TIME  *prtOffset
);

パラメータ

prtOffset
[out] 現在のストリーム オフセットを示す基準タイムを受け取る変数へのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。

IAMPushSource::SetMaxStreamOffset

IAMPushSource インターフェイス

フィルタ グラフ内で可能なストリーム オフセットを指定する。

構文

HRESULT SetMaxStreamOffset(
    REFERENCE_TIME rtMaxOffset
);

パラメータ

rtMaxOffset
[in] 最大ストリーム オフセットを指定する基準タイム。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。

注意

フィルタを接続する前にこのメソッドを呼び出すと、フィルタは適切なサイズのバッファを割り当てることができる。

IAMPushSource::SetPushSourceFlags

IAMPushSource インターフェイス

フィルタの動作を指定するフラグを設定する。現在、アプリケーションでこのメソッドを呼び出してはならない。これは、要求フラグがサポートされていないので、フィルタが設定したフラグをアプリケーションがオーバーライドしてはならないためである。

構文

HRESULT SetPushSourceFlags(
    ULONG Flags
);

パラメータ

Flags
[in] AM_PUSHSOURCE_FLAGS 列挙型で定義されるフラグの組み合わせ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。

IAMPushSource::SetStreamOffset

IAMPushSource インターフェイス

このフィルタで生成されるタイム スタンプのオフセットを設定する。

構文

HRESULT SetStreamOffset(
    REFERENCE_TIME rtOffset
);

パラメータ

rtOffset
[in] フィルタの新しいストリーム オフセット。

戻り値

指定されたオフセットが、フィルタで可能な最大オフセットよりも大きい場合は、S_FALSE を返す。それ以外の場合で、成功した場合は S_OK を返す。または、エラーの原因を示す HRESULT 値を返す。

注意

遅延時間がそれぞれ異なるストリームの同期をとるために、フィルタ グラフはこのメソッドを呼び出してフィルタのストリーム オフセットを調整する。

戻り値が S_FALSE の場合、要求されたオフセットに対応できるだけの大きさのバッファを、フィルタがサポートしない可能性がある。別のダウンストリーム バッファがない限り、データが失われることがある。サポートできるフィルタの最大オフセットを取得するには、GetMaxStreamOffset メソッドを呼び出す。