CSource 类

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

csource 类层次结构

CSource 类是用于实现源筛选器的基类。 派生自 CSource 的筛选器包含一个或多个派生自 CSourceStream 类的输出引脚。 每个输出引脚创建一个工作线程,用于将媒体样本推送到下游。

注意

CSource 类旨在支持数据流的推送模型。 不建议将此类用于创建文件读取器筛选器。 文件读取器应通过 IAsyncReader 接口支持拉取模型。 有关详细信息,请参阅筛选器开发人员数据流

受保护的成员变量 说明
m_iPins 筛选器上的引脚数。
m_paStreams 图钉数组。
m_cStateLock 保护筛选器状态的关键节对象。
公共方法 说明
CSource 构造函数方法。
~CSource 析构函数方法。
GetPinCount 检索筛选器上的引脚数。
GetPin 检索图钉。
pStateLock 检索指向筛选器的关键节对象的指针。
AddPin 将新的输出引脚添加到筛选器。
RemovePin 从筛选器中删除指定的引脚。
FindPinNumber 检索筛选器上指定引脚的编号。
IBaseFilter 方法 说明
FindPin 检索具有指定标识符的引脚。

备注

若要实现输出引脚,请执行以下操作:

若要实现筛选器,请执行以下操作:

  • CSource 派生类。
  • 在构造函数中,创建一个或多个派生自 CSourceStream 的输出引脚。 引脚会自动将自身添加到其构造函数方法中的筛选器,并在析构函数方法中删除它们。

若要在多个线程之间同步筛选器状态,请调用 CSource::p StateLock 方法。 此方法返回指向筛选器状态关键部分的指针。 使用 CAutoLock 类保存关键部分。 从固定,可以从固定的 CBasePin::m_pFilter 成员变量访问 pStateLock,如下所示:

CAutoLock lock(m_pFilter->pStateLock());

要求

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

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

另请参阅

编写源筛选器