CVideoTransformFilter.ShouldSkipFrame 方法

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

ShouldSkipFrame方法确定筛选器是否应删除指定的示例。

语法

BOOL ShouldSkipFrame(
   IMediaSample *pIn
);

参数

指向示例的 IMediaSample 接口的指针。

返回值

如果筛选器应删除此示例,则返回 TRUE ;如果筛选器应处理此示例,则返回 FALSE

备注

如果满足以下条件,则此方法返回 TRUE

  • 该示例具有时间戳。
  • 平均解码时间至少为帧持续时间的 25%。
  • 呈现器当前至少延迟了一帧,如质量消息所报告的那样。
  • 跳到下一个关键帧不会导致帧提前到达多个帧。

出于此计算目的,筛选器在处理数据时记录以下信息:

  • 过去 20 帧的平均解码时间 (m_itrAvgDecode)
  • 自上一个关键帧 (m_nFramesSinceKeyFrame) 以来的帧数
  • 关键帧 (m_nKeyFramePeriod)

筛选器删除帧后,会继续删除帧,直到到达下一个关键帧。 如果此方法返回 TRUE,它还会将 EC_QUALITY_CHANGE 事件发送到 Filter Graph 管理器。

要求

要求
标头
Vtrans.h (包括 Streams.h)

Strmbase.lib (零售版本) ;
Strmbasd.lib (调试生成)

另请参阅

CVideoTransformFilter 类