ホーム › Media.DirectShow › IMediaSample
IMediaSample
COMメソッド 16
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| ppBuffer | BYTE** | out | サンプルが保持するメディアデータバッファの先頭ポインタを受け取る出力先。 |
vtbl 4 INT GetSize()
| pTimeStart | LONGLONG* | out | サンプルの表示開始時刻(REFERENCE_TIME)を受け取る出力先。 |
| pTimeEnd | LONGLONG* | out | サンプルの表示終了時刻(REFERENCE_TIME)を受け取る出力先。 |
| pTimeStart | LONGLONG* | inoptional | サンプルの表示開始時刻(REFERENCE_TIME)を設定する。NULLで時刻無効化。 |
| pTimeEnd | LONGLONG* | inoptional | サンプルの表示終了時刻(REFERENCE_TIME)を設定する。NULL可。 |
vtbl 7 HRESULT IsSyncPoint()
| bIsSyncPoint | BOOL | in | このサンプルが同期点(キーフレーム)であるか否かを示す真偽値。 |
vtbl 9 HRESULT IsPreroll()
| bIsPreroll | BOOL | in | このサンプルがプリロール(表示前の準備用)であるか否かを示す真偽値。 |
vtbl 11 INT GetActualDataLength()
| __MIDL__IMediaSample0000 | INT | in | バッファ内の有効データ長(バイト数)を設定する。 |
vtbl 13 HRESULT GetMediaType(AM_MEDIA_TYPE** ppMediaType)
| ppMediaType | AM_MEDIA_TYPE** | out | サンプル固有のメディアタイプを受け取る出力先。変更が無ければNULLが返る。 |
vtbl 14 HRESULT SetMediaType(AM_MEDIA_TYPE* pMediaType)
| pMediaType | AM_MEDIA_TYPE* | in | サンプルに付与するメディアタイプを指定するAM_MEDIA_TYPEへのポインタ。 |
vtbl 15 HRESULT IsDiscontinuity()
| bDiscontinuity | BOOL | in | このサンプルが不連続点(データの途切れ後)であるか否かを示す真偽値。 |
| pTimeStart | LONGLONG* | out | メディア時刻(サンプル番号など)の開始値を受け取る出力先。 |
| pTimeEnd | LONGLONG* | out | メディア時刻の終了値を受け取る出力先。 |
| pTimeStart | LONGLONG* | inoptional | メディア時刻の開始値を設定する。NULLで無効化。 |
| pTimeEnd | LONGLONG* | 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 方式にも切替可。#define global IID_IMediaSample "{56A8689A-0AD4-11CE-B03A-0020AF0BA770}" #usecom global IMediaSample IID_IMediaSample "{}" #comfunc global IMediaSample_GetPointer 3 sptr #comfunc global IMediaSample_GetSize 4 #comfunc global IMediaSample_GetTime 5 sptr,sptr #comfunc global IMediaSample_SetTime 6 sptr,sptr #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 sptr #comfunc global IMediaSample_SetMediaType 14 sptr #comfunc global IMediaSample_IsDiscontinuity 15 #comfunc global IMediaSample_SetDiscontinuity 16 int #comfunc global IMediaSample_GetMediaTime 17 sptr,sptr #comfunc global IMediaSample_SetMediaTime 18 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。