共用方式為


事件通知碼

[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、imfMediaEngine 取代,並在媒體基金會 音訊/視訊擷取。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayerIMFMediaEngine 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

本節列出不是 DVD 專屬的 DirectShow 事件。 如需 DVD 特有的事件,請參閱 DVD 事件通知碼

篩選會呼叫 IMediaEventSink::Notify 方法,將事件傳送至 Filter Graph 管理員。 Filter Graph Manager 會處理某些事件,並排入應用程式的其他事件佇列。 應用程式會藉由呼叫 IMediaEvent::GetEvent 方法來擷取它們。

在後續各節中,每個項目都會列出事件程序代碼、事件參數的意義,以及如果有任何事件,則為 Filter Graph Manager 的預設動作。 若要覆寫默認動作,請呼叫 IMediaEvent::CancelDefaultHandling。 事件代碼定義於頭檔 Evcode.h 和 Audevcod.h 中。 如果沒有默認動作,Filter Graph 管理員會自動將事件轉送至應用程式(透過事件佇列)。

自定義事件

篩選條件可以使用範圍中的事件碼來定義自定義事件,EC_USER和更新版本。 Filter Graph 管理員會將這些專案直接放在事件佇列中。 不過,適用下列注意事項:

  • Filter Graph Manager 無法使用一般 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 無法接受上游譯碼器的動態格式變更要求時,由 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 中的 事件通知