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

IMediaSample

COM
IID56a8689a-0ad4-11ce-b03a-0020af0ba770継承元IUnknown自前メソッド開始 vtbl3

メソッド 16

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

vtbl 3 HRESULT GetPointer(BYTE** ppBuffer)
ppBufferBYTE**outサンプルが保持するメディアデータバッファの先頭ポインタを受け取る出力先。
vtbl 4 INT GetSize()
vtbl 5 HRESULT GetTime(LONGLONG* pTimeStart, LONGLONG* pTimeEnd)
pTimeStartLONGLONG*outサンプルの表示開始時刻(REFERENCE_TIME)を受け取る出力先。
pTimeEndLONGLONG*outサンプルの表示終了時刻(REFERENCE_TIME)を受け取る出力先。
vtbl 6 HRESULT SetTime(LONGLONG* pTimeStart, LONGLONG* pTimeEnd)
pTimeStartLONGLONG*inoptionalサンプルの表示開始時刻(REFERENCE_TIME)を設定する。NULLで時刻無効化。
pTimeEndLONGLONG*inoptionalサンプルの表示終了時刻(REFERENCE_TIME)を設定する。NULL可。
vtbl 7 HRESULT IsSyncPoint()
vtbl 8 HRESULT SetSyncPoint(BOOL bIsSyncPoint)
bIsSyncPointBOOLinこのサンプルが同期点(キーフレーム)であるか否かを示す真偽値。
vtbl 9 HRESULT IsPreroll()
vtbl 10 HRESULT SetPreroll(BOOL bIsPreroll)
bIsPrerollBOOLinこのサンプルがプリロール(表示前の準備用)であるか否かを示す真偽値。
vtbl 11 INT GetActualDataLength()
vtbl 12 HRESULT SetActualDataLength(INT __MIDL__IMediaSample0000)
__MIDL__IMediaSample0000INTinバッファ内の有効データ長(バイト数)を設定する。
vtbl 13 HRESULT GetMediaType(AM_MEDIA_TYPE** ppMediaType)
ppMediaTypeAM_MEDIA_TYPE**outサンプル固有のメディアタイプを受け取る出力先。変更が無ければNULLが返る。
vtbl 14 HRESULT SetMediaType(AM_MEDIA_TYPE* pMediaType)
pMediaTypeAM_MEDIA_TYPE*inサンプルに付与するメディアタイプを指定するAM_MEDIA_TYPEへのポインタ。
vtbl 15 HRESULT IsDiscontinuity()
vtbl 16 HRESULT SetDiscontinuity(BOOL bDiscontinuity)
bDiscontinuityBOOLinこのサンプルが不連続点(データの途切れ後)であるか否かを示す真偽値。
vtbl 17 HRESULT GetMediaTime(LONGLONG* pTimeStart, LONGLONG* pTimeEnd)
pTimeStartLONGLONG*outメディア時刻(サンプル番号など)の開始値を受け取る出力先。
pTimeEndLONGLONG*outメディア時刻の終了値を受け取る出力先。
vtbl 18 HRESULT SetMediaTime(LONGLONG* pTimeStart, LONGLONG* pTimeEnd)
pTimeStartLONGLONG*inoptionalメディア時刻の開始値を設定する。NULLで無効化。
pTimeEndLONGLONG*inoptionalメディア時刻の終了値を設定する。NULL可。

HSP用 COM定義

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

出力引数:
#define global IID_IMediaSample "{56A8689A-0AD4-11CE-B03A-0020AF0BA770}"
#usecom global IMediaSample IID_IMediaSample "{}"
#comfunc global IMediaSample_GetPointer           3 var
#comfunc global IMediaSample_GetSize              4
#comfunc global IMediaSample_GetTime              5 var,var
#comfunc global IMediaSample_SetTime              6 var,var
#comfunc global IMediaSample_IsSyncPoint          7
#comfunc global IMediaSample_SetSyncPoint         8 int
#comfunc global IMediaSample_IsPreroll            9
#comfunc global IMediaSample_SetPreroll           10 int
#comfunc global IMediaSample_GetActualDataLength  11
#comfunc global IMediaSample_SetActualDataLength  12 int
#comfunc global IMediaSample_GetMediaType         13 var
#comfunc global IMediaSample_SetMediaType         14 var
#comfunc global IMediaSample_IsDiscontinuity      15
#comfunc global IMediaSample_SetDiscontinuity     16 int
#comfunc global IMediaSample_GetMediaTime         17 var,var
#comfunc global IMediaSample_SetMediaTime         18 var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。