CVideoTransformFilter.ShouldSkipFrame 方法
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 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 管理器。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|