次の方法で共有


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 イベントを送信する。

参照