CBaseStreamControl 类
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
此类实现输入和输出引脚的 IAMStreamControl 接口。 它提供对启动和停止筛选器上单个引脚的控制。 支持 IAMStreamControl 的 引脚应继承自此基类。 下面是输入引脚的典型声明:
class CMyInputPin : public CBaseInputPin, public CBaseStreamControl
请务必重写 NonDelegatingQueryInteface 以公开 IAMStreamControl。 有关详细信息,请参阅 如何实现 IUnknown。
公共方法 | 说明 |
---|---|
CBaseStreamControl | 构造函数方法。 |
~CBaseStreamControl | 析构函数方法。 |
CheckStreamState | 确定是应传递还是应放弃媒体示例。 |
冲洗 | 通知基类引脚已启动或停止刷新。 |
NotifyFilterState | 当筛选器的状态发生更改时,通知引脚。 |
SetFilterGraph | 指定流控制事件的事件接收器。 |
SetSyncSource | 通知当前引用时钟的基类。 |
IAMStreamControl 方法 | 说明 |
GetInfo | 检索有关当前流控制设置的信息,包括开始和停止时间。 |
StartAt | 通知引脚何时开始传送数据。 |
StopAt | 通知引脚何时停止传送数据。 |
备注
此类要求引脚和拥有筛选器在发生各种事件(例如联接图形的筛选器或接收新的引用时钟)时通知类。 应调用以下类方法:
- 在筛选器的 IMediaFilter::SetSyncSource 方法中,调用 CBaseStreamControl::SetSyncSource 方法。 此方法通知当前引用时钟的类。
- 在筛选器的 CBaseFilter::JoinFilterGraph 方法中,调用 CBaseStreamControl::SetFilterGraph 方法。 此方法为类提供指向 Filter Graph Manager 的指针,以便类可以发送正确的流控制事件。
- 每当筛选器将状态 (更改为运行、暂停或停止) 时,请调用 CBaseStreamControl::NotifyFilterState 方法。
- 在引脚的 IPin::BeginFlush 和 IPin::EndFlush 方法中,调用 CBaseStreamControl::Flushing 方法。
类 CBaseStreamControl
使用筛选器图的引用时钟来确定筛选器应提供哪些样本,以及应丢弃哪些样本。 在引脚的 IMemInputPin::Receive 方法中,使用指向传入媒体示例的指针调用 CBaseStreamControl::CheckStreamState 方法。 如果方法STREAM_FLOWING返回值,则向下游传递示例。 否则,请放弃它。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|