IMediaControl::Run

Run メソッドは、フィルタ グラフのフィルタをすべて実行する。グラフが実行中、データはグラフを通って移動し、レンダリングされる。

構文

  HRESULT Run(void);

戻り値

HRESULT 値を返す。可能な値は次のとおりである。

説明
S_FALSE グラフは実行の準備をしているが、実行状態への移行が完了していないフィルタがある。
S_OK グラフのフィルタがすべて実行状態への移行を完了した。

注意

フィルタ グラフが停止すると、このメソッドはグラフをポーズしてから実行する。グラフが実行中の場合は S_OK が返されるが、何も起こらない。

グラフは、アプリケーションが IMediaControl::Pause メソッドまたは IMediaControl::Stop メソッドを呼び出すまで実行される。再生がストリームの終わりに達したとき、フィルタはそれ以上データをストリームしないが、グラフは実行中のままである。そのとき、アプリケーションはグラフを停止あるいはポーズにできる。エンドオブストリーム (EOS) イベントの詳細については、「IMediaControl::Pause」と「EC_COMPLETE」を参照すること。

このメソッドはストリームの初めまでシークしない。したがって、グラフを実行し、そのグラフをポーズして、次に再度そのグラフを実行すると、ポーズ位置から再生される。ストリームの終わりに達した後でグラフを実行しても、何もレンダリングされない。グラフをシークするには、IMediaSeeking インターフェイスを使うこと。

このメソッドが S_FALSE を返す場合は、IMediaControl::GetState メソッドを呼び出して、状態の移行が完了するまで待機できる。メソッドが失敗した場合、グラフの一部のフィルタは実行状態に切り替えられている可能性がある。マルチストリーム グラフでは、ストリーム全体が正しく再生されている可能性がある。グラフを停止するかどうかはアプリケーション側で判断しなければならない。

参照