?
Microsoft DirectX 8.0

IRenderEngine インターフェイス

タイムラインからフィルタ グラフを構築することにより、Microsoft® DirectShow® 編集サービス (DES) プロジェクトをレンダリングする。

DES は、このインターフェイスを実装する 2 つのコンポーネントを提供している。

スマート レンダリング エンジンは、ISmartRenderEngine インターフェイスもサポートしている。

アプリケーションでフィルタ グラフを作成してレンダリング エンジンに渡すことはできるが、通常の状況では、レンダリング エンジンにフィルタ グラフを作成させる。グラフの作成は、2 段階の処理で行われる。まず、ConnectFrontEnd メソッドを呼び出してフロント エンドを構築する。次に、フロント エンドの出力ピンを目的のレンダリング フィルタに接続する。

詳細については、「プロジェクトのレンダリング」を参照すること。

要件

Qedit.h が必要である。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterfaceサポートされているインターフェイスへのポインタを取得する。
AddRef参照カウントをインクリメントする。
Release参照カウントをデクリメントする。
IRenderEngine メソッド説明
SetTimelineObject使用するレンダリング エンジン用のタイムラインを設定する。
GetTimelineObjectレンダリング エンジンが現在使用しているタイムラインを取得する。
GetFilterGraphレンダリング エンジンが構築したフィルタ グラフ (ある場合) を取得する。
SetFilterGraph使用するレンダリング エンジン用のフィルタ グラフを指定する。
SetInterestRangeサポートされていない。
SetInterestRange2サポートされていない。
SetRenderRangeタイムライン上の、レンダリングされる時間の範囲を設定する。
SetRenderRange2SetRenderRange と同じ機能だが、double 型のパラメータをとる。
GetGroupOutputPin指定されたグループの出力ピンを取得する。
ScrapItレンダリング エンジンのフィルタ グラフおよび関連付けられているすべてのオブジェクトを破棄する。
RenderOutputPinsフィルタ グラフのプレビュー部分を作成する。
GetVendorStringベンダー文字列を取得する。
ConnectFrontEnd現在のタイムラインからフィルタ グラフのフロント エンドを構築する。
SetSourceConnectCallbackサポートされていない。
SetDynamicReconnectLevelレンダリング時の動的再接続のレベルを設定する。
DoSmartRecompressionサポートされていない。
UseInSmartRecompressionGraphサポートされていない。
SetSourceNameValidationレンダリング エンジンがファイル名を検証する方法を指定する。
Commit実装されていない。
Decommit実装されていない。
GetCaps実装されていない。

IRenderEngine::Commit

IRenderEngine インターフェイス

実装されていない。

構文

HRESULT Commit( void );

IRenderEngine::ConnectFrontEnd

IRenderEngine インターフェイス

現在のタイムラインからフィルタ グラフのフロント エンドを構築する。

構文

HRESULT ConnectFrontEnd( void );

戻り値

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

S_OK成功。
S_WARN_OUTPUTRESETフラフのレンダリング部分は削除された。
E_INVALIDARGこのレンダリング エンジンにはタイムラインは設定されていない。
E_MUST_INIT_RENDERERレンダリング エンジンが初期化に失敗した。
E_RENDER_ENGINE_IS_BROKENプロジェクトが正しくレンダリングされなかったため、処理に失敗。
E_UNEXPECTED予期しないエラー。
VFW_E_INVALIDMEDIATYPE無効なメディア タイプ。

注意

このメソッドは、フィルタ グラフのレンダリング部分を構築しない。アプリケーションでは、フロント エンドの出力ピンを目的のレンダリング フィルタに接続しなければならない。

基本レンダリング エンジンを使っている場合、フロント エンド上の出力ピンは非圧縮データを生成する。スマート レンダリング エンジンを使っている場合、出力ピンは圧縮データを出力する。

