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

IMediaFilter

COM
IID56a86899-0ad4-11ce-b03a-0020af0ba770継承元IPersist自前メソッド開始 vtbl4

メソッド 6

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

vtbl 4 HRESULT Stop()
vtbl 5 HRESULT Pause()
vtbl 6 HRESULT Run(LONGLONG tStart)
tStartLONGLONGin再生を開始する基準時刻(REFERENCE_TIME、100ナノ秒単位)。ストリーム時刻のオフセットとして使う。
vtbl 7 HRESULT GetState(DWORD dwMilliSecsTimeout, FILTER_STATE* State)
dwMilliSecsTimeoutDWORDin状態遷移の完了を待つ最大時間(ミリ秒)。INFINITEで無期限待機する。
StateFILTER_STATE*out現在のフィルタ状態(停止/一時停止/実行)を受け取る出力先。
vtbl 8 HRESULT SetSyncSource(IReferenceClock* pClock)
pClockIReferenceClock*inoptional同期に用いる基準クロックを指定する。NULL可で、その場合クロックなしで動作する。
vtbl 9 HRESULT GetSyncSource(IReferenceClock** pClock)
pClockIReferenceClock**out現在設定されている基準クロックを受け取る出力先。未設定時はNULLが返る。

HSP用 COM定義

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

出力引数:
#define global IID_IMediaFilter "{56A86899-0AD4-11CE-B03A-0020AF0BA770}"
#usecom global IMediaFilter IID_IMediaFilter "{}"
#comfunc global IMediaFilter_Stop           4
#comfunc global IMediaFilter_Pause          5
#comfunc global IMediaFilter_Run            6 int64
#comfunc global IMediaFilter_GetState       7 int,var
#comfunc global IMediaFilter_SetSyncSource  8 sptr
#comfunc global IMediaFilter_GetSyncSource  9 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。