Win32 API 日本語リファレンス
ホームMedia.DirectShow › IAMMultiMediaStream

IAMMultiMediaStream

COM
IIDbebe595c-9a6f-11d0-8fde-00c04fd9189d継承元IMultiMediaStream自前メソッド開始 vtbl12

公式ドキュメント

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。IAMMultiMediaStream インターフェイスは、マルチメディアストリームオブジェクトによってサポートされます。このインターフェイスには、オブジェクトが管理する基盤となるフィルターグラフを作成するためのメソッドが含まれています。

メソッド 7

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 12 HRESULT Initialize(STREAM_TYPE StreamType, DWORD dwFlags, IGraphBuilder* pFilterGraph)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。Initialize メソッドは、マルチメディアストリームオブジェクトを初期化します。

StreamTypeSTREAM_TYPEinSTREAM_TYPE 列挙体のメンバーで、ストリームが読み取り専用、書き込み専用、または読み書き可能のいずれであるかを指定します。
dwFlagsDWORDin

次のいずれかの値である必要があります:

説明
Zero 別のスレッドで実行されるフィルターグラフを作成します。
AMMSF_NOGRAPHTHREAD 呼び出し元のスレッドで実行されるフィルターグラフを作成します。
pFilterGraphIGraphBuilder*in[省略可能] IGraphBuilder インターフェイスへのポインター、または NULL。このパラメーターが NULL 以外の場合、マルチメディアストリームオブジェクトが使用するフィルターグラフを指定します。それ以外の場合、マルチメディアストリームオブジェクトは新しいフィルターグラフを作成します。

戻り値

HRESULT 値を返します。取り得る値には次のものが含まれます。

戻り値 説明
E_POINTER
NULL ポインター引数。
S_OK
成功。

解説(Remarks)

dwFlags パラメーターに AMMSF_NOGRAPHTHREAD を指定した場合、呼び出し元のスレッドはウィンドウメッセージを処理する必要があり、スレッドが終了する前にすべてのマルチメディアストリーミングオブジェクトを解放する必要があります。そうしないと、アプリケーションがデッドロックする可能性があります。

vtbl 13 HRESULT GetFilterGraph(IGraphBuilder** ppGraphBuilder)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。GetFilterGraph メソッドは、マルチメディアストリームオブジェクトによって管理されるフィルターグラフマネージャーを取得します。

ppGraphBuilderIGraphBuilder**outIGraphBuilder インターフェイスポインターを受け取る変数のアドレス。マルチメディアストリームオブジェクトに関連付けられたフィルターグラフがない場合、返されるポインターは NULL になります。

戻り値

HRESULT 値を返します。取り得る値には次のものが含まれます。

戻り値 説明
E_POINTER
NULL ポインター引数。
S_OK
成功。

解説(Remarks)

メソッドが成功し、*ppGraphBuilderNULL 以外の場合、呼び出し元は IGraphBuilder ポインターを解放する必要があります。

vtbl 14 HRESULT GetFilter(IMediaStreamFilter** ppFilter)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。GetFilter メソッドは、マルチメディアストリームオブジェクトが内部的に使用するメディアストリームフィルターを取得します。

ppFilterIMediaStreamFilter**outIMediaStreamFilter インターフェイスポインターを受け取る変数のアドレス。

戻り値

HRESULT 値を返します。取り得る値には次のものが含まれます。

戻り値 説明
E_POINTER
NULL ポインター引数。
S_OK
成功。

解説(Remarks)

アプリケーションはこのメソッドを呼び出さないでください。IMediaStreamFilter インターフェイスは、アプリケーションでの使用を意図したものではありません。

メソッドが成功した場合、呼び出し元は IMediaStreamFilter インターフェイスを解放する必要があります。

vtbl 15 HRESULT AddMediaStream(IUnknown* pStreamObject, GUID* PurposeId, DWORD dwFlags, IMediaStream** ppNewStream)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。AddMediaStream メソッドは、新しいメディアストリームをフィルターグラフに追加します。

pStreamObjectIUnknown*in新しいメディアストリームの作成に使用されるオブジェクトの IUnknown インターフェイスへのポインター。このパラメーターは NULL にすることができます。詳細については「解説」を参照してください。
PurposeIdGUID*in作成するメディアストリームの種類を指定する MSPID へのポインター。このパラメーターは NULL にすることができます。
dwFlagsDWORDin

次のフラグの 0 個以上のビットごとの組み合わせ。

説明
AMMSF_ADDDEFAULTRENDERER デフォルトのレンダラーを追加します(オーディオストリームのみ)。
AMMSF_CREATEPEER pStreamObject で指定されたオブジェクトに基づいて新しいストリームを作成します。
AMMSF_NOSTALL Update 呼び出しの待機でブロックしないストリームを作成します。
AMMSF_STOPIFNOSAMPLES サンプルがない場合に停止するストリームを作成します。
ppNewStreamIMediaStream**outIMediaStream インターフェイスポインターを受け取る変数のアドレス。

戻り値

HRESULT 値を返します。取り得る値には次のものが含まれます。

戻り値 説明
E_INVALIDARG
無効な引数。
E_POINTER
NULL ポインター引数。
MS_E_PURPOSEID
無効な purpose ID。
S_OK
成功。

解説(Remarks)

pPurposeIDNULL の場合、pStreamObjectIMediaStream オブジェクトを指定する必要があります。オブジェクトの GetInformation メソッドを使用して purpose ID を判定し、それを使って新しいメディアストリームを作成します。

