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

IMediaObject

COM
IIDd8ad0f58-5494-4102-97c5-ec798e59bcf4継承元IUnknown自前メソッド開始 vtbl3

メソッド 21

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

vtbl 3 HRESULT GetStreamCount(DWORD* pcInputStreams, DWORD* pcOutputStreams)
pcInputStreamsDWORD*outDMO がサポートする入力ストリーム数を受け取る DWORD ポインタ。
pcOutputStreamsDWORD*outDMO がサポートする出力ストリーム数を受け取る DWORD ポインタ。
vtbl 4 HRESULT GetInputStreamInfo(DWORD dwInputStreamIndex, DWORD* pdwFlags)
dwInputStreamIndexDWORDin情報を取得する入力ストリームの 0 始まりインデックスを指定する。
pdwFlagsDWORD*outDMO_INPUT_STREAM_INFO_FLAGS の組み合わせを受け取る DWORD ポインタ。ストリームの特性を示す。
vtbl 5 HRESULT GetOutputStreamInfo(DWORD dwOutputStreamIndex, DWORD* pdwFlags)
dwOutputStreamIndexDWORDin情報を取得する出力ストリームの 0 始まりインデックスを指定する。
pdwFlagsDWORD*outDMO_OUTPUT_STREAM_INFO_FLAGS の組み合わせを受け取る DWORD ポインタ。
vtbl 6 HRESULT GetInputType(DWORD dwInputStreamIndex, DWORD dwTypeIndex, DMO_MEDIA_TYPE* pmt)
dwInputStreamIndexDWORDin対象入力ストリームの 0 始まりインデックスを指定する。
dwTypeIndexDWORDin列挙する優先メディアタイプの 0 始まりインデックスを指定する。
pmtDMO_MEDIA_TYPE*outoptional取得したメディアタイプを受け取る DMO_MEDIA_TYPE 構造体ポインタ。NULL で存在確認のみ可。
vtbl 7 HRESULT GetOutputType(DWORD dwOutputStreamIndex, DWORD dwTypeIndex, DMO_MEDIA_TYPE* pmt)
dwOutputStreamIndexDWORDin対象出力ストリームの 0 始まりインデックスを指定する。
dwTypeIndexDWORDin列挙する優先メディアタイプの 0 始まりインデックスを指定する。
pmtDMO_MEDIA_TYPE*outoptional取得したメディアタイプを受け取る DMO_MEDIA_TYPE 構造体ポインタ。NULL で存在確認のみ可。
vtbl 8 HRESULT SetInputType(DWORD dwInputStreamIndex, DMO_MEDIA_TYPE* pmt, DWORD dwFlags)
dwInputStreamIndexDWORDin設定対象の入力ストリームの 0 始まりインデックスを指定する。
pmtDMO_MEDIA_TYPE*inoptional設定するメディアタイプを表す DMO_MEDIA_TYPE 構造体ポインタ。NULL でクリア。
dwFlagsDWORDinDMO_SET_TYPE_FLAGS の組み合わせを指定する。テスト確認やクリアの指定が可能。
vtbl 9 HRESULT SetOutputType(DWORD dwOutputStreamIndex, DMO_MEDIA_TYPE* pmt, DWORD dwFlags)
dwOutputStreamIndexDWORDin設定対象の出力ストリームの 0 始まりインデックスを指定する。
pmtDMO_MEDIA_TYPE*inoptional設定するメディアタイプを表す DMO_MEDIA_TYPE 構造体ポインタ。NULL でクリア。
dwFlagsDWORDinDMO_SET_TYPE_FLAGS の組み合わせを指定する。テスト確認やクリアの指定が可能。
vtbl 10 HRESULT GetInputCurrentType(DWORD dwInputStreamIndex, DMO_MEDIA_TYPE* pmt)
dwInputStreamIndexDWORDin対象入力ストリームの 0 始まりインデックスを指定する。
pmtDMO_MEDIA_TYPE*out現在設定中のメディアタイプを受け取る DMO_MEDIA_TYPE 構造体ポインタ。
vtbl 11 HRESULT GetOutputCurrentType(DWORD dwOutputStreamIndex, DMO_MEDIA_TYPE* pmt)
dwOutputStreamIndexDWORDin対象出力ストリームの 0 始まりインデックスを指定する。
pmtDMO_MEDIA_TYPE*out現在設定中のメディアタイプを受け取る DMO_MEDIA_TYPE 構造体ポインタ。
vtbl 12 HRESULT GetInputSizeInfo(DWORD dwInputStreamIndex, DWORD* pcbSize, DWORD* pcbMaxLookahead, DWORD* pcbAlignment)
dwInputStreamIndexDWORDin対象入力ストリームの 0 始まりインデックスを指定する。
pcbSizeDWORD*out1 サンプルあたりの最小バッファサイズをバイト単位で受け取る DWORD ポインタ。
pcbMaxLookaheadDWORD*out先読みに必要な最大バイト数を受け取る DWORD ポインタ。
pcbAlignmentDWORD*outバッファに要求されるメモリ境界(アライメント)をバイト単位で受け取る DWORD ポインタ。
vtbl 13 HRESULT GetOutputSizeInfo(DWORD dwOutputStreamIndex, DWORD* pcbSize, DWORD* pcbAlignment)
dwOutputStreamIndexDWORDin対象出力ストリームの 0 始まりインデックスを指定する。
pcbSizeDWORD*out1 サンプルあたりの最小バッファサイズをバイト単位で受け取る DWORD ポインタ。
pcbAlignmentDWORD*outバッファに要求されるメモリ境界をバイト単位で受け取る DWORD ポインタ。
vtbl 14 HRESULT GetInputMaxLatency(DWORD dwInputStreamIndex, LONGLONG* prtMaxLatency)
dwInputStreamIndexDWORDin対象入力ストリームの 0 始まりインデックスを指定する。
prtMaxLatencyLONGLONG*out許容される最大レイテンシを 100ns 単位の基準時間で受け取る LONGLONG ポインタ。
vtbl 15 HRESULT SetInputMaxLatency(DWORD dwInputStreamIndex, LONGLONG rtMaxLatency)
dwInputStreamIndexDWORDin設定対象の入力ストリームの 0 始まりインデックスを指定する。
rtMaxLatencyLONGLONGin設定する最大レイテンシを 100ns 単位の基準時間で指定する。
vtbl 16 HRESULT Flush()
vtbl 17 HRESULT Discontinuity(DWORD dwInputStreamIndex)
dwInputStreamIndexDWORDinデータの不連続(途切れ)を通知する入力ストリームの 0 始まりインデックスを指定する。
vtbl 18 HRESULT AllocateStreamingResources()
vtbl 19 HRESULT FreeStreamingResources()
vtbl 20 HRESULT GetInputStatus(DWORD dwInputStreamIndex, DWORD* dwFlags)
dwInputStreamIndexDWORDin状態を問い合わせる入力ストリームの 0 始まりインデックスを指定する。
dwFlagsDWORD*outDMO_INPUT_STATUS_FLAGS を受け取る DWORD ポインタ。データ受付可否を示す。
vtbl 21 HRESULT ProcessInput(DWORD dwInputStreamIndex, IMediaBuffer* pBuffer, DWORD dwFlags, LONGLONG rtTimestamp, LONGLONG rtTimelength)
dwInputStreamIndexDWORDinデータを投入する入力ストリームの 0 始まりインデックスを指定する。
pBufferIMediaBuffer*in入力データを保持する IMediaBuffer へのポインタを指定する。
dwFlagsDWORDinDMO_INPUT_DATA_BUFFER_FLAGS の組み合わせを指定する。タイムスタンプ有効等を示す。
rtTimestampLONGLONGinデータ先頭のタイムスタンプを 100ns 単位の基準時間で指定する。フラグ有効時のみ参照。
rtTimelengthLONGLONGinデータの継続時間を 100ns 単位の基準時間で指定する。フラグ有効時のみ参照。
vtbl 22 HRESULT ProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount, DMO_OUTPUT_DATA_BUFFER* pOutputBuffers, DWORD* pdwStatus)
dwFlagsDWORDinDMO_PROCESS_OUTPUT_FLAGS を指定する。処理後にバッファを破棄するか等を制御する。
cOutputBufferCountDWORDinpOutputBuffers 配列の要素数を指定する。通常は出力ストリーム数に等しい。
pOutputBuffersDMO_OUTPUT_DATA_BUFFER*out出力先バッファ群を表す DMO_OUTPUT_DATA_BUFFER 構造体配列へのポインタ。
pdwStatusDWORD*out予約済みステータスを受け取る DWORD ポインタ。現状 0 が返る。
vtbl 23 HRESULT Lock(INT bLock)
bLockINTinDMO の内部状態をロックする場合は 0 以外、解除する場合は 0 を指定する。