フィルタ グラフを構築した後でタイムラインを変更した場合は、ConnectFrontEnd をもう一度呼び出してフロント エンドを再構築しなければならない。このメソッドは、可能であればグラフのレンダリング部分を維持する。しかし、グループを追加または削除した場合、またはグループの順序を変更した場合は、ConnectFrontEnd はレンダリング部分を削除するため、アプリケーションはレンダリング部分を再構築しなければならない。レンダリング部分を削除した場合、このメソッドは S_WARN_OUTPUTRESET を返す。

IRenderEngine::Decommit

IRenderEngine インターフェイス

実装されていない。

構文

HRESULT Decommit( void );

IRenderEngine::DoSmartRecompression

IRenderEngine インターフェイス

サポートされていない。

構文

HRESULT DoSmartRecompression( void );

IRenderEngine::GetCaps

IRenderEngine インターフェイス

実装されていない。

構文

HRESULT GetCaps(
    long Index,
    long *pReturn
);

IRenderEngine::GetFilterGraph

IRenderEngine インターフェイス

レンダリング エンジンが構築したフィルタ グラフ (ある場合) を取得する。

構文

HRESULT GetFilterGraph(
    IGraphBuilder **ppFG
);

パラメータ

ppFG
[out] フィルタ グラフの IGraphBuilder インターフェイスを受け取るポインタのアドレス。フィルタ グラフがない場合は、値 NULL を受け取る。

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_MUST_INIT_RENDERERレンダリング エンジンが初期化に失敗した。
E_POINTER無効なポインタ。

注意

復帰時に *ppFG の値が NULL 以外の場合、IGraphBuilder インターフェイスは未処理のカウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。

IRenderEngine::GetGroupOutputPin

IRenderEngine インターフェイス

指定されたグループの出力ピンを取得する。

構文

HRESULT GetGroupOutputPin(
    long Group,
    IPin **ppRenderPin
);

パラメータ

Group
グループを指定する、ゼロから始まるインデックス。
ppRenderPin
[out] 出力ピンの IPin インターフェイスを受け取るポインタのアドレス。

戻り値

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

S_FALSEグループは出力ピンを持っていない。
S_OK成功。
E_INVALIDARG無効な引数。
E_MUST_INIT_RENDERERレンダリング エンジンが初期化に失敗した。
E_POINTER無効なポインタ。
E_RENDER_ENGINE_IS_BROKENプロジェクトが正しくレンダリングされなかったため、処理に失敗。
E_UNEXPECTED予期しないエラー。

注意

このメソッドを呼び出す前に、ConnectFrontEnd を呼び出してグラフのフロント エンドを構築する。各グループは単一のメディア ストリームを表し、フロント エンドには対応する出力ピンがある。

このメソッドを使用して、ファイル書き込みグラフのレンダリング部分を作成できる。出力ピンをマルチプレクサおよびファイル ライタ フィルタに接続する。詳細については、「プロジェクトのレンダリング」を参照すること。

プレビューの場合は、このメソッドを呼び出す必要はない。単純に、ConnectFrontEnd の後に RenderOutputPins を呼び出せばよい。

メソッドが S_OK を返した場合、返される IPin インターフェイスは未処理の参照カウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。

IRenderEngine::GetTimelineObject

IRenderEngine インターフェイス

レンダリング エンジンが現在使用しているタイムラインを取得する。

構文

HRESULT GetTimelineObject(
    IAMTimeline **ppTimeline
);

パラメータ

ppTimeline
[out] タイムラインの IAMTimeline インターフェイスを受け取るポインタのアドレス。タイムラインがない場合は、値 NULL を受け取る。

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_POINTER無効なポインタ。
E_MUST_INIT_RENDERERレンダリング エンジンが初期化に失敗した。

注意

復帰時に *ppTimeline の値が NULL 以外の場合、IAMTimeline インターフェイスは未処理のカウントを持つ。使い終わった場合は、インターフェイスを必ず解放すること。

IRenderEngine::GetVendorString

IRenderEngine インターフェイス

ベンダー文字列を取得する。

構文

HRESULT GetVendorString(
    BSTR *pVendorID
);

パラメータ

