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

IAMMediaTypeSample

COM
IIDab6b4afb-f6e4-11d0-900d-00c04fd9189d継承元IStreamSample自前メソッド開始 vtbl8

メソッド 17

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

vtbl 8 HRESULT SetPointer(BYTE* pBuffer, INT lSize)
pBufferBYTE*inサンプルが参照するデータバッファ先頭へのポインタ入力。
lSizeINTinバッファのバイトサイズをINTで指定する入力。
vtbl 9 HRESULT GetPointer(BYTE** ppBuffer)
ppBufferBYTE**outサンプルのデータバッファ先頭ポインタをBYTE**で受け取る出力。
vtbl 10 INT GetSize()
vtbl 11 HRESULT GetTime(LONGLONG* pTimeStart, LONGLONG* pTimeEnd)
pTimeStartLONGLONG*outサンプルの開始時刻(100ns単位)をLONGLONG*で受け取る出力。
pTimeEndLONGLONG*outサンプルの終了時刻(100ns単位)をLONGLONG*で受け取る出力。
vtbl 12 HRESULT SetTime(LONGLONG* pTimeStart, LONGLONG* pTimeEnd)
pTimeStartLONGLONG*in設定する開始時刻(100ns単位)をLONGLONG*で渡す入力。NULLで時刻なし。
pTimeEndLONGLONG*in設定する終了時刻(100ns単位)をLONGLONG*で渡す入力。NULLで時刻なし。
vtbl 13 HRESULT IsSyncPoint()
vtbl 14 HRESULT SetSyncPoint(BOOL bIsSyncPoint)
bIsSyncPointBOOLinこのサンプルをキーフレーム(同期点)として扱うか否かのBOOL入力。
vtbl 15 HRESULT IsPreroll()
vtbl 16 HRESULT SetPreroll(BOOL bIsPreroll)
bIsPrerollBOOLinこのサンプルをプリロール(表示不要)として扱うか否かのBOOL入力。
vtbl 17 INT GetActualDataLength()
vtbl 18 HRESULT SetActualDataLength(INT __MIDL__IAMMediaTypeSample0000)
__MIDL__IAMMediaTypeSample0000INTinバッファ内の有効データ長(バイト)をINTで設定する入力。
vtbl 19 HRESULT GetMediaType(AM_MEDIA_TYPE** ppMediaType)
ppMediaTypeAM_MEDIA_TYPE**outサンプル固有のメディア型をAM_MEDIA_TYPE**で受け取る出力。変更なしならNULL格納。
vtbl 20 HRESULT SetMediaType(AM_MEDIA_TYPE* pMediaType)
pMediaTypeAM_MEDIA_TYPE*inサンプルに設定するメディア型を指定するAM_MEDIA_TYPE構造体への入力。
vtbl 21 HRESULT IsDiscontinuity()
vtbl 22 HRESULT SetDiscontinuity(BOOL bDiscontinuity)
bDiscontinuityBOOLinこのサンプルが不連続点(データ途切れ)であるか否かのBOOL入力。
vtbl 23 HRESULT GetMediaTime(LONGLONG* pTimeStart, LONGLONG* pTimeEnd)
pTimeStartLONGLONG*outメディア時刻の開始値をLONGLONG*で受け取る出力。
pTimeEndLONGLONG*outメディア時刻の終了値をLONGLONG*で受け取る出力。
vtbl 24 HRESULT SetMediaTime(LONGLONG* pTimeStart, LONGLONG* pTimeEnd)
pTimeStartLONGLONG*in設定するメディア時刻の開始値をLONGLONG*で渡す入力。NULLで時刻なし。
pTimeEndLONGLONG*in設定するメディア時刻の終了値をLONGLONG*で渡す入力。NULLで時刻なし。

HSP用 COM定義

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

出力引数:
#define global IID_IAMMediaTypeSample "{AB6B4AFB-F6E4-11D0-900D-00C04FD9189D}"
#usecom global IAMMediaTypeSample IID_IAMMediaTypeSample "{}"
#comfunc global IAMMediaTypeSample_SetPointer           8 var,int
#comfunc global IAMMediaTypeSample_GetPointer           9 var
#comfunc global IAMMediaTypeSample_GetSize              10
#comfunc global IAMMediaTypeSample_GetTime              11 var,var
#comfunc global IAMMediaTypeSample_SetTime              12 var,var
#comfunc global IAMMediaTypeSample_IsSyncPoint          13
#comfunc global IAMMediaTypeSample_SetSyncPoint         14 int
#comfunc global IAMMediaTypeSample_IsPreroll            15
#comfunc global IAMMediaTypeSample_SetPreroll           16 int
#comfunc global IAMMediaTypeSample_GetActualDataLength  17
#comfunc global IAMMediaTypeSample_SetActualDataLength  18 int
#comfunc global IAMMediaTypeSample_GetMediaType         19 var
#comfunc global IAMMediaTypeSample_SetMediaType         20 var
#comfunc global IAMMediaTypeSample_IsDiscontinuity      21
#comfunc global IAMMediaTypeSample_SetDiscontinuity     22 int
#comfunc global IAMMediaTypeSample_GetMediaTime         23 var,var
#comfunc global IAMMediaTypeSample_SetMediaTime         24 var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。