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

ICaptureGraphBuilder2

COM
IID93e5a4e0-2d50-11d2-abfa-00a0c9c6e38d継承元IUnknown自前メソッド開始 vtbl3

メソッド 9

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_Asf等)。
lpstrFileLPWSTRin出力ファイルのパス(ワイド文字)。
ppfIBaseFilter**out生成されたマルチプレクサフィルタを受け取る出力先。
ppSinkIFileSinkFilter**outoptional生成されたファイルシンクのIFileSinkFilterを受け取る出力先。NULL可。
vtbl 6 HRESULT FindInterface(GUID* pCategory, GUID* pType, IBaseFilter* pf, GUID* riid, void** ppint)
pCategoryGUID*inoptional検索を開始するピンカテゴリGUID(PIN_CATEGORY_*)。NULL可。
pTypeGUID*inoptional対象メディアタイプを示すメジャータイプGUID。NULL可。
pfIBaseFilter*in探索の起点となるフィルタを指定する。
riidGUID*in取得したいインタフェースの識別子(IID)。
ppintvoid**out見つかったインタフェースポインタを受け取る出力先。
vtbl 7 HRESULT RenderStream(GUID* pCategory, GUID* pType, IUnknown* pSource, IBaseFilter* pfCompressor, IBaseFilter* pfRenderer)
pCategoryGUID*inoptionalレンダリング対象のピンカテゴリGUID。NULL可。
pTypeGUID*in対象メディアタイプを示すメジャータイプGUID。NULL可。
pSourceIUnknown*inストリーム元となるフィルタまたはピン(IUnknown)。
pfCompressorIBaseFilter*in途中に挿入する圧縮フィルタ。NULL可。
pfRendererIBaseFilter*in終端のレンダラまたはシンクフィルタを指定する。NULLで既定レンダラ。
vtbl 8 HRESULT ControlStream(GUID* pCategory, GUID* pType, IBaseFilter* pFilter, LONGLONG* pstart, LONGLONG* pstop, WORD wStartCookie, WORD wStopCookie)
pCategoryGUID*in制御対象のピンカテゴリGUID。NULL可。
pTypeGUID*in対象メディアタイプを示すメジャータイプGUID。NULL可。
pFilterIBaseFilter*in制御対象のフィルタを指定する。NULLでグラフ全体。
pstartLONGLONG*inoptionalストリーム開始時刻を指定する入力。NULL可。
pstopLONGLONG*inoptionalストリーム停止時刻を指定する入力。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可。
vtbl 11 HRESULT FindPin(IUnknown* pSource, PIN_DIRECTION pindir, GUID* pCategory, GUID* pType, BOOL fUnconnected, INT num, IPin** ppPin)
pSourceIUnknown*in探索の起点となるフィルタまたはピン(IUnknown)。
pindirPIN_DIRECTIONin検索するピンの方向(入力/出力)を示すPIN_DIRECTION。
pCategoryGUID*inoptional検索対象のピンカテゴリGUID。NULL可。
pTypeGUID*inoptional検索対象のメディアタイプGUID。NULL可。
fUnconnectedBOOLin未接続ピンのみを対象とするか否かを示す真偽値。
numINTin条件に一致するピンの中で取得する0始まりの序数。
ppPinIPin**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 指定が可能。