ホーム › Media.DxMediaObjects › IMediaObject
IMediaObject
COMメソッド 21
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| pcInputStreams | DWORD* | out | DMO がサポートする入力ストリーム数を受け取る DWORD ポインタ。 |
| pcOutputStreams | DWORD* | out | DMO がサポートする出力ストリーム数を受け取る DWORD ポインタ。 |
| dwInputStreamIndex | DWORD | in | 情報を取得する入力ストリームの 0 始まりインデックスを指定する。 |
| pdwFlags | DWORD* | out | DMO_INPUT_STREAM_INFO_FLAGS の組み合わせを受け取る DWORD ポインタ。ストリームの特性を示す。 |
| dwOutputStreamIndex | DWORD | in | 情報を取得する出力ストリームの 0 始まりインデックスを指定する。 |
| pdwFlags | DWORD* | out | DMO_OUTPUT_STREAM_INFO_FLAGS の組み合わせを受け取る DWORD ポインタ。 |
vtbl 6 HRESULT GetInputType(DWORD dwInputStreamIndex, DWORD dwTypeIndex, DMO_MEDIA_TYPE* pmt)
| dwInputStreamIndex | DWORD | in | 対象入力ストリームの 0 始まりインデックスを指定する。 |
| dwTypeIndex | DWORD | in | 列挙する優先メディアタイプの 0 始まりインデックスを指定する。 |
| pmt | DMO_MEDIA_TYPE* | outoptional | 取得したメディアタイプを受け取る DMO_MEDIA_TYPE 構造体ポインタ。NULL で存在確認のみ可。 |
vtbl 7 HRESULT GetOutputType(DWORD dwOutputStreamIndex, DWORD dwTypeIndex, DMO_MEDIA_TYPE* pmt)
| dwOutputStreamIndex | DWORD | in | 対象出力ストリームの 0 始まりインデックスを指定する。 |
| dwTypeIndex | DWORD | in | 列挙する優先メディアタイプの 0 始まりインデックスを指定する。 |
| pmt | DMO_MEDIA_TYPE* | outoptional | 取得したメディアタイプを受け取る DMO_MEDIA_TYPE 構造体ポインタ。NULL で存在確認のみ可。 |
vtbl 8 HRESULT SetInputType(DWORD dwInputStreamIndex, DMO_MEDIA_TYPE* pmt, DWORD dwFlags)
| dwInputStreamIndex | DWORD | in | 設定対象の入力ストリームの 0 始まりインデックスを指定する。 |
| pmt | DMO_MEDIA_TYPE* | inoptional | 設定するメディアタイプを表す DMO_MEDIA_TYPE 構造体ポインタ。NULL でクリア。 |
| dwFlags | DWORD | in | DMO_SET_TYPE_FLAGS の組み合わせを指定する。テスト確認やクリアの指定が可能。 |
vtbl 9 HRESULT SetOutputType(DWORD dwOutputStreamIndex, DMO_MEDIA_TYPE* pmt, DWORD dwFlags)
| dwOutputStreamIndex | DWORD | in | 設定対象の出力ストリームの 0 始まりインデックスを指定する。 |
| pmt | DMO_MEDIA_TYPE* | inoptional | 設定するメディアタイプを表す DMO_MEDIA_TYPE 構造体ポインタ。NULL でクリア。 |
| dwFlags | DWORD | in | DMO_SET_TYPE_FLAGS の組み合わせを指定する。テスト確認やクリアの指定が可能。 |
vtbl 10 HRESULT GetInputCurrentType(DWORD dwInputStreamIndex, DMO_MEDIA_TYPE* pmt)
| dwInputStreamIndex | DWORD | in | 対象入力ストリームの 0 始まりインデックスを指定する。 |
| pmt | DMO_MEDIA_TYPE* | out | 現在設定中のメディアタイプを受け取る DMO_MEDIA_TYPE 構造体ポインタ。 |
vtbl 11 HRESULT GetOutputCurrentType(DWORD dwOutputStreamIndex, DMO_MEDIA_TYPE* pmt)
| dwOutputStreamIndex | DWORD | in | 対象出力ストリームの 0 始まりインデックスを指定する。 |
| pmt | DMO_MEDIA_TYPE* | out | 現在設定中のメディアタイプを受け取る DMO_MEDIA_TYPE 構造体ポインタ。 |
vtbl 12 HRESULT GetInputSizeInfo(DWORD dwInputStreamIndex, DWORD* pcbSize, DWORD* pcbMaxLookahead, DWORD* pcbAlignment)
| dwInputStreamIndex | DWORD | in | 対象入力ストリームの 0 始まりインデックスを指定する。 |
| pcbSize | DWORD* | out | 1 サンプルあたりの最小バッファサイズをバイト単位で受け取る DWORD ポインタ。 |
| pcbMaxLookahead | DWORD* | out | 先読みに必要な最大バイト数を受け取る DWORD ポインタ。 |
| pcbAlignment | DWORD* | out | バッファに要求されるメモリ境界(アライメント)をバイト単位で受け取る DWORD ポインタ。 |
| dwOutputStreamIndex | DWORD | in | 対象出力ストリームの 0 始まりインデックスを指定する。 |
| pcbSize | DWORD* | out | 1 サンプルあたりの最小バッファサイズをバイト単位で受け取る DWORD ポインタ。 |
| pcbAlignment | DWORD* | out | バッファに要求されるメモリ境界をバイト単位で受け取る DWORD ポインタ。 |
| dwInputStreamIndex | DWORD | in | 対象入力ストリームの 0 始まりインデックスを指定する。 |
| prtMaxLatency | LONGLONG* | out | 許容される最大レイテンシを 100ns 単位の基準時間で受け取る LONGLONG ポインタ。 |
| dwInputStreamIndex | DWORD | in | 設定対象の入力ストリームの 0 始まりインデックスを指定する。 |
| rtMaxLatency | LONGLONG | in | 設定する最大レイテンシを 100ns 単位の基準時間で指定する。 |
vtbl 16 HRESULT Flush()
| dwInputStreamIndex | DWORD | in | データの不連続(途切れ)を通知する入力ストリームの 0 始まりインデックスを指定する。 |
vtbl 18 HRESULT AllocateStreamingResources()
vtbl 19 HRESULT FreeStreamingResources()
| dwInputStreamIndex | DWORD | in | 状態を問い合わせる入力ストリームの 0 始まりインデックスを指定する。 |
| dwFlags | DWORD* | out | DMO_INPUT_STATUS_FLAGS を受け取る DWORD ポインタ。データ受付可否を示す。 |
vtbl 21 HRESULT ProcessInput(DWORD dwInputStreamIndex, IMediaBuffer* pBuffer, DWORD dwFlags, LONGLONG rtTimestamp, LONGLONG rtTimelength)
| dwInputStreamIndex | DWORD | in | データを投入する入力ストリームの 0 始まりインデックスを指定する。 |
| pBuffer | IMediaBuffer* | in | 入力データを保持する IMediaBuffer へのポインタを指定する。 |
| dwFlags | DWORD | in | DMO_INPUT_DATA_BUFFER_FLAGS の組み合わせを指定する。タイムスタンプ有効等を示す。 |
| rtTimestamp | LONGLONG | in | データ先頭のタイムスタンプを 100ns 単位の基準時間で指定する。フラグ有効時のみ参照。 |
| rtTimelength | LONGLONG | in | データの継続時間を 100ns 単位の基準時間で指定する。フラグ有効時のみ参照。 |
vtbl 22 HRESULT ProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount, DMO_OUTPUT_DATA_BUFFER* pOutputBuffers, DWORD* pdwStatus)
| dwFlags | DWORD | in | DMO_PROCESS_OUTPUT_FLAGS を指定する。処理後にバッファを破棄するか等を制御する。 |
| cOutputBufferCount | DWORD | in | pOutputBuffers 配列の要素数を指定する。通常は出力ストリーム数に等しい。 |
| pOutputBuffers | DMO_OUTPUT_DATA_BUFFER* | out | 出力先バッファ群を表す DMO_OUTPUT_DATA_BUFFER 構造体配列へのポインタ。 |
| pdwStatus | DWORD* | out | 予約済みステータスを受け取る DWORD ポインタ。現状 0 が返る。 |
| bLock | INT | in | DMO の内部状態をロックする場合は 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 指定が可能。#define global IID_IMediaObject "{D8AD0F58-5494-4102-97C5-EC798E59BCF4}" #usecom global IMediaObject IID_IMediaObject "{}" #comfunc global IMediaObject_GetStreamCount 3 sptr,sptr #comfunc global IMediaObject_GetInputStreamInfo 4 int,sptr #comfunc global IMediaObject_GetOutputStreamInfo 5 int,sptr #comfunc global IMediaObject_GetInputType 6 int,int,sptr #comfunc global IMediaObject_GetOutputType 7 int,int,sptr #comfunc global IMediaObject_SetInputType 8 int,sptr,int #comfunc global IMediaObject_SetOutputType 9 int,sptr,int #comfunc global IMediaObject_GetInputCurrentType 10 int,sptr #comfunc global IMediaObject_GetOutputCurrentType 11 int,sptr #comfunc global IMediaObject_GetInputSizeInfo 12 int,sptr,sptr,sptr #comfunc global IMediaObject_GetOutputSizeInfo 13 int,sptr,sptr #comfunc global IMediaObject_GetInputMaxLatency 14 int,sptr #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,sptr #comfunc global IMediaObject_ProcessInput 21 int,sptr,int,int64,int64 #comfunc global IMediaObject_ProcessOutput 22 int,int,sptr,sptr #comfunc global IMediaObject_Lock 23 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。