イベント通知コード
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/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 ファイルのインデックスを作成するときに送信されます。 |
関連トピック