CVideoTransformFilter.ShouldSkipFrame メソッド
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
メソッドは ShouldSkipFrame
、指定したサンプルをフィルターで削除するかどうかを決定します。
構文
BOOL ShouldSkipFrame(
IMediaSample *pIn
);
パラメーター
-
ピン
-
サンプルの IMediaSample インターフェイスへのポインター。
戻り値
このサンプルをフィルターで削除する場合は TRUE 、このサンプルを処理する必要がある場合は FALSE を 返します。
解説
このメソッドは、次の条件が満たされた場合に TRUE を 返します。
- このサンプルにはタイムスタンプがあります。
- 平均デコード時間は、フレーム期間の少なくとも 25% です。
- 現在、レンダラーは、品質メッセージを通じて報告される少なくとも 1 フレーム遅れです。
- 次のキー フレームにスキップしても、フレームが複数のフレームに早く到着することはありません。
この計算のために、フィルターはデータを処理する際に次の情報を記録します。
- 過去 20 フレームの平均デコード時間 (m_itrAvgDecode)
- 最後のキー フレーム以降のフレーム数 (m_nFramesSinceKeyFrame)
- キー フレーム間のフレーム数の見積もり (m_nKeyFramePeriod)
フィルターはフレームをドロップすると、次のキー フレームに到達するまでフレームをドロップし続けます。 このメソッドが TRUE を返す場合は、 EC_QUALITY_CHANGE イベントも Filter Graph Manager に送信されます。
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|