CBaseOutputPin 类

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

cbaseoutputpin 类层次结构

CBaseOutputPin 是实现输出引脚的抽象基类。

此类派生自 CBasePin。 它与 CBasePin 在以下方面不同:

  • 它仅连接到支持 IMemInputPin 接口的输入引脚。
  • 它支持通过 IMemAllocator 接口进行本地内存传输。
  • 它拒绝流结束、刷新和新段通知。 (这些不应发送到输出引脚。)
  • 它提供用于向下游传递示例的方法。

当引脚连接时,它会从输入引脚请求内存分配器。 否则,它将创建一个新的分配器对象。 输出引脚负责设置分配器属性。 它通过纯虚拟方法 CBaseOutputPin::D ecideBufferSize 执行此操作。 在派生类中重写此方法。 如果输入引脚有任何缓冲区要求,则会将它们传递给 DecideBufferSize 方法。

调用 CBaseOutputPin::GetDeliveryBuffer 方法以获取空媒体示例。 调用 CBaseOutputPin::D eliver 方法将示例传送到下游。

派生类必须重写纯虚拟 CBasePin::CheckMediaType 方法,以在引脚连接期间验证媒体类型。

受保护的成员变量 说明
m_pAllocator 指向内存分配器的指针。
m_pInputPin 指向连接到此引脚的输入引脚的指针。
公共方法 说明
CBaseOutputPin 构造函数方法。
CompleteConnect 完成与输入引脚的连接。 虚拟。
DecideAllocator 选择内存分配器。 虚拟。
GetDeliveryBuffer 检索包含空缓冲区的媒体示例。 虚拟。
传送 将媒体样本传送到连接的输入引脚。 虚拟。
InitAllocator 创建内存分配器。 虚拟。
CheckConnect 确定引脚连接是否合适。
BreakConnect 从连接中释放引脚。
活动 通知引脚筛选器现在处于活动状态。
非活动 通知引脚筛选器不再处于活动状态。
DeliverEndOfStream 向连接的输入引脚传送流结束通知。虚拟。
DeliverBeginFlush 请求连接的输入引脚开始刷新操作。 虚拟。
DeliverEndFlush 请求连接的输入引脚以结束刷新操作。 虚拟。
DeliverNewSegment 将新段通知传送到连接的输入引脚。 虚拟。
纯虚拟方法 说明
DecideBufferSize 设置缓冲区要求。
IPin 方法 说明
BeginFlush 开始刷新操作。
EndFlush 结束刷新操作。
EndOfStream 通知引脚不需要其他数据。

要求

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

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