Microsoft DirectX 8.0 |
IAMMultiMediaStream インターフェイスは、マルチメディア ストリーム開発者に Microsoft® DirectShow® の機能を公開する。このインターフェイスのメソッドを使用すると、フィルタ グラフを自動生成し、受信データを再生またはキャプチャするためにファイルまたはモニカを開き、所定のフィルタ グラフをレンダリングすることができる。
アプリケーションで DirectShow のメディア タイプに対応するマルチメディア ストリーム ベースのサポートを提供するには、このインターフェイスを実装する。
マルチメディア ストリーミング アプリケーションで、DirectShow がサポートするメディア再生を制御するには、このインターフェイスを使用する。
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IAMMultiMediaStream メソッド 説明 Initialize ストリーム タイプを設定する。pFilterGraph パラメータが NULL でない場合には、渡されたフィルタ グラフをストリームに使用する。 GetFilterGraph 関連付けられたフィルタ グラフの IGraphBuilder インターフェイスを取得する。 GetFilter 現在のフィルタ グラフから指定されたフィルタを取得する。 AddMediaStream 現在のフィルタ グラフに指定されたメディア ストリームを追加する。 OpenFile 指定されたメディア ファイルに対応するフィルタ グラフを開き、自動作成する。ファイル フォーマットが DirectShow でサポートされていない場合、メソッドは何も実行しない。 OpenMoniker ファイル モニカまたはデバイス モニカを開く。メディア タイプが DirectShow でサポートされていれば、このモニカからメディア データを読み取ることができる。 Render 現在のフィルタ グラフをレンダリングする。
現在のフィルタ グラフに指定されたメディア ストリームを追加する。
構文
HRESULT AddMediaStream( IUnknown *pStreamObject, const MSPID *pPurposeID, DWORD dwFlags, IMediaStream **ppNewStream );
パラメータ
- pStreamObject
- [in] 現在のフィルタ グラフに追加するメディア ストリームまたは基盤となるストリーム オブジェクトを指す IUnknown インターフェイスへのポインタ。
- pPurposeID
- [in] 新しく追加するメディア ストリームの目的 ID へのポインタ。
- dwFlags
- [in] メディア ストリームの動作を修正する、以下の値を 1 つ以上組み合わせた値。
AMMSF_ADDDEFAULTRENDERER デフォルトのレンダラを追加する。 AMMSF_CREATEPEER pStreamObject と同じオブジェクトに基づくピア ストリームを作成する。 AMMSF_STOPIFNOSAMPLES サンプルが 1 つも作成されていない場合、または最後のサンプルが削除された場合には、ストリームを終了する。 AMMSF_NOSTALL Update が呼び出されなくてもストリームを実行する。 - ppNewStream
- [out] IMediaStream インターフェイスへのポインタのアドレス。このポインタに、新しく追加されたメディア ストリームのアドレスを受け取る。このパラメータは省略可能。
戻り値
次のいずれかの HRESULT 値を返す。
MS_E_PURPOSEID 追加するストリームが持つ目的 ID が指定された ID と異なっているか、または指定された目的 ID を持つストリームが既に存在する。 E_POINTER Null ポインタ引数。 S_OK 成功。
注意
dwFlags に AMMSF_ADDDEFAULTRENDERER を指定すると、指定された目的 ID に対応するデフォルト レンダラが作成される (可能な場合)。現時点では、DirectSound を使用するオーディオに対応するデフォルト レンダラのみがサポートされる。この場合、pStreamObject パラメータは NULL でなければならない。また、IMultiMediaStream::GetMediaStream メソッドまたは IMultiMediaStream::EnumMediaStreams メソッドの呼び出しでは、ストリームが認識されない。
dwFlags に AMMSF_CREATEPEER を指定すると、pStreamObject を使用してメディア ストリームが作成され、そのメディア ストリームが現在のマルチメディア ストリームに追加される。pStreamObject パラメータはストリーム タイプによって異なる。通常、pStreamObject には IMediaStream オブジェクトへのポインタを指定できる。この場合、サンプルと同じ目的 ID およびフォーマットを持つストリームが作成される。IDirectDraw ストリームの場合には、IDirectDraw オブジェクトへのポインタも指定できる。
dwFlags に AMMSF_STOPIFNOSAMPLES を指定すると、ストリームが終了される。
フラグが 1 つもセットされていない場合、pStreamObject は次のいずれかの値をとる。
IAMMediaStream オブジェクト この場合、このストリームはマルチメディア ストリーム内のストリームに追加される。 NULL この場合、デフォルトの IMediaStream オブジェクトが、基盤となるデフォルトのオブジェクトを持つストリームに追加される (必要な場合)。 基盤となるオブジェクトへのポインタ このポインタを使用して、デフォルト ストリームが構築される。ビデオ ストリームの場合には、IDirectDraw ポインタの可能性がある。
現在のフィルタ グラフから指定されたフィルタを取得する。
構文
HRESULT GetFilter( IMediaStreamFilter **ppFilter );
パラメータ
- ppFilter
- [out] IMediaStreamFilter インターフェイスへのポインタのアドレス。このポインタに、現在のフィルタのアドレスを受け取る。
戻り値
成功した場合は、S_OK を返す。NULL の必須パラメータがある場合は、E_POINTER を返す。
関連付けられたフィルタ グラフの IGraphBuilder インターフェイスを取得する。
構文
HRESULT GetFilterGraph( IGraphBuilder **ppGraphBuilder );
パラメータ
- ppGraphBuilder
- [out] IGraphBuilder インターフェイスへのポインタのアドレス。このポインタに、現在のフィルタ グラフのアドレスを受け取る。
戻り値
成功した場合は、S_OK を返す。NULL の必須パラメータがある場合は、E_POINTER を返す。
ストリーム タイプを設定する。pFilterGraph パラメータが NULL でない場合には、渡されたフィルタ グラフをストリームに使用する。
構文
HRESULT Initialize( STREAM_TYPE StreamType, DWORD dwFlags, IGraphBuilder *pFilterGraph );
パラメータ
- StreamType
- [in] 新しいフィルタ グラフのストリーム タイプを指定する STREAM_TYPE 列挙値。
- dwFlags
- [in] AMMSF_NOGRAPHTHREAD フラグまたは 0。AMMSF_NOGRAPHTHREAD フラグは、現在のスレッドでフィルタ グラフ オブジェクトを作成することを示す。
- pFilterGraph
- [in] [optional] 新しいフィルタ グラフのアドレスを受け取る IGraphBuilder インターフェイスへのポインタ。このパラメータは省略可能。後からフィルタ グラフにアクセスする必要がある場合にのみ、有効なポインタを渡す。
戻り値
成功した場合は、S_OK を返す。NULL の必須パラメータがある場合は、E_POINTER を返す。
注意
AMMSF_NOGRAPHTHREAD フラグを安全に使用するには、現在のスレッドが終了するまでアプリケーションがストリーム オブジェクトを解放せず、ウィンドウ メッセージが現在のスレッドで処理されなければならない。
指定されたメディア ファイルに対応するフィルタ グラフを開き、自動作成する。ファイル フォーマットが DirectShow でサポートされていない場合、メソッドは何も実行しない。
構文
HRESULT OpenFile( LPCWSTR pszFileName, DWORD dwFlags );
パラメータ
- pszFileName
- [in] 開くファイルの名前へのポインタ。
- dwFlags
- [in] フィルタ グラフが指定されたファイルをレンダリングする方法を修正する値。この値は、以下のフラグを 1 つ以上組み合わせたものである。
AMMSF_RENDERTOEXISTING 既存のストリームだけにレンダリングする。 AMMSF_RENDERALLSTREAMS 既存のメディア ストリームを持たないストリームを含めて、すべてのストリームをレンダリングする。 AMMSF_NORENDER ファイルを開くが、ストリームのレンダリングはしない。このフラグは常に AMMSF_RUN フラグと共に指定しなければならない。 AMMSF_NOCLOCK クロックのないストリームを実行する。 AMMSF_RUN ストリームを実行状態に切り替える。
戻り値
次のいずれかの値を返す。
E_INVALIDARG dwFlags パラメータが無効。 E_POINTER このメソッドが無効なポインタにアクセスしようとした。 S_OK 成功。
注意
AMMSF_RENDERALLSTREAMS フラグがオンの場合、ビデオおよびオーディオ用のデフォルト レンダリング フィルタがなければ作成する。ただし、これらのデフォルト フィルタは、IStreamSample::GetMediaStream メソッドでアクセスすることができない。
ファイル モニカまたはデバイス モニカを開く。モニカが DirectShow でサポートされていれば、このモニカからメディア データを読み取ることができる。
構文
HRESULT OpenMoniker( IBindCtx *pCtx, IMoniker *pMoniker, DWORD dwFlags );
パラメータ
- pCtx
- [in] モニカに関連付けられたバインド コンテキストへのポインタ。
- pMoniker
- [in] 開くモニカを指定する IMoniker インターフェイスへのポインタ。
- dwFlags
- [in] フィルタ グラフが指定されたファイルをレンダリングする方法を修正する値。この値は、以下のフラグを 1 つ以上組み合わせたものである。
AMMSF_RENDERTOEXISTING 既存のストリームだけにレンダリングする。 AMMSF_RENDERALLSTREAMS 既存のメディア ストリームを持たないストリームを含めて、すべてのストリームをレンダリングする。 AMMSF_NORENDER ファイルを開くが、ストリームのレンダリングはしない。このフラグは常に AMMSF_RUN フラグと共に指定しなければならない。 AMMSF_NOCLOCK クロックのないストリームを実行する。 AMMSF_RUN ストリームを実行状態に切り替える。
戻り値
成功した場合は、S_OK を返す。dwFlags パラメータが無効な場合は、E_INVALIDARG を返す。
現在のフィルタ グラフをレンダリングする。
構文
HRESULT Render( DWORD dwFlags );
パラメータ
- dwFlags
- [in] フィルタ グラフが現在のマルチメディア ストリームをレンダリングする方法を指定する値。現在、この値は AMMSF_NOCLOCK でなければならない。
戻り値
成功した場合は、S_OK を返す。dwFlags パラメータが無効な場合は、E_INVALIDARG を返す。
注意
このメソッドは、各ソース ストリームを STREAMTYPE_WRITE タイプのストリームにレンダリングする。このメソッドは繰り返し呼び出すことができる (たとえばソース ストリームが追加されるたびに呼び出すなど)。ストリームは実行状態に切り替わらない。ストリームを実行状態に切り替えるには、このメソッドの呼び出し後に IMultiMediaStream::SetState メソッドを使用する。
AMMSF_RENDERALLSTREAMS フラグがオンの場合、ビデオおよびオーディオ用のデフォルト レンダリング ストリームがなければ作成される。