ISampleGrabber::SetOneShot 方法

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

注意

[已弃用。 此 API 可能会从 Windows 的未来版本中删除。]

 

SetOneShot 方法指定 Sample Grabber 筛选器在筛选器收到样本后是否停止。

语法

HRESULT SetOneShot(
   BOOL OneShot
);

参数

OneShot

一个布尔值,指定样本抓取器筛选器在收到样本后是否停止。

含义
true
样本抓取器在第一个样本后停止。
false
第一个采样后,Sample Grabber 继续处理样本。 这是默认行为。

 

返回值

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

备注

使用此方法从流中获取单个示例,如下所示:

  1. 使用值 TRUE 调用 SetOneShot
  2. (可选)使用 IMediaSeeking 接口查找流中的位置。
  3. 调用 IMediaControl::Run 以运行筛选器图。
  4. 调用 IMediaEvent::WaitForCompletion 以等待图形停止。 或者,调用 IMediaEvent::GetEvent 以获取图形事件,直到收到 EC_COMPLETE 事件。

样本抓取器停止后,筛选器图仍处于运行状态。 可以查找或暂停图形以获取另一个样本。

注意

文档的早期版本指出,筛选器图在收到示例后停止。 这是不准确的。 流结束,但图形仍处于运行状态。

 

示例抓取器通过在下游筛选器上调用 IPin::EndOfStream 并从它的 IMemInputPin::Receive 方法返回S_FALSE来实现一次性模式。

注意

头文件 Qedit.h 与版本 7 之后的 Direct3D 标头不兼容。

 

注意

若要获取 Qedit.h,请下载适用于 Windows Vista 和 .NET Framework 3.0 的Microsoft Windows SDK更新。 Qedit.h 在 Windows 7 和 .NET Framework 3.5 Service Pack 1 的Microsoft Windows SDK中不可用。

 

要求

要求
标头
Qedit.h

Strmiids.lib

另请参阅

使用示例抓取器

ISampleGrabber 接口