事件通知碼
[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、imfMediaEngine 取代,並在媒體基金會 音訊/視訊擷取。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 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 媒體視訊檔案索引時傳送。 |
相關主題