IMediaControl::Run メソッド (control.h)
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
メソッドは Run
、フィルター グラフ内のすべてのフィルターを実行します。 グラフの実行中、データはグラフ内を移動し、レンダリングされます。
構文
HRESULT Run();
戻り値
HRESULT 値を返します。 使用可能な値は次のとおりです。
リターン コード | 説明 |
---|---|
|
グラフは実行の準備をしていますが、一部のフィルターでは実行中の状態への移行が完了していません。 |
|
グラフ内のすべてのフィルターは、実行中の状態への移行を完了しました。 |
解説
フィルター グラフが停止している場合、このメソッドは実行する前にグラフを一時停止します。 グラフが既に実行されている場合、メソッドはS_OKを返しますが、効果はありません。
このグラフは、アプリケーションが IMediaControl::P ause メソッドまたは IMediaControl::Stop メソッドを呼び出すまで実行されます。 再生がストリームの末尾に達すると、グラフは引き続き実行されますが、フィルターはそれ以上データをストリーミングしません。 その時点で、アプリケーションはグラフを一時停止または停止できます。 ストリームの終了イベントの詳細については、「 IMediaControl::P ause and EC_COMPLETE」を参照してください。
このメソッドは、ストリームの先頭をシークしません。 そのため、グラフを実行して一時停止してから、もう一度実行すると、一時停止した位置から再生が再開されます。 ストリームの末尾に達した後にグラフを実行すると、何もレンダリングされません。 グラフをシークするには、 IMediaSeeking インターフェイスを 使用します。
メソッドが S_FALSEを返す場合は、すべてのフィルターが実行中の状態に切り替わる前にメソッドが返されることを意味します。 フィルターは、 メソッドが戻った後に遷移を完了します。 必要に応じて、タイムアウト値を指定して IMediaControl::GetState メソッドを呼び出すことで、移行が完了するまで待機できます。 ただし、これは必須ではありません。
Run メソッドがエラー コードを返す場合は、1 つ以上のフィルターの実行に失敗したことを意味します。 ただし、一部のフィルターは実行中の状態である可能性があります。 マルチストリーム グラフでは、ストリーム全体が正常に再生されている可能性があります。 通常、アプリケーションはグラフを破棄し、この場合はエラーを報告します。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | control.h (Dshow.h を含む) |
Library | Strmiids.lib |