Microsoft DirectX 8.0

IAMDroppedFrames インターフェイス

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 にリセットする必要がある。

このインターフェイスの実装の詳細については、「ビデオ キャプチャ フィルタの開発」を参照すること。

アプリケーションは、キャプチャの際は常にこのインターフェイスを使用して、現在のキャプチャの状態を更新する。キャプチャの終了後、アプリケーションはこのインターフェイスを使用して、最終的なキャプチャの結果を判別する。

注 : このインターフェイスのメソッドには、実装されていないものがある。多くのフィルタでは、GetNumDroppedGetNumNotDropped のみが実装される。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを取得する。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IAMDroppedFrames メソッド説明
GetNumDropped 前回のストリーミングの開始以降、ピンが欠落させた総フレーム数を取得する。
GetNumNotDropped ピンがダウンストリームに配信した (欠落しなかった) 総フレーム数を取得する。
GetDroppedInfo ドロップ フレーム番号の配列を取得する。
GetAverageFrameSize ドロップ フレームの平均サイズを取得する。

IAMDroppedFrames::GetAverageFrameSize

IAMDroppedFrames インターフェイス

ピンが欠落させたフレームの平均サイズを取得する。

構文

HRESULT GetAverageFrameSize(
    long *plAverageSize );

パラメータ

plAverageSize
[out, retval] ストリーミングの開始以降、ピンが送信したフレームの平均サイズへのポインタ (バイト単位)。

戻り値

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

注意

GetAverageFrameSize への呼び出しでデータがキャプチャされない場合、plAverageSize は値 0 を返す。

IAMDroppedFrames::GetDroppedInfo

IAMDroppedFrames インターフェイス

ピンが欠落させたフレーム番号の配列を取得する。

構文

HRESULT GetDroppedInfo(
    long lSize,
    long *plArray,
    long *plNumCopied );

パラメータ

lSize
[in] 要求される配列内の要素数。
plArray
[out] 配列へのポインタ。
plNumCopied
[out, retval] 設定された配列要素数へのポインタ。フィルタが任意の要素数の保存を決め、要求したフレーム数分だけこの情報を保存しないことがあるので、この値は lSize と異なる場合がある。

戻り値

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

注意

フィルタは、ドロップ フレームの最初の lSize 数までそのフレーム数を配列に書き込み、それによって plNumCopied を設定する。

IAMDroppedFrames::GetNumDropped

IAMDroppedFrames インターフェイス

前回のストリーミングの開始以降、ピンが欠落させた総フレーム数を取得する。

構文

HRESULT GetNumDropped(
    long *plDropped );

パラメータ

plDropped
[out] ドロップされた総フレーム数へのポインタ。

戻り値

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

IAMDroppedFrames::GetNumNotDropped

IAMDroppedFrames インターフェイス

ピンがダウンストリームに配信した (欠落しなかった) 総フレーム数を取得する。

構文

HRESULT GetNumNotDropped(
  long *plNotDropped );

パラメータ

plNotDropped
[out] 欠落しなかった総フレーム数へのポインタ。

戻り値

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