Microsoft DirectX 8.0 |
IAMDroppedFrames インターフェイスは、キャプチャ フィルタからアプリケーションに対して、フィルタが欠落させたフレーム (送信しなかったフレーム)、実現されたフレーム レート (グラフの実行時間を欠落しなかったフレーム数で割った値)、および実現されたデータ レート (グラフの実行時間をフレームの平均サイズで割った値) に関する情報を提供する。ドロップ フレーム数が多いと、ビデオ クリップの滑らかさが損なわれる可能性がある。
アプリケーションが IAMStreamControl インターフェイスまたは ICaptureGraphBuilder::ControlStream を使用してピンをオフにしている場合でも、欠落フレームと非欠落フレームを、ビデオ キャプチャ ドライバが引き続きカウントしている可能性がある。多くの場合、そのカウントに意味はない。アプリケーションにとって、ピンがオンのときのみ欠落フレームと非欠落フレームの個数が意味を持つ場合は、IAMStreamControl::StartAt または ICaptureGraphBuilder::ControlStream でピンをオンにした直後に IAMDroppedFrames::GetNumDropped および IAMDroppedFrames::GetNumNotDropped を呼び出すことによって、その値を求めることができる。この後の GetNumDropped または GetNumNotDropped への呼び出しで返される値から前の値を引くことによって、ピンがオンの間にドロップされた個数が得られる。多くの場合、この値に意味がある。IAMStreamControl::StartAt または ICaptureGraphBuilder::ControlStream への呼び出しがピンを即座にオンにせず、指定の時間が経過した後でピンをオンにする場合は、通知 (EC_STREAM_CONTROL_STARTED) を受け取ってから最初の GetNumDropped および GetNumNotDropped を呼び出す必要がある。詳細については、IAMStreamControl に関するドキュメントを参照すること。両方のインターフェイスを適切に使用するキャプチャ アプリケーションの例については、CAPTURE のサンプルを参照すること。
キャプチャ フィルタのビデオ出力ピンは、常にこのインターフェイスを実装する。
キャプチャ フィルタが State_Stopped から State_Paused に変化するたびに、すべてのカウントを 0 にリセットする必要がある。
このインターフェイスの実装の詳細については、「ビデオ キャプチャ フィルタの開発」を参照すること。
アプリケーションは、キャプチャの際は常にこのインターフェイスを使用して、現在のキャプチャの状態を更新する。キャプチャの終了後、アプリケーションはこのインターフェイスを使用して、最終的なキャプチャの結果を判別する。
注 : このインターフェイスのメソッドには、実装されていないものがある。多くのフィルタでは、GetNumDropped と GetNumNotDropped のみが実装される。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IAMDroppedFrames メソッド 説明 GetNumDropped 前回のストリーミングの開始以降、ピンが欠落させた総フレーム数を取得する。 GetNumNotDropped ピンがダウンストリームに配信した (欠落しなかった) 総フレーム数を取得する。 GetDroppedInfo ドロップ フレーム番号の配列を取得する。 GetAverageFrameSize ドロップ フレームの平均サイズを取得する。
ピンが欠落させたフレームの平均サイズを取得する。
構文
HRESULT GetAverageFrameSize( long *plAverageSize );
パラメータ
- plAverageSize
- [out, retval] ストリーミングの開始以降、ピンが送信したフレームの平均サイズへのポインタ (バイト単位)。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
GetAverageFrameSize への呼び出しでデータがキャプチャされない場合、plAverageSize は値 0 を返す。
ピンが欠落させたフレーム番号の配列を取得する。
構文
HRESULT GetDroppedInfo( long lSize, long *plArray, long *plNumCopied );
パラメータ
- lSize
- [in] 要求される配列内の要素数。
- plArray
- [out] 配列へのポインタ。
- plNumCopied
- [out, retval] 設定された配列要素数へのポインタ。フィルタが任意の要素数の保存を決め、要求したフレーム数分だけこの情報を保存しないことがあるので、この値は lSize と異なる場合がある。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
フィルタは、ドロップ フレームの最初の lSize 数までそのフレーム数を配列に書き込み、それによって plNumCopied を設定する。
前回のストリーミングの開始以降、ピンが欠落させた総フレーム数を取得する。
構文
HRESULT GetNumDropped( long *plDropped );
パラメータ
- plDropped
- [out] ドロップされた総フレーム数へのポインタ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
ピンがダウンストリームに配信した (欠落しなかった) 総フレーム数を取得する。
構文
HRESULT GetNumNotDropped(
long *plNotDropped );
パラメータ
- plNotDropped
- [out] 欠落しなかった総フレーム数へのポインタ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。