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

ICaptureGraphBuilder

COM
IIDbf87b6e0-8c27-11d0-b3f0-00aa003761c5継承元IUnknown自前メソッド開始 vtbl3

メソッド 8

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

vtbl 3 HRESULT SetFiltergraph(IGraphBuilder* pfg)
pfgIGraphBuilder*inこのビルダが操作対象とするフィルタグラフを指定する。
vtbl 4 HRESULT GetFiltergraph(IGraphBuilder** ppfg)
ppfgIGraphBuilder**out現在設定されているフィルタグラフを受け取る出力先。
vtbl 5 HRESULT SetOutputFileName(GUID* pType, LPWSTR lpstrFile, IBaseFilter** ppf, IFileSinkFilter** ppSink)
pTypeGUID*in出力ファイルの種別を示すサブタイプGUID(MEDIASUBTYPE_Avi等)。
lpstrFileLPWSTRin出力ファイルのパス(ワイド文字)。
ppfIBaseFilter**out生成されたマルチプレクサフィルタを受け取る出力先。
ppSinkIFileSinkFilter**out生成されたファイルシンクのIFileSinkFilterを受け取る出力先。NULL可。
vtbl 6 HRESULT FindInterface(GUID* pCategory, IBaseFilter* pf, GUID* riid, void** ppint)
pCategoryGUID*inoptional検索を開始するピンカテゴリGUID。NULLで全体探索。
pfIBaseFilter*in探索の起点となるフィルタを指定する。
riidGUID*in取得したいインタフェースの識別子(IID)。
ppintvoid**out見つかったインタフェースポインタを受け取る出力先。
vtbl 7 HRESULT RenderStream(GUID* pCategory, IUnknown* pSource, IBaseFilter* pfCompressor, IBaseFilter* pfRenderer)
pCategoryGUID*inoptionalレンダリング対象のピンカテゴリGUID(PIN_CATEGORY_*)。NULL可。
pSourceIUnknown*inストリーム元となるフィルタまたはピン(IUnknown)。
pfCompressorIBaseFilter*in途中に挿入する圧縮フィルタ。NULL可。
pfRendererIBaseFilter*in終端のレンダラまたはシンクフィルタを指定する。
vtbl 8 HRESULT ControlStream(GUID* pCategory, IBaseFilter* pFilter, LONGLONG* pstart, LONGLONG* pstop, WORD wStartCookie, WORD wStopCookie)
pCategoryGUID*inoptional制御対象のピンカテゴリGUID。NULLでフィルタ全体。
pFilterIBaseFilter*in制御対象のフィルタを指定する。
pstartLONGLONG*inストリーム開始時刻を指定する入力。NULL可。
pstopLONGLONG*inストリーム停止時刻を指定する入力。NULL可。
wStartCookieWORDin開始完了通知に付与する識別クッキー値(WORD)。
wStopCookieWORDin停止完了通知に付与する識別クッキー値(WORD)。
vtbl 9 HRESULT AllocCapFile(LPWSTR lpstr, ULONGLONG dwlSize)
lpstrLPWSTRin確保するキャプチャファイルのパス(ワイド文字)。
dwlSizeULONGLONGin事前確保するファイルサイズ(バイト数)。
vtbl 10 HRESULT CopyCaptureFile(LPWSTR lpwstrOld, LPWSTR lpwstrNew, INT fAllowEscAbort, IAMCopyCaptureFileProgress* pCallback)
lpwstrOldLPWSTRinコピー元のキャプチャファイルパス(ワイド文字)。
lpwstrNewLPWSTRinコピー先のファイルパス(ワイド文字)。
fAllowEscAbortINTinEscキーによる中断を許可するか否かを示す整数フラグ。
pCallbackIAMCopyCaptureFileProgress*in進捗通知を受け取るIAMCopyCaptureFileProgress。NULL可。

HSP用 COM定義

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

出力引数:
#define global IID_ICaptureGraphBuilder "{BF87B6E0-8C27-11D0-B3F0-00AA003761C5}"
#usecom global ICaptureGraphBuilder IID_ICaptureGraphBuilder "{}"
#comfunc global ICaptureGraphBuilder_SetFiltergraph     3 sptr
#comfunc global ICaptureGraphBuilder_GetFiltergraph     4 sptr
#comfunc global ICaptureGraphBuilder_SetOutputFileName  5 var,wstr,sptr,sptr
#comfunc global ICaptureGraphBuilder_FindInterface      6 var,sptr,var,sptr
#comfunc global ICaptureGraphBuilder_RenderStream       7 var,sptr,sptr,sptr
#comfunc global ICaptureGraphBuilder_ControlStream      8 var,sptr,var,var,int,int
#comfunc global ICaptureGraphBuilder_AllocCapFile       9 wstr,int64
#comfunc global ICaptureGraphBuilder_CopyCaptureFile    10 wstr,wstr,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。