purpose ID が MSPID_PrimaryAudio で、dwFlagsAMMSF_ADDDEFAULTRENDERER フラグが含まれている場合、このメソッドは DirectSound Renderer をフィルターグラフに追加します。

dwFlagsAMMSF_CREATEPEER フラグが含まれている場合、このメソッドは pStreamObject で指定されたオブジェクトを使用して新しいメディアストリームを作成します。その場合、pStreamObject には次のいずれかを指定できます:

どちらのフラグも設定されていない場合、pStreamObject には次のいずれかを指定できます: メソッドが成功した場合、呼び出し元は返された IMediaStream インターフェイスを解放する必要があります。
vtbl 16 HRESULT OpenFile(LPWSTR pszFileName, DWORD dwFlags)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。OpenFile メソッドは、指定されたメディアファイルを開き、そのためのフィルターグラフを自動的に作成します。DirectShow がそのファイル形式をサポートしていない場合、このメソッドは何も行いません。

pszFileNameLPWSTRin開きたいファイルの名前へのポインター。
dwFlagsDWORDin

フィルターグラフが指定されたファイルをどのようにレンダリングするかを変更する値。この値は、次のフラグの 1 つ以上の組み合わせです。

説明
AMMSF_NOCLOCK クロックなしでストリームを実行します。
AMMSF_NORENDER ファイルを開きますが、どのストリームもレンダリングしません。このフラグは常に AMMSF_RUN フラグと併用する必要があります。
AMMSF_RENDERALLSTREAMS 既存のメディアストリームを持たないものも含め、すべてのストリームをレンダリングします。
AMMSF_RENDERTOEXISTING 既存のストリームに対してのみレンダリングします。
AMMSF_RUN ストリームを実行状態にします。

戻り値

次のいずれかの値を返します。

戻り値 説明
E_INVALIDARG
dwFlags パラメーターが無効です。
E_POINTER
このメソッドは無効なポインターにアクセスしようとしました。
S_OK
成功。

解説(Remarks)

AMMSF_RENDERALLSTREAMS フラグは、ビデオとオーディオのデフォルトレンダリングフィルターが存在しない場合にそれらを作成します。ただし、これらのデフォルトフィルターは IStreamSample::GetMediaStream メソッドではアクセスできません。

vtbl 17 HRESULT OpenMoniker(IBindCtx* pCtx, IMoniker* pMoniker, DWORD dwFlags)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。OpenMoniker メソッドは、ファイルまたはデバイスのモニカーを開きます。DirectShow がそのモニカーをサポートしている場合、このモニカーからメディアデータを読み取ることができます。

pCtxIBindCtx*inモニカーに関連付けられたバインドコンテキストへのポインター。
pMonikerIMoniker*in開きたいモニカーを指定する IMoniker インターフェイスへのポインター。
dwFlagsDWORDin

フィルターグラフが指定されたファイルをどのようにレンダリングするかを変更する値。この値は、次のフラグの 1 つ以上の組み合わせです。

説明
AMMSF_NOCLOCK クロックなしでストリームを実行します。
AMMSF_NORENDER ファイルを開きますが、どのストリームもレンダリングしません。このフラグは常に AMMSF_RUN フラグと併用する必要があります。
AMMSF_RENDERALLSTREAMS 既存のメディアストリームを持たないものも含め、すべてのストリームをレンダリングします。
AMMSF_RENDERTOEXISTING 既存のストリームに対してのみレンダリングします。
AMMSF_RUN ストリームを実行状態にします。

戻り値

成功した場合は S_OK を、dwFlags パラメーターが無効な場合は E_INVALIDARG を返します。

vtbl 18 HRESULT Render(DWORD dwFlags)

注意 このインターフェイスは非推奨です。新しいアプリケーションでは使用しないでください。Render メソッドは、現在のフィルターグラフをレンダリングします。

dwFlagsDWORDinフィルターグラフが現在のマルチメディアストリームをどのようにレンダリングするかを指定する値。この値は現在、AMMSF_NOCLOCK でなければなりません。

戻り値

成功した場合は S_OK を、dwFlags パラメーターが無効な場合は E_INVALIDARG を返します。

解説(Remarks)

このメソッドは、STREAMTYPE_WRITE 型のストリームについて各ソースストリームをレンダリングします。これは複数回呼び出すことができます。たとえば、ソースストリームが追加されるたびに呼び出すことができますが、その際ストリームは実行モードには設定されません。このメソッドを呼び出した後、ストリームを実行モードにするには IMultiMediaStream::SetState メソッドを使用します。

AMMSF_RENDERALLSTREAMS フラグは、ビデオとオーディオのデフォルトレンダリングストリームが存在しない場合にそれらを作成します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IAMMultiMediaStream "{BEBE595C-9A6F-11D0-8FDE-00C04FD9189D}"
#usecom global IAMMultiMediaStream IID_IAMMultiMediaStream "{}"
#comfunc global IAMMultiMediaStream_Initialize      12 int,int,sptr
#comfunc global IAMMultiMediaStream_GetFilterGraph  13 sptr
#comfunc global IAMMultiMediaStream_GetFilter       14 sptr
#comfunc global IAMMultiMediaStream_AddMediaStream  15 sptr,var,int,sptr
#comfunc global IAMMultiMediaStream_OpenFile        16 wstr,int
#comfunc global IAMMultiMediaStream_OpenMoniker     17 sptr,sptr,int
#comfunc global IAMMultiMediaStream_Render          18 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。