pVendorID
[out, retval] ベンダー文字列を持つ BSTR を受け取る変数へのポインタ。

戻り値

成功した場合、メソッドは S_OK を返す。それ以外の場合は、エラーの発生を示す HRESULT 値を返す。

注意

このメソッドは、文字列に必要なメモリを割り当てる。アプリケーションは SysFreeString を呼び出して、メモリを解放しなければならない。

IRenderEngine::RenderOutputPins

IRenderEngine インターフェイス

フィルタ グラフのプレビュー部分を作成する。

構文

HRESULT RenderOutputPins( void );

戻り値

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

S_OK成功。
VFW_S_AUDIO_NOT_RENDEREDオーディオ ストリームを再生できない。
E_INVALIDARG無効な引数。
E_RENDER_ENGINE_IS_BROKEN プロジェクトが正しくレンダリングされなかったため、処理に失敗。
E_UNEXPECTED予期しないエラー。

注意

このメソッドを呼び出す前に、ConnectFrontEnd を呼び出してグラフのフロント エンドを構築する。プレビュー以外の処理を行う場合は、このメソッドを呼び出してはならない。代わりに、GetGroupOutputPin を呼び出して出力ピンへのポインタを取得する。

ユーザーのコンピュータにサウンド カードがない場合、このメソッドは VFW_S_AUDIO_NOT_RENDERED を返す。この場合にはオーディオのプレビューは行われないが、ビデオ プレビューには影響はない。

ピンがビデオ グループからのものである場合、このメソッドはメッセージをディスパッチしなければならない、たとえばウィンドウを動かすには、ウィンドウのクライアント エリアのマウス クリックに対応しなければならない。

IRenderEngine::ScrapIt

IRenderEngine インターフェイス

レンダリング エンジンのフィルタ グラフおよび関連付けられているすべてのオブジェクトを破棄する。

構文

HRESULT ScrapIt( void );

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_MUST_INIT_RENDERERレンダリング エンジンが初期化に失敗した。

IRenderEngine::SetDynamicReconnectLevel

IRenderEngine インターフェイス

レンダリング時の動的再接続のレベルを設定する。

構文

HRESULT SetDynamicReconnectLevel(
    DWORD Level
);

パラメータ

Level
動的再接続フラグの組み合わせ。動的再接続のレベルを指定する。

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_NOTIMPL実装されていない。

注意

デフォルトでは、基本レンダリング エンジンはプロジェクトをレンダリングする前にすべてのソースをロードする。このため、起動時間が長くなることがある。動的再接続を使用した場合、ソースは必要なときにのみロードされる。これによって起動時間は短くなるが、スムースな再生が妨げられることがある。一般的には、プロジェクトで使用するソース クリップが多くなるに従い、動的再接続を使用するメリットが大きくなる。

スマート レンダリング エンジンは、このメソッドを実装していない。

IRenderEngine::SetFilterGraph

IRenderEngine インターフェイス

使用するレンダリング エンジン用のフィルタ グラフを指定する。

構文

HRESULT SetFilterGraph(
    IGraphBuilder *pFG
);

パラメータ

pFG
フィルタ グラフの IGraphBuilder インターフェイスへのポインタ。

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_INVALIDARG無効な引数。
E_MUST_INIT_RENDERERレンダリング エンジンが初期化に失敗した。

注意

ほとんどのアプリケーションではこのメソッドを呼び出す必要はない。より一般的な方法は、ConnectFrontEnd メソッドを呼び出すことにより、レンダリング エンジンにグラフを構築させることである。

レンダリング エンジンに既にフィルタ グラフがある場合、このメソッドは失敗する。

レンダリング エンジンが作成したフィルタ グラフへのポインタを取得し、それをパラメータとして別のレンダリング エンジンでこのメソッドを呼び出してはならない。それを行うと、予期できない結果を引き起こすことになる。

IRenderEngine::SetInterestRange

IRenderEngine インターフェイス

サポートされていない。

構文

HRESULT SetInterestRange(
    REFERENCE_TIME Start,
    REFERENCE_TIME Stop
);

