イベント通知コード

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

このセクションでは、DVD に固有ではない DirectShow イベントの一覧を示します。 DVD に固有のイベントについては、「 DVD イベント通知コード」を参照してください。

フィルターは 、IMediaEventSink::Notify メソッドを呼び出して、Filter Graph Manager にイベントを送信します。 Filter Graph Manager は、アプリケーションに対して一部のイベントとキューを処理します。 アプリケーションは 、IMediaEvent::GetEvent メソッドを呼び出して取得します。

以下のセクションでは、各エントリにイベント コード、イベント パラメーターの意味、イベントに対する Filter Graph Manager の既定のアクション (存在する場合) が一覧表示されます。 既定のアクションをオーバーライドするには、 IMediaEvent::CancelDefaultHandling を呼び出します。 イベント コードは、ヘッダー ファイル Evcode.h と Audevcod.h で定義されています。 既定のアクションがない場合、Filter Graph Manager はイベントを (イベント キューを介して) アプリケーションに自動的に転送します。

[カスタム イベント]

フィルターでは、EC_USER以上の範囲のイベント コードを使用してカスタム イベントを定義できます。 フィルター グラフ マネージャーは、これらをイベント キューに直接配置します。 ただし、次の注意事項が適用されます。

  • 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 2 つの任意の状態文字列が含まれます。
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 デジタル著作権管理 (DRM) によって保護された ASF ファイルを読み取ると、WM ASF リーダー フィルターによって送信されます。
EC_WMT_INDEX_EVENT アプリケーションが WM ASF ライターを使用して Windows Media Video ファイルのインデックスを作成するときに送信されます。

 

定数と GUID

DirectShow でのイベント通知