HSP用 COM定義

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

出力引数:
#define global IID_IMediaObject "{D8AD0F58-5494-4102-97C5-EC798E59BCF4}"
#usecom global IMediaObject IID_IMediaObject "{}"
#comfunc global IMediaObject_GetStreamCount              3 var,var
#comfunc global IMediaObject_GetInputStreamInfo          4 int,var
#comfunc global IMediaObject_GetOutputStreamInfo         5 int,var
#comfunc global IMediaObject_GetInputType                6 int,int,var
#comfunc global IMediaObject_GetOutputType               7 int,int,var
#comfunc global IMediaObject_SetInputType                8 int,var,int
#comfunc global IMediaObject_SetOutputType               9 int,var,int
#comfunc global IMediaObject_GetInputCurrentType         10 int,var
#comfunc global IMediaObject_GetOutputCurrentType        11 int,var
#comfunc global IMediaObject_GetInputSizeInfo            12 int,var,var,var
#comfunc global IMediaObject_GetOutputSizeInfo           13 int,var,var
#comfunc global IMediaObject_GetInputMaxLatency          14 int,var
#comfunc global IMediaObject_SetInputMaxLatency          15 int,int64
#comfunc global IMediaObject_Flush                       16
#comfunc global IMediaObject_Discontinuity               17 int
#comfunc global IMediaObject_AllocateStreamingResources  18
#comfunc global IMediaObject_FreeStreamingResources      19
#comfunc global IMediaObject_GetInputStatus              20 int,var
#comfunc global IMediaObject_ProcessInput                21 int,sptr,int,int64,int64
#comfunc global IMediaObject_ProcessOutput               22 int,int,var,var
#comfunc global IMediaObject_Lock                        23 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。