CVideoTransformFilter::ShouldSkipFrame
ShouldSkipFrame メソッドは、フィルタが特定のサンプルをドロップするべきかどうかを調べる。
構文
BOOL ShouldSkipFrame(
IMediaSample *pIn
);
パラメータ
pIn
サンプルの IMediaSample インターフェイスへのポインタ。
戻り値
フィルタがこのサンプルをドロップするべき場合は TRUE を返す。このサンプルを処理するべき場合は FALSE を返す。
注意
以下の条件が満たされたとき、このメソッドは TRUE を返す。
- サンプルにタイム スタンプがある。
- 平均デコード時間がフレーム時間幅の 25% 以上である。
- 品質メッセージによって報告されているように、レンダラが現在少なくとも 1 フレーム分遅れている。
- 次のキー フレームにスキップしても、フレームが 2 つ以上早いフレームに達しない。
この計算のため、フィルタは、データの処理時に以下の情報を記録する。
- 最後の 20 フレーム以上についての、平均デコード タイム (m_itrAvgDecode)
- 最後のキー フレームからのフレーム数 (m_nFramesSinceKeyFrame)
- キー フレーム間にあるフレーム数の概算 (m_nKeyFramePeriod)
フィルタが 1 つフレームをドロップすると、次のキー フレームに達するまでドロップし続ける。このメソッドが TRUE を返した場合、フィルタ グラフ マネージャにも EC_QUALITY_CHANGE イベントを送信する。
参照