CBaseFilter 类

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

cbasefilter 类层次结构

CBaseFilter 是用于实现筛选器的抽象类。 若要使用此类实现筛选器,必须至少执行以下步骤:

  • CBaseFilter派生新类。
  • 包括定义筛选器上的引脚的成员变量。 引脚必须继承自 CBasePin 类。
  • 重写纯虚拟方法 CBaseFilter::GetPin,该方法检索筛选器上的引脚。
  • 重写纯虚拟方法 CBaseFilter::GetPinCount,该方法检索引脚数。
  • 提供用于生成、处理或呈现媒体样本的方法。

多个基类派生自 CBaseFilter,包括 CSourceCBaseRendererCTransformFilter。 使用这些专用类之一实现筛选器通常更容易,而不是直接使用 CBaseFilter

受保护的成员变量 说明
m_State 筛选器的当前状态。
m_pClock 指向筛选器引用时钟的指针。
m_tStart 与流时间 0 对应的引用时间。
m_clsid 类标识符 (筛选器的 CLSID) 。
m_pLock 指向用于序列化状态更改的关键部分的指针。
m_pName 筛选器名称。
m_pGraph 指向筛选器关系图管理器的指针。
m_pSink 指向筛选器关系图管理器上的 IMediaEventSink 接口的指针。
m_PinVersion 此筛选器上的引脚集的当前版本。
公共方法 说明
CBaseFilter 构造函数方法。
~ CBaseFilter 析构函数方法。
StreamTime 检索当前流时间。 虚拟。
IsActive 确定筛选器当前是处于活动状态 (运行还是暂停) 。
IsStopped 确定筛选器当前是否已停止。
NotifyEvent 向筛选器图管理器发送事件通知。
GetFilterGraph 检索指向筛选器图管理器的指针。
ReconnectPin 中断现有引脚连接,并使用指定的媒体类型将其重新连接到同一引脚。
GetPinVersion 检索此筛选器上的一组引脚的版本号。 虚拟。
IncrementPinVersion 递增引脚集上的版本号。
GetSetupData 检索筛选器的注册数据。 虚拟。
纯虚拟方法 说明
GetPinCount 检索引脚数。
GetPin 检索图钉。
IPersist 方法 说明
GetClassID 检索类标识符。
IMediaFilter 方法 说明
GetState 检索筛选器的状态 (运行、停止或暂停) 。
SetSyncSource 设置筛选器的引用时钟。
GetSyncSource 检索筛选器正在使用的引用时钟。
停止 停止筛选器。
暂停 暂停筛选器。
运行 运行筛选器。
IBaseFilter 方法 说明
EnumPins 枚举此筛选器上的引脚。
FindPin 检索具有指定标识符的引脚。
QueryFilterInfo 检索有关筛选器的信息。
JoinFilterGraph 通知筛选器它已联接或离开筛选器图。
QueryVendorInfo 检索包含供应商信息的字符串。
IAMovieSetup 方法 说明
注册 将筛选器添加到注册表。
注销 从注册表中删除筛选器。

要求

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

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