CAMSchedule 类

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

CAMSchedule 实现引用时钟的计划程序。

公共方法 说明
CAMSchedule 构造函数方法。
~CAMSchedule 析构函数方法。 虚拟。
GetAdviseCount 检索挂起的建议请求数。
GetNextAdviseTime 检索下一个建议请求的时间。
AddAdvisePacket 将建议请求添加到挂起的请求列表中。
取消添加 删除建议请求。
建议 调度计划于指定时间或更早时间的所有请求。
GetEvent 检索事件句柄,该句柄用于指示下一个建议时间的更改。

备注

此帮助程序对象维护参考时钟的建议请求列表。 CBaseReferenceClock 类使用它来帮助计划建议请求。 时钟按以下方式使用此对象:

  1. 时钟创建一个工作线程来处理计划。
  2. 工作线程调用 CAMSchedule::GetEvent 方法以从计划程序检索事件句柄。 它等待此事件,最初有无限超时。
  3. 为了计划新的建议请求,时钟调用 CAMSchedule::AddAdvisePacket 方法。 建议请求可以是一次性请求,也可以是定期请求。 计划程序按时间顺序保留请求列表。
  4. 如果将请求添加到列表的前面,计划程序会发出事件信号。 (列表一开始为空,因此保证第一个请求发出 event.)
  5. 发出事件信号时,工作线程将调用 CAMSchedule::Advise 方法,指定当前引用时间。 如果任何挂起的请求已过期,计划程序会调度它们。
  6. Advise 方法返回下一个请求的时间。 工作线程使用此值来计算新的超时值。
  7. 步骤 2 6 无限期重复。
  8. 为了终止工作线程,时钟设置内部标志并发出事件信号。

在步骤 2 中,向事件发出信号,或等待超时。如果事件已发出信号,则表示新请求已添加到列表的前面。 工作线程必须计算新的超时值。 另一方面,如果等待超时,则意味着建议请求已到期,必须进行调度。 步骤 5 中对建议的调用将处理这两种情况。

要求

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

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