イベント通知コード
ここでは、DVD 固有イベント以外の DirectShow イベントについて説明する。DVD に固有のイベントについては、「DVD イベント通知コード」を参照すること。
フィルタは、IMediaEventSink::Notify メソッドを呼び出すことによってフィルタ グラフ マネージャにイベントを渡す。フィルタ グラフ マネージャは、一部のイベントを処理し、それ以外のイベントをアプリケーションのキューに入れる。アプリケーションは、IMediaEvent::GetEvent メソッドを呼び出すことで、イベントを取得する。
以下のセクションでは、イベント コードとイベント パラメータの意味をリストし、イベントに対してフィルタ グラフ マネージャの既定の動作があればそれもリストする。既定の動作をオーバーライドするには、IMediaEvent::CancelDefaultHandling を呼び出す。イベント コードは、ヘッダー ファイルの Evcode.h および Audevcod.h に定義されている。既定の動作が設定されていない場合、フィルタ グラフ マネージャは、イベント キューを使って自動的にイベントをアプリケーションに転送する。
カスタム イベント
フィルタは、EC_USER 以上の範囲でイベント コードを使ってカスタム イベントを定義できる。フィルタ グラフ マネージャはこれらを直接イベント キューに置く。ただし、以下の点に注意すること。
- フィルタ グラフ マネージャは、通常の IMediaEvent::FreeEventParams メソッドを使ってイベント パラメータを解放することはできない。イベント パラメータに関連付けられたメモリまたは参照カウントは、アプリケーションが解放しなければならない。
- フィルタは、イベントを処理するよう準備されたアプリケーション内からイベントを送信するだけである。(アプリケーションは、イベントを送信しても安全であることを示すカスタム プロパティをフィルタ上で設定できる。)
イベント通知コード | 説明 |
EC_ACTIVATE | ビデオ ウィンドウがアクティブまたは非アクティブである。 |
EC_BUFFERING_DATA | グラフがデータをバッファリングしている、またはデータのバッファリングを停止した。 |
EC_BUILT | グラフを作成し終えたときにビデオ コントロールによって送信される。アプリケーションには転送されない。 |
EC_CLOCK_CHANGED | 基準クロックが変更された。 |
EC_CLOCK_UNSET | クロック プロバイダの接続が解除された。 |
EC_CODECAPI_EVENT | エンコーディング イベントを通知するためにエンコーダによって送信される。 |
EC_COMPLETE | 特定のストリームからのすべてのデータをレンダリングし終えた。 |
EC_DEVICE_LOST | プラグ アンド プレイ デバイスが取り外された、または再び使用できるようになった。 |
EC_DISPLAY_CHANGED | ディスプレイ モードが変更された。 |
EC_END_OF_SEGMENT | セグメントの終わりに到達した。 |
EC_ERROR_STILLPLAYING | グラフを実行する非同期コマンドが失敗した。 |
EC_ERRORABORT | エラーのため処理が中止された。 |
EC_EXTDEVICE_MODE_CHANGE | サポートされていない。 |
EC_FULLSCREEN_LOST | ビデオ レンダラがフルスクリーン モードから切り替わろうとしている。 |
EC_GRAPH_CHANGED | フィルタ グラフが変更された。 |
EC_LENGTH_CHANGED | ソースの長さが変更された。 |
EC_NEED_RESTART | フィルタがグラフの再開を要求している。 |
EC_NOTIFY_WINDOW | フィルタにビデオ レンダラのウィンドウを通知する。 |
EC_OLE_EVENT | フィルタがアプリケーションにテキスト文字列を渡している。 |
EC_OPENING_FILE | グラフがファイルを開いている、またはファイルを開き終えた。 |
EC_PALETTE_CHANGED | ビデオ パレットが変更された。 |
EC_PAUSED | ポーズ要求が完了した。 |
EC_QUALITY_CHANGE | 品質コントロールのため、グラフがサンプルを削除した。 |
EC_REPAINT | ビデオ レンダラが再描画を要求している。 |
EC_SEGMENT_STARTED | 新しいセグメントが開始した。 |
EC_SHUTTING_DOWN | フィルタ グラフが破棄前にシャットダウンしている。 |
EC_SNDDEV_IN_ERROR | 入力ピンでオーディオ デバイス エラーが発生した。 |
EC_SNDDEV_OUT_ERROR | 出力ピンでオーディオ デバイス エラーが発生した。 |
EC_STARVATION | フィルタは十分なデータを受け取っていない。 |
EC_STATE_CHANGE | フィルタ グラフが変更された。 |
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_VMR_RENDERDEVICE_SET | VMR がレンダリング メカニズムを選択し終えたときに送信される。 |
EC_VMR_SURFACE_FLIPPED | VMR-7 のアロケータ プレゼンタが、表示するサーフェイスの DirectDraw Flip メソッドを呼び出したときに送信される。 |
EC_VMR_RECONNECTION_FAILED | アップストリーム デコーダから動的フォーマット変更要求を受け入れることができなかった場合に、VMR-7 および VMR-9 によって送信される。 |
EC_WINDOW_DESTROYED | ビデオ レンダラが破棄またはグラフから削除された。 |
EC_WMT_EVENT | アプリケーションが ASF Reader フィルタを使用して、DRM (digital rights management) によって保護されている ASF ファイルを再生する場合に、Windows Media Format SDK によって送信される。 |
EC_WMT_INDEX_EVENT | アプリケーションが ASF Writer を使用して、Windows Media Video ファイルにインデックスを付ける場合に、Windows Media Format SDK によって送信される。 |
参照