IBasicVideo
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
IBasicVideo インターフェースは、宛先矩形やソース矩形などのビデオプロパティを設定します。
メソッド 32
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
get_AvgTimePerFrame メソッドは、連続するフレーム間の平均時間を取得します。
| pAvgTimePerFrame | DOUBLE* | out | 平均フレーム時間(秒単位)を受け取る REFTIME 型変数へのポインター。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
このメソッドは、オーサリング時のフレームあたりの時間を返します。この値は通常、ソースフィルターによって設定され、ソースフィルターはビデオストリーム自体の情報からこの値を取得します。この値は、ビデオがレンダリングされる実際のフレームあたりの時間と必ずしも等しいとは限りません。
再生中の実際のフレームレートを取得するには、IQualProp::get_AvgFrameRate を使用します。実際のフレームレートとオーサリング時のフレームレートの違いについて詳しくは、VIDEOINFOHEADER 構造体の解説セクションを参照してください。
get_BitRate メソッドは、ビデオストリームのおおよそのビットレートを取得します。
| pBitRate | INT* | out | おおよそのビットレート(ビット毎秒)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
get_BitErrorRate メソッドは、ビデオストリームのおおよそのビット誤り率を取得します。
| pBitErrorRate | INT* | out | エラー 1 件あたりのおおよそのビット数を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
get_VideoWidth メソッドは、ビデオのネイティブな幅を取得します。
| pVideoWidth | INT* | out | ビデオの幅(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
get_VideoHeight メソッドは、ビデオのネイティブな高さを取得します。
| pVideoHeight | INT* | out | 高さ(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
put_SourceLeft メソッドは、ソース矩形の x 座標を設定します。
| SourceLeft | INT | in | x 座標(ピクセル単位)を指定します。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 引数が無効です。 | |
| 成功しました。 | |
| ビデオレンダラーの入力ピンが接続されていません。 |
解説(Remarks)
このメソッドは、ソース矩形全体を左または右に移動します。ソース矩形の幅は変更しません。SourceLeft の値によって矩形の右端がビデオフレームの端を越える場合、このメソッドは E_INVALIDARG を返します。ビデオをクロップするには、put_SourceLeft を呼び出す前に put_SourceWidth を呼び出して幅を調整してください。(または、SetSourcePosition を呼び出してソース矩形全体を一度に設定します。)
get_SourceLeft メソッドは、ソース矩形の x 座標を取得します。
| pSourceLeft | INT* | out | x 座標(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
put_SourceWidth メソッドは、ソース矩形の幅を設定します。
| SourceWidth | INT | in | 幅(ピクセル単位)を指定します。 |
戻り値
HRESULT 値を返します。
get_SourceWidth メソッドは、ソース矩形の幅を取得します。
| pSourceWidth | INT* | out | 幅(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
put_SourceTop メソッドは、ソース矩形の y 座標を設定します。
| SourceTop | INT | in | y 座標(ピクセル単位)を指定します。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 引数が無効です。 | |
| 成功しました。 | |
| ビデオレンダラーの入力ピンが接続されていません。 |
解説(Remarks)
このメソッドは、ソース矩形全体を上または下に移動します。ソース矩形の高さは変更しません。SourceTop の値によって矩形の下端がビデオフレームの端を越える場合、このメソッドは E_INVALIDARG を返します。ビデオをクロップするには、put_SourceTop を呼び出す前に put_SourceHeight を呼び出して高さを調整してください。(または、SetSourcePosition を呼び出してソース矩形全体を一度に設定します。)
get_SourceTop メソッドは、ソース矩形の y 座標を取得します。
| pSourceTop | INT* | out | y 座標(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
put_SourceHeight メソッドは、ソース矩形の高さを設定します。
| SourceHeight | INT | in | 高さ(ピクセル単位)を指定します。 |
戻り値
HRESULT 値を返します。
get_SourceHeight メソッドは、ソース矩形の高さを取得します。
| pSourceHeight | INT* | out | 現在の高さ(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
put_DestinationLeft メソッドは、宛先矩形の x 座標を設定します。
| DestinationLeft | INT | in | x 座標(ピクセル単位)を指定します。 |
戻り値
HRESULT 値を返します。
get_DestinationLeft メソッドは、宛先矩形の x 座標を取得します。
| pDestinationLeft | INT* | out | x 座標(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
put_DestinationWidth メソッドは、宛先矩形の幅を設定します。
| DestinationWidth | INT | in | 幅(ピクセル単位)を指定します。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 引数が無効です。DestinationWidth は 0 より大きい値でなければなりません。 | |
| メソッドは成功しました。 | |
| ビデオレンダラーが接続されていません。 |
get_DestinationWidth メソッドは、宛先矩形の幅を取得します。
| pDestinationWidth | INT* | out | 幅(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
put_DestinationTop メソッドは、宛先矩形の y 座標を設定します。
| DestinationTop | INT | in | y 座標(ピクセル単位)を指定します。 |
戻り値
HRESULT 値を返します。
get_DestinationTop メソッドは、宛先矩形の y 座標を取得します。
| pDestinationTop | INT* | out | y 座標(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
put_DestinationHeight メソッドは、宛先矩形の高さを設定します。
| DestinationHeight | INT | in | 高さ(ピクセル単位)を指定します。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 引数が無効です。DestinationHeight は 0 より大きい値でなければなりません。 | |
| メソッドは成功しました。 | |
| ビデオレンダラーが接続されていません。 |
get_DestinationHeight メソッドは、宛先矩形の高さを取得します。
| pDestinationHeight | INT* | out | 高さ(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
SetSourcePosition メソッドは、ソース矩形を設定します。
| Left | INT | in | x 座標(ピクセル単位)を指定します。 |
| Top | INT | in | y 座標(ピクセル単位)を指定します。 |
| Width | INT | in | 幅(ピクセル単位)を指定します。 |
| Height | INT | in | 高さ(ピクセル単位)を指定します。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
このメソッドは、IBasicVideo::put_SourceLeft、IBasicVideo::put_SourceTop、IBasicVideo::put_SourceWidth、および IBasicVideo::put_SourceHeight の各メソッドを個別に呼び出すのと同じ効果があります。
この座標を設定しても、宛先矩形の高さには影響しません。
GetSourcePosition メソッドは、ソース矩形の位置を取得します。
| pLeft | INT* | out | x 座標(ピクセル単位)を受け取る変数へのポインター。 |
| pTop | INT* | out | y 座標(ピクセル単位)を受け取る変数へのポインター。 |
| pWidth | INT* | out | 幅(ピクセル単位)を受け取る変数へのポインター。 |
| pHeight | INT* | out | 高さ(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
このメソッドは、IBasicVideo::get_SourceLeft、IBasicVideo::get_SourceTop、IBasicVideo::get_SourceWidth、および IBasicVideo::get_SourceHeight の各メソッドを個別に呼び出すのと同じ効果があります。
SetDefaultSourcePosition メソッドは、既定のソース矩形に戻します。このメソッドを呼び出すと、ビデオレンダラーはクロップせずにビデオ画像全体を使用します。
戻り値
HRESULT 値を返します。
SetDestinationPosition メソッドは、宛先矩形を設定します。
| Left | INT | in | x 座標(ピクセル単位)を指定します。 |
| Top | INT | in | y 座標(ピクセル単位)を指定します。 |
| Width | INT | in | 幅(ピクセル単位)を指定します。 |
| Height | INT | in | 高さ(ピクセル単位)を指定します。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 引数が無効です。Width と Height は 0 より大きい値でなければなりません。 | |
| メソッドは成功しました。 | |
| ビデオレンダラーが接続されていません。 |
解説(Remarks)
このメソッドは、IBasicVideo::put_DestinationLeft、IBasicVideo::put_DestinationTop、IBasicVideo::put_DestinationWidth、および IBasicVideo::put_DestinationHeight の各メソッドを個別に呼び出すのと同じ効果があります。
GetDestinationPosition メソッドは、宛先矩形の位置を取得します。
| pLeft | INT* | out | x 座標(ピクセル単位)を受け取る変数へのポインター。 |
| pTop | INT* | out | y 座標(ピクセル単位)を受け取る変数へのポインター。 |
| pWidth | INT* | out | 幅(ピクセル単位)を受け取る変数へのポインター。 |
| pHeight | INT* | out | 高さ(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
このメソッドは、IBasicVideo::get_DestinationLeft、IBasicVideo::get_DestinationTop、IBasicVideo::get_DestinationWidth、および IBasicVideo::get_DestinationHeight の各メソッドを個別に呼び出すのと同じ効果があります。
SetDefaultDestinationPosition メソッドは、既定の宛先矩形に戻します。このメソッドを呼び出すと、ビデオレンダラーは再生にウィンドウ全体を使用します。
戻り値
HRESULT 値を返します。
GetVideoSize メソッドは、ネイティブなビデオの寸法を取得します。
| pWidth | INT* | out | ビデオ画像の幅(ピクセル単位)を受け取る変数へのポインター。 |
| pHeight | INT* | out | ビデオ画像の高さ(ピクセル単位)を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。
GetVideoPaletteEntries メソッドは、ビデオのパレットカラーを取得します。
| StartIndex | INT | in | パレットの開始インデックス。 |
| Entries | INT | in | 取得するパレットエントリの数。 |
| pRetrieved | INT* | out | pPallette に返されたエントリの数を受け取る変数へのポインター。 |
| pPalette | INT* | out | Entries のサイズを持つ PALETTEENTRY 構造体の配列へのポインター。ポインターを long ポインター型にキャストします。このメソッドが配列を埋めます。 |
戻り値
HRESULT 値を返します。指定できる値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| NULL ポインター引数です。 | |
| 利用可能なパレットがありません。 | |
| ビデオレンダラーの入力ピンが接続されていません。 |
GetCurrentImage メソッドは、レンダラーで待機している現在の画像を取得します。
| pBufferSize | INT* | inout | 呼び出し側が渡すバッファーのサイズを格納する変数へのポインター。pDIBImage が NULL の場合、このパラメーターは必要なバッファーサイズを受け取ります。 |
| pDIBImage | INT* | out | 完全な画像がデバイス独立ビットマップ(DIB)形式で格納されるバッファーへのポインター。ポインターを long ポインター型にキャストします。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
Video Renderer フィルターと Video Mixing Renderer(VMR)では、このメソッドの実装が異なります。
Video Renderer のみ:
レンダラーが DirectDraw アクセラレーションを使用している場合、このメソッドは失敗します。残念ながらこれはエンドユーザーのハードウェア構成に依存するため、実際にはこのメソッドは信頼できません。このメソッドを呼び出す前に Video Renderer を一時停止してください。そうしないと、このメソッドは VFW_E_NOT_PAUSED を返します。IMediaControl::GetState を呼び出して、一時停止操作が完了したことを確認してください。一時停止操作が完了していない場合、GetCurrentImage メソッドは E_UNEXPECTED を返します。ソースフィルターが利用可能なデータの内容によっては、ビデオレンダラーがこの要求に応じることは保証されません。利用可能な画像がない場合は、E_FAIL を返します。
Video Mixing Renderer のみ:
このメソッドは、VMR が DirectDraw アクセラレーションを使用しているかどうかにかかわらず、また現在のグラフの状態(実行中、停止中、または一時停止中)にかかわらず信頼できます。Video Renderer および Video Mixing Renderer:
画像を保持するために必要なバッファーサイズを取得するには、pDIBImage パラメーターに NULL ポインターを指定してこのメソッドを呼び出します。このメソッドは、必要なバッファーサイズを pBufferSize パラメーターに返します。そのサイズのバッファーを割り当て、pDIBImage にそのバッファーを指定して再度メソッドを呼び出します。2 回目の呼び出しでは、pBufferSize を使用してバッファーサイズを指定します。バッファーが小さすぎて完全な画像を保持できない場合、このメソッドは E_OUTOFMEMORY を返します。メソッドが成功すると、バッファーには BITMAPINFOHEADER 構造体を含む DIB 画像全体と、Win32 の BITMAPINFO 構造体で定義されるパレットエントリおよびビットマスクが格納されます。画像の形式はソースフィルターが提供する型に依存し、事前に指定することはできません。
IsUsingDefaultSource メソッドは、レンダラーが既定のソース矩形を使用しているかどうかを問い合わせます。
戻り値
IsUsingDefaultDestination メソッドは、レンダラーが既定の宛先矩形を使用しているかどうかを問い合わせます。
戻り値
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IBasicVideo "{56A868B5-0AD4-11CE-B03A-0020AF0BA770}" #usecom global IBasicVideo IID_IBasicVideo "{}" #comfunc global IBasicVideo_get_AvgTimePerFrame 7 var #comfunc global IBasicVideo_get_BitRate 8 var #comfunc global IBasicVideo_get_BitErrorRate 9 var #comfunc global IBasicVideo_get_VideoWidth 10 var #comfunc global IBasicVideo_get_VideoHeight 11 var #comfunc global IBasicVideo_put_SourceLeft 12 int #comfunc global IBasicVideo_get_SourceLeft 13 var #comfunc global IBasicVideo_put_SourceWidth 14 int #comfunc global IBasicVideo_get_SourceWidth 15 var #comfunc global IBasicVideo_put_SourceTop 16 int #comfunc global IBasicVideo_get_SourceTop 17 var #comfunc global IBasicVideo_put_SourceHeight 18 int #comfunc global IBasicVideo_get_SourceHeight 19 var #comfunc global IBasicVideo_put_DestinationLeft 20 int #comfunc global IBasicVideo_get_DestinationLeft 21 var #comfunc global IBasicVideo_put_DestinationWidth 22 int #comfunc global IBasicVideo_get_DestinationWidth 23 var #comfunc global IBasicVideo_put_DestinationTop 24 int #comfunc global IBasicVideo_get_DestinationTop 25 var #comfunc global IBasicVideo_put_DestinationHeight 26 int #comfunc global IBasicVideo_get_DestinationHeight 27 var #comfunc global IBasicVideo_SetSourcePosition 28 int,int,int,int #comfunc global IBasicVideo_GetSourcePosition 29 var,var,var,var #comfunc global IBasicVideo_SetDefaultSourcePosition 30 #comfunc global IBasicVideo_SetDestinationPosition 31 int,int,int,int #comfunc global IBasicVideo_GetDestinationPosition 32 var,var,var,var #comfunc global IBasicVideo_SetDefaultDestinationPosition 33 #comfunc global IBasicVideo_GetVideoSize 34 var,var #comfunc global IBasicVideo_GetVideoPaletteEntries 35 int,int,var,var #comfunc global IBasicVideo_GetCurrentImage 36 var,var #comfunc global IBasicVideo_IsUsingDefaultSource 37 #comfunc global IBasicVideo_IsUsingDefaultDestination 38 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IBasicVideo "{56A868B5-0AD4-11CE-B03A-0020AF0BA770}" #usecom global IBasicVideo IID_IBasicVideo "{}" #comfunc global IBasicVideo_get_AvgTimePerFrame 7 sptr #comfunc global IBasicVideo_get_BitRate 8 sptr #comfunc global IBasicVideo_get_BitErrorRate 9 sptr #comfunc global IBasicVideo_get_VideoWidth 10 sptr #comfunc global IBasicVideo_get_VideoHeight 11 sptr #comfunc global IBasicVideo_put_SourceLeft 12 int #comfunc global IBasicVideo_get_SourceLeft 13 sptr #comfunc global IBasicVideo_put_SourceWidth 14 int #comfunc global IBasicVideo_get_SourceWidth 15 sptr #comfunc global IBasicVideo_put_SourceTop 16 int #comfunc global IBasicVideo_get_SourceTop 17 sptr #comfunc global IBasicVideo_put_SourceHeight 18 int #comfunc global IBasicVideo_get_SourceHeight 19 sptr #comfunc global IBasicVideo_put_DestinationLeft 20 int #comfunc global IBasicVideo_get_DestinationLeft 21 sptr #comfunc global IBasicVideo_put_DestinationWidth 22 int #comfunc global IBasicVideo_get_DestinationWidth 23 sptr #comfunc global IBasicVideo_put_DestinationTop 24 int #comfunc global IBasicVideo_get_DestinationTop 25 sptr #comfunc global IBasicVideo_put_DestinationHeight 26 int #comfunc global IBasicVideo_get_DestinationHeight 27 sptr #comfunc global IBasicVideo_SetSourcePosition 28 int,int,int,int #comfunc global IBasicVideo_GetSourcePosition 29 sptr,sptr,sptr,sptr #comfunc global IBasicVideo_SetDefaultSourcePosition 30 #comfunc global IBasicVideo_SetDestinationPosition 31 int,int,int,int #comfunc global IBasicVideo_GetDestinationPosition 32 sptr,sptr,sptr,sptr #comfunc global IBasicVideo_SetDefaultDestinationPosition 33 #comfunc global IBasicVideo_GetVideoSize 34 sptr,sptr #comfunc global IBasicVideo_GetVideoPaletteEntries 35 int,int,sptr,sptr #comfunc global IBasicVideo_GetCurrentImage 36 sptr,sptr #comfunc global IBasicVideo_IsUsingDefaultSource 37 #comfunc global IBasicVideo_IsUsingDefaultDestination 38 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。