ホーム › Media.DirectShow › ICaptureGraphBuilder2
ICaptureGraphBuilder2
COMメソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT SetFiltergraph(IGraphBuilder* pfg)
| pfg | IGraphBuilder* | in | このビルダが操作対象とするフィルタグラフを指定する。 |
vtbl 4 HRESULT GetFiltergraph(IGraphBuilder** ppfg)
| ppfg | IGraphBuilder** | out | 現在設定されているフィルタグラフを受け取る出力先。 |
vtbl 5 HRESULT SetOutputFileName(GUID* pType, LPWSTR lpstrFile, IBaseFilter** ppf, IFileSinkFilter** ppSink)
| pType | GUID* | in | 出力ファイルの種別を示すサブタイプGUID(MEDIASUBTYPE_Asf等)。 |
| lpstrFile | LPWSTR | in | 出力ファイルのパス(ワイド文字)。 |
| ppf | IBaseFilter** | out | 生成されたマルチプレクサフィルタを受け取る出力先。 |
| ppSink | IFileSinkFilter** | outoptional | 生成されたファイルシンクのIFileSinkFilterを受け取る出力先。NULL可。 |
vtbl 6 HRESULT FindInterface(GUID* pCategory, GUID* pType, IBaseFilter* pf, GUID* riid, void** ppint)
| pCategory | GUID* | inoptional | 検索を開始するピンカテゴリGUID(PIN_CATEGORY_*)。NULL可。 |
| pType | GUID* | inoptional | 対象メディアタイプを示すメジャータイプGUID。NULL可。 |
| pf | IBaseFilter* | in | 探索の起点となるフィルタを指定する。 |
| riid | GUID* | in | 取得したいインタフェースの識別子(IID)。 |
| ppint | void** | out | 見つかったインタフェースポインタを受け取る出力先。 |
vtbl 7 HRESULT RenderStream(GUID* pCategory, GUID* pType, IUnknown* pSource, IBaseFilter* pfCompressor, IBaseFilter* pfRenderer)
| pCategory | GUID* | inoptional | レンダリング対象のピンカテゴリGUID。NULL可。 |
| pType | GUID* | in | 対象メディアタイプを示すメジャータイプGUID。NULL可。 |
| pSource | IUnknown* | in | ストリーム元となるフィルタまたはピン(IUnknown)。 |
| pfCompressor | IBaseFilter* | in | 途中に挿入する圧縮フィルタ。NULL可。 |
| pfRenderer | IBaseFilter* | in | 終端のレンダラまたはシンクフィルタを指定する。NULLで既定レンダラ。 |
vtbl 8 HRESULT ControlStream(GUID* pCategory, GUID* pType, IBaseFilter* pFilter, LONGLONG* pstart, LONGLONG* pstop, WORD wStartCookie, WORD wStopCookie)
| pCategory | GUID* | in | 制御対象のピンカテゴリGUID。NULL可。 |
| pType | GUID* | in | 対象メディアタイプを示すメジャータイプGUID。NULL可。 |
| pFilter | IBaseFilter* | in | 制御対象のフィルタを指定する。NULLでグラフ全体。 |
| pstart | LONGLONG* | inoptional | ストリーム開始時刻を指定する入力。NULL可。 |
| pstop | LONGLONG* | inoptional | ストリーム停止時刻を指定する入力。NULL可。 |
| wStartCookie | WORD | in | 開始完了通知に付与する識別クッキー値(WORD)。 |
| wStopCookie | WORD | in | 停止完了通知に付与する識別クッキー値(WORD)。 |
| lpstr | LPWSTR | in | 確保するキャプチャファイルのパス(ワイド文字)。 |
| dwlSize | ULONGLONG | in | 事前確保するファイルサイズ(バイト数)。 |
vtbl 10 HRESULT CopyCaptureFile(LPWSTR lpwstrOld, LPWSTR lpwstrNew, INT fAllowEscAbort, IAMCopyCaptureFileProgress* pCallback)
| lpwstrOld | LPWSTR | in | コピー元のキャプチャファイルパス(ワイド文字)。 |
| lpwstrNew | LPWSTR | in | コピー先のファイルパス(ワイド文字)。 |
| fAllowEscAbort | INT | in | Escキーによる中断を許可するか否かを示す整数フラグ。 |
| pCallback | IAMCopyCaptureFileProgress* | in | 進捗通知を受け取るIAMCopyCaptureFileProgress。NULL可。 |
vtbl 11 HRESULT FindPin(IUnknown* pSource, PIN_DIRECTION pindir, GUID* pCategory, GUID* pType, BOOL fUnconnected, INT num, IPin** ppPin)
| pSource | IUnknown* | in | 探索の起点となるフィルタまたはピン(IUnknown)。 |
| pindir | PIN_DIRECTION | in | 検索するピンの方向(入力/出力)を示すPIN_DIRECTION。 |
| pCategory | GUID* | inoptional | 検索対象のピンカテゴリGUID。NULL可。 |
| pType | GUID* | inoptional | 検索対象のメディアタイプGUID。NULL可。 |
| fUnconnected | BOOL | in | 未接続ピンのみを対象とするか否かを示す真偽値。 |
| num | INT | in | 条件に一致するピンの中で取得する0始まりの序数。 |
| ppPin | IPin** | out | 見つかったピンのIPinを受け取る出力先。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_ICaptureGraphBuilder2 "{93E5A4E0-2D50-11D2-ABFA-00A0C9C6E38D}" #usecom global ICaptureGraphBuilder2 IID_ICaptureGraphBuilder2 "{}" #comfunc global ICaptureGraphBuilder2_SetFiltergraph 3 sptr #comfunc global ICaptureGraphBuilder2_GetFiltergraph 4 sptr #comfunc global ICaptureGraphBuilder2_SetOutputFileName 5 var,wstr,sptr,sptr #comfunc global ICaptureGraphBuilder2_FindInterface 6 var,var,sptr,var,sptr #comfunc global ICaptureGraphBuilder2_RenderStream 7 var,var,sptr,sptr,sptr #comfunc global ICaptureGraphBuilder2_ControlStream 8 var,var,sptr,var,var,int,int #comfunc global ICaptureGraphBuilder2_AllocCapFile 9 wstr,int64 #comfunc global ICaptureGraphBuilder2_CopyCaptureFile 10 wstr,wstr,int,sptr #comfunc global ICaptureGraphBuilder2_FindPin 11 sptr,int,var,var,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ICaptureGraphBuilder2 "{93E5A4E0-2D50-11D2-ABFA-00A0C9C6E38D}" #usecom global ICaptureGraphBuilder2 IID_ICaptureGraphBuilder2 "{}" #comfunc global ICaptureGraphBuilder2_SetFiltergraph 3 sptr #comfunc global ICaptureGraphBuilder2_GetFiltergraph 4 sptr #comfunc global ICaptureGraphBuilder2_SetOutputFileName 5 sptr,wstr,sptr,sptr #comfunc global ICaptureGraphBuilder2_FindInterface 6 sptr,sptr,sptr,sptr,sptr #comfunc global ICaptureGraphBuilder2_RenderStream 7 sptr,sptr,sptr,sptr,sptr #comfunc global ICaptureGraphBuilder2_ControlStream 8 sptr,sptr,sptr,sptr,sptr,int,int #comfunc global ICaptureGraphBuilder2_AllocCapFile 9 wstr,int64 #comfunc global ICaptureGraphBuilder2_CopyCaptureFile 10 wstr,wstr,int,sptr #comfunc global ICaptureGraphBuilder2_FindPin 11 sptr,int,sptr,sptr,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。