事件通知代码

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

本部分列出了不特定于 DVD 的 DirectShow 事件。 有关特定于 DVD 的事件,请参阅 DVD 事件通知代码

筛选器通过调用 IMediaEventSink::Notify 方法将事件发送到 Filter Graph 管理器。 Filter Graph 管理器处理某些事件,并为应用程序处理其他事件和队列。 应用程序通过调用 IMediaEvent::GetEvent 方法来检索它们。

在后面的部分中,每个条目都会列出事件代码、事件参数的含义以及 Filter Graph 管理器的事件的默认作(如果有)。 若要替代默认作,请调用 IMediaEvent::CancelDefaultHandling。 事件代码在头文件 Evcode.h 和 Audevcod.h 中定义。 如果没有默认作,Filter Graph 管理器会自动将事件转发到应用程序(通过事件队列)。

自定义事件

筛选器可以使用范围EC_USER及更高范围内的事件代码定义自定义事件。 Filter Graph 管理器会将这些内容直接放置在事件队列中。 但是,以下注意事项适用:

  • Filter Graph 管理器无法使用普通 IMediaEvent::FreeEventParams 方法释放事件参数。 应用程序必须释放与事件参数关联的任何内存或引用计数。
  • 筛选器应仅从准备处理事件的应用程序中发送事件。 (应用程序可能在筛选器上设置自定义属性,以指示发送事件是安全的。
事件通知代码 描述
EC_ACTIVATE 正在激活或停用视频窗口。
EC_BANDWIDTHCHANGE 不支持。
EC_BUFFERING_DATA 图形正在缓冲数据,或已停止缓冲数据。
EC_BUILT 生成图形后,视频控件发送。 未转发到应用程序。
EC_CLOCK_CHANGED 引用时钟已更改。
EC_CLOCK_UNSET 时钟提供程序已断开连接。
EC_CODECAPI_EVENT 编码器发送用于向编码事件发出信号。
EC_COMPLETE 已呈现来自特定流的所有数据。
EC_CONTENTPROPERTY_CHANGED 不支持。
EC_DEVICE_LOST 即插即用设备已删除或已再次可用。
EC_DISPLAY_CHANGED 显示模式已更改。
EC_END_OF_SEGMENT 已到达段的末尾。
EC_EOS_SOON 不支持。
EC_ERROR_STILLPLAYING 运行图形的异步命令失败。
EC_ERRORABORT 由于错误,作已中止。
EC_ERRORABORTEX 由于错误,作已中止。
EC_EXTDEVICE_MODE_CHANGE 不支持。
EC_FILE_CLOSED 由于意外事件,源文件已关闭。
EC_FULLSCREEN_LOST 视频呈现器正在退出全屏模式。
EC_GRAPH_CHANGED 筛选器图已更改。
EC_LENGTH_CHANGED 源的长度已更改。
EC_LOADSTATUS 在打开网络文件时通知进度应用程序。
EC_MARKER_HIT 不支持。
EC_NEED_RESTART 筛选器请求重启图形。
EC_NEW_PIN 不支持。
EC_NOTIFY_WINDOW 通知视频呈现器的窗口筛选器。
EC_OLE_EVENT 筛选器正在将文本字符串传递给应用程序。
EC_OPENING_FILE 图形正在打开文件,或已完成打开文件。
EC_PALETTE_CHANGED 视频面板已更改。
EC_PAUSED 暂停请求已完成。
EC_PLEASE_REOPEN 源文件已更改。
EC_PREPROCESS_COMPLETE WM ASF 编写器 筛选器完成多通道编码的预处理时发送。
EC_PROCESSING_LATENCY 指示组件处理每个样本所需的时间。
EC_QUALITY_CHANGE 图形正在删除样本,以便进行质量控制。
EC_RENDER_FINISHED 不支持。
EC_REPAINT 视频呈现器需要重新绘制。
EC_SAMPLE_LATENCY 指定组件在计划中处理示例的落后程度。
EC_SAMPLE_NEEDED 从增强视频呈现器(EVR)筛选器请求新的输入示例。
EC_SCRUB_TIME 指定最新帧步骤的时间戳。
EC_SEGMENT_STARTED 新段已开始。
EC_SHUTTING_DOWN 筛选器图在被销毁之前正在关闭。
EC_SNDDEV_IN_ERROR 音频捕获筛选器中发生了设备错误。
EC_SNDDEV_OUT_ERROR 音频呈现器筛选器中发生了设备错误。
EC_STARVATION 筛选器未收到足够的数据。
EC_STATE_CHANGE 筛选器图已更改状态。
EC_STATUS 包含两个任意状态字符串。
EC_STEP_COMPLETE 执行帧步进的筛选器已增加指定的帧数。
EC_STREAM_CONTROL_STARTED 流控制启动命令已生效。
EC_STREAM_CONTROL_STOPPED 流控制停止命令已生效。
EC_STREAM_ERROR_STILLPLAYING 流中发生了错误。 流仍在播放。
EC_STREAM_ERROR_STOPPED 由于错误,流已停止。
EC_TIMECODE_AVAILABLE 不支持。
EC_UNBUILT 当图形被拆毁时,视频控件发送。 未转发到应用程序。
EC_USERABORT 用户已终止播放。
EC_VIDEO_SIZE_CHANGED 本机视频大小已更改。
EC_VIDEOFRAMEREADY 视频帧已准备好显示。
EC_VMR_RECONNECTION_FAILED VMR-7 和 VMR-9 在无法接受来自上游解码器的动态格式更改请求时发送。
EC_VMR_RENDERDEVICE_SET 当 VMR 已选择其呈现机制时发送。
EC_VMR_SURFACE_FLIPPED 当 VMR-7 的分配器演示者在显示的图面上调用 DirectDraw Flip 方法时发送。
EC_WINDOW_DESTROYED 视频呈现器已从图形中销毁或删除。
EC_WMT_EVENT WM ASF 读取器筛选器读取受数字权限管理(DRM)保护的 ASF 文件时发送。
EC_WMT_INDEX_EVENT 当应用程序使用 WM ASF 编写器为 Windows 媒体视频文件编制索引时发送。

 

常量和 GUID

DirectShow 中的 事件通知