CBaseFilter 类
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
类 CBaseFilter
是用于实现筛选器的抽象类。 若要使用此类实现筛选器,必须至少执行以下步骤:
- 从
CBaseFilter
派生新类。 - 包括定义筛选器上的引脚的成员变量。 引脚必须继承自 CBasePin 类。
- 重写纯虚拟方法 CBaseFilter::GetPin,该方法检索筛选器上的引脚。
- 重写纯虚拟方法 CBaseFilter::GetPinCount,该方法检索引脚数。
- 提供用于生成、处理或呈现媒体样本的方法。
多个基类派生自 CBaseFilter
,包括 CSource、 CBaseRenderer 和 CTransformFilter。 使用这些专用类之一实现筛选器通常更容易,而不是直接使用 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 方法 | 说明 |
注册 | 将筛选器添加到注册表。 |
注销 | 从注册表中删除筛选器。 |
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|