CPullPin 类
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
类 CPullPin
支持通过 IAsyncReader 接口拉取数据的输入引脚。 如果要实现使用拉取模型从上游筛选器请求数据的筛选器,请使用此类。 有关详细信息,请参阅筛选器图和拉取模型中的数据流。
此类不派生自 CBasePin 或实现 IPin 接口,并且某些方法名称与 IPin 冲突,因此最好将其用作固定中的帮助程序对象。 若要使用此类,请执行以下操作:
- 从
CPullPin
派生帮助程序类,并从 CBasePin 派生输入引脚类。 将 对象的实例CPullPin
声明为固定类的成员变量。 - 重写 CBasePin::CheckConnect 方法以调用 CPullPin::Connect。 此方法查询 IAsyncReader 的另一个引脚。
- 重写 CBasePin::BreakConnect 方法以调用 CPullPin::D isconnect。
- 重写 CBasePin::Active 方法以调用 CPullPin::Active。 此方法启动一个从上游筛选器中提取样本的工作线程。 当引脚连接时,可以指定是希望工作线程发出异步读取请求还是同步读取请求。
- 重写 CBasePin::Inactive 方法以调用 CPullPin::Inactive。 此方法关闭工作线程。
- 实现纯虚拟 CPullPin::Receive 方法,以处理传入的示例并将其传送到下游。
- 若要设置停止和启动位置,或者要查找流,请调用 CPullPin::Seek 方法。 此方法暂停工作线程并刷新筛选器图。
- 实现纯虚拟 CPullPin::EndOfStream、 CPullPin::BeginFlush 和 CPullPin::EndFlush 方法,如这些方法的注释中所述。
- 实现纯虚拟 CPullPin::OnError 方法来处理流式处理错误。
公共成员变量 | 说明 |
---|---|
m_pAlloc | 指向内存分配 器的 IMemAllocator 接口的指针。 |
公共方法 | 说明 |
活动 | 创建从输出引脚拉取数据的工作线程。 |
AlignDown | 将值截断到指定的对齐边界。 |
AlignUp | 将值向上舍入到指定的对齐边界。 |
连接 | 完成与输出引脚的连接。 |
CPullPin | 构造函数方法。 |
~CPullPin | 析构函数方法。 虚拟。 |
DecideAllocator | 与输出引脚协商分配器。 虚拟。 |
断开连接 | 使用输出引脚对连接进行啃。 |
Duration | 检索流的持续时间。 |
GetReader | 返回指向输出引脚的 IAsyncReader 接口的指针。 |
非活动 | 关闭从输出引脚拉取数据的工作线程。 |
Seek | 设置流的开始和停止位置。 |
纯虚拟方法 | 说明 |
BeginFlush | 通知拥有筛选器刷新下游筛选器。 |
EndFlush | 通知拥有筛选器结束刷新操作。 |
EndOfStream | 在 对象提供最后一个示例之后调用。 |
OnError | 如果流式处理期间发生错误,则调用 。 |
接收 | 当对象从输出引脚接收媒体样本时调用。 |
要求 | 值 |
---|---|
标头 |
|
库 |
|