CBaseOutputPin 类
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
类 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 | 通知引脚不需要其他数据。 |
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|