IRenderEngine::SetInterestRange2

IRenderEngine インターフェイス

サポートされていない。

構文

HRESULT SetInterestRange2(
    double Start,
    double Stop
);

IRenderEngine::SetRenderRange

IRenderEngine インターフェイス

タイムライン上の、レンダリングされる時間の範囲を設定する。指定された範囲の外にあるオブジェクトはレンダリングされず、それらに対してリソースは割り当てられない。

構文

HRESULT SetRenderRange(
    REFERENCE_TIME Start,
    REFERENCE_TIME Stop
);

パラメータ

Start
開始タイム (100 ナノ秒単位)。
Stop
終了タイム (100 ナノ秒単位)。

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_MUST_INIT_RENDERERレンダリング エンジンが初期化に失敗した。

IRenderEngine::SetRenderRange2

IRenderEngine インターフェイス

タイムライン上の、レンダリングされる時間の範囲を設定する。このメソッドは SetRenderRange と同じ機能だが、double 型のパラメータをとる。

構文

HRESULT SetRenderRange2(
    double Start,
    double Stop
);

パラメータ

Start
開始タイム (秒単位)。
Stop
終了タイム (秒単位)。

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_MUST_INIT_RENDERERレンダリング エンジンが初期化に失敗した。

IRenderEngine::SetSourceConnectCallback

IRenderEngine インターフェイス

サポートされていない。

構文

HRESULT SetSourceConnectCallback(
    IGrfCache *pCallback
);

IRenderEngine::SetSourceNameValidation

IRenderEngine インターフェイス

レンダリング エンジンがファイル名を検証する方法を指定する。

構文

HRESULT SetSourceNameValidation(
    BSTR FilterString,
    IMediaLocator *pOverride,
    LONG Flags
);

パラメータ

FilterString
Microsoft® Win32® の OPENFILENAME 構造体の lpstrFilter メンバで必要な書式に設定されたフィルタ文字列のペアを含む BSTR 値。メディア ロケータは、エンド ユーザーに [開く] ダイアログ ボックスを表示する場合に、このフィルタを使用する。
pOverride
デフォルトの代わりに使用するメディア ロケータの IMediaLocator インターフェイスへのオプションのポインタ。デフォルトのメディア ロケータを使用する場合は、このパラメータを NULL に設定する。詳細については、「注意」を参照すること。
Flags
メディア ロケータの動作を指定するフラグのビットごとの組み合わせ。SFN_VALIDATEF_CHECK フラグは、必ず設定されていなければならない。SFN_VALIDATEF_IGNOREMUTED フラグは、このメソッドでは意味を持たない。

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_MUST_INIT_RENDERERレンダリング エンジンが初期化に失敗した。

注意

pOverride パラメータを使用すると、IMediaLocator インターフェイスの独自のカスタム実装を使用できる。たとえば、デフォルトのメディア ロケータは、見つかった (または見つからなかった) ファイルについてアプリケーションに通知を行わない。このような制限を回避するために、カスタム メディア ロケータを実装して、デフォルト バージョンのラッパーとすることができる。そして、デフォルト バージョンに IMediaLocator::FindMediaFile 呼び出しを直接渡して、その戻り値を調べる。

現在、このメソッドは動的にロードされたソースを検証しない。詳細については、「SetDynamicReconnectLevel」を参照すること。

IRenderEngine::SetTimelineObject

IRenderEngine インターフェイス

使用するレンダリング エンジン用のタイムラインを設定する。

構文

HRESULT SetTimelineObject(
    IAMTimeline *pTimeline
);

パラメータ

pTimeline
タイムライン オブジェクトの IAMTimeline インターフェイスへのポインタ。

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_MUST_INIT_RENDERERレンダリング エンジンが初期化に失敗した。
E_OUTOFMEMORYメモリ不足。
E_POINTER無効なポインタ。

IRenderEngine::UseInSmartRecompressionGraph

IRenderEngine インターフェイス

サポートされていない。

構文

HRESULT UseInSmartRecompressionGraph( void );