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

IBasicVideo

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID56a868b5-0ad4-11ce-b03a-0020af0ba770継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

IBasicVideo インターフェースは、宛先矩形やソース矩形などのビデオプロパティを設定します。

メソッド 32

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_AvgTimePerFrame(DOUBLE* pAvgTimePerFrame)

get_AvgTimePerFrame メソッドは、連続するフレーム間の平均時間を取得します。

pAvgTimePerFrameDOUBLE*out平均フレーム時間(秒単位)を受け取る REFTIME 型変数へのポインター。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、オーサリング時のフレームあたりの時間を返します。この値は通常、ソースフィルターによって設定され、ソースフィルターはビデオストリーム自体の情報からこの値を取得します。この値は、ビデオがレンダリングされる実際のフレームあたりの時間と必ずしも等しいとは限りません。

再生中の実際のフレームレートを取得するには、IQualProp::get_AvgFrameRate を使用します。実際のフレームレートとオーサリング時のフレームレートの違いについて詳しくは、VIDEOINFOHEADER 構造体の解説セクションを参照してください。

vtbl 8 HRESULT get_BitRate(INT* pBitRate)

get_BitRate メソッドは、ビデオストリームのおおよそのビットレートを取得します。

pBitRateINT*outおおよそのビットレート(ビット毎秒)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 9 HRESULT get_BitErrorRate(INT* pBitErrorRate)

get_BitErrorRate メソッドは、ビデオストリームのおおよそのビット誤り率を取得します。

pBitErrorRateINT*outエラー 1 件あたりのおおよそのビット数を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 10 HRESULT get_VideoWidth(INT* pVideoWidth)

get_VideoWidth メソッドは、ビデオのネイティブな幅を取得します。

pVideoWidthINT*outビデオの幅(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 11 HRESULT get_VideoHeight(INT* pVideoHeight)

get_VideoHeight メソッドは、ビデオのネイティブな高さを取得します。

pVideoHeightINT*out高さ(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 12 HRESULT put_SourceLeft(INT SourceLeft)

put_SourceLeft メソッドは、ソース矩形の x 座標を設定します。

SourceLeftINTinx 座標(ピクセル単位)を指定します。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_INVALIDARG
引数が無効です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーの入力ピンが接続されていません。

解説(Remarks)

このメソッドは、ソース矩形全体を左または右に移動します。ソース矩形の幅は変更しません。SourceLeft の値によって矩形の右端がビデオフレームの端を越える場合、このメソッドは E_INVALIDARG を返します。ビデオをクロップするには、put_SourceLeft を呼び出す前に put_SourceWidth を呼び出して幅を調整してください。(または、SetSourcePosition を呼び出してソース矩形全体を一度に設定します。)

vtbl 13 HRESULT get_SourceLeft(INT* pSourceLeft)

get_SourceLeft メソッドは、ソース矩形の x 座標を取得します。

pSourceLeftINT*outx 座標(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 14 HRESULT put_SourceWidth(INT SourceWidth)

put_SourceWidth メソッドは、ソース矩形の幅を設定します。

SourceWidthINTin幅(ピクセル単位)を指定します。

戻り値

HRESULT 値を返します。

vtbl 15 HRESULT get_SourceWidth(INT* pSourceWidth)

get_SourceWidth メソッドは、ソース矩形の幅を取得します。

pSourceWidthINT*out幅(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 16 HRESULT put_SourceTop(INT SourceTop)

put_SourceTop メソッドは、ソース矩形の y 座標を設定します。

SourceTopINTiny 座標(ピクセル単位)を指定します。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_INVALIDARG
引数が無効です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーの入力ピンが接続されていません。

解説(Remarks)

このメソッドは、ソース矩形全体を上または下に移動します。ソース矩形の高さは変更しません。SourceTop の値によって矩形の下端がビデオフレームの端を越える場合、このメソッドは E_INVALIDARG を返します。ビデオをクロップするには、put_SourceTop を呼び出す前に put_SourceHeight を呼び出して高さを調整してください。(または、SetSourcePosition を呼び出してソース矩形全体を一度に設定します。)

vtbl 17 HRESULT get_SourceTop(INT* pSourceTop)

get_SourceTop メソッドは、ソース矩形の y 座標を取得します。

pSourceTopINT*outy 座標(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 18 HRESULT put_SourceHeight(INT SourceHeight)

put_SourceHeight メソッドは、ソース矩形の高さを設定します。

SourceHeightINTin高さ(ピクセル単位)を指定します。

戻り値

HRESULT 値を返します。

vtbl 19 HRESULT get_SourceHeight(INT* pSourceHeight)

get_SourceHeight メソッドは、ソース矩形の高さを取得します。

pSourceHeightINT*out現在の高さ(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 20 HRESULT put_DestinationLeft(INT DestinationLeft)

put_DestinationLeft メソッドは、宛先矩形の x 座標を設定します。

DestinationLeftINTinx 座標(ピクセル単位)を指定します。

戻り値

HRESULT 値を返します。

vtbl 21 HRESULT get_DestinationLeft(INT* pDestinationLeft)

get_DestinationLeft メソッドは、宛先矩形の x 座標を取得します。

pDestinationLeftINT*outx 座標(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 22 HRESULT put_DestinationWidth(INT DestinationWidth)

put_DestinationWidth メソッドは、宛先矩形の幅を設定します。

DestinationWidthINTin幅(ピクセル単位)を指定します。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_INVALIDARG
引数が無効です。DestinationWidth は 0 より大きい値でなければなりません。
S_OK
メソッドは成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーが接続されていません。
vtbl 23 HRESULT get_DestinationWidth(INT* pDestinationWidth)

get_DestinationWidth メソッドは、宛先矩形の幅を取得します。

pDestinationWidthINT*out幅(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 24 HRESULT put_DestinationTop(INT DestinationTop)

put_DestinationTop メソッドは、宛先矩形の y 座標を設定します。

DestinationTopINTiny 座標(ピクセル単位)を指定します。

戻り値

HRESULT 値を返します。

vtbl 25 HRESULT get_DestinationTop(INT* pDestinationTop)

get_DestinationTop メソッドは、宛先矩形の y 座標を取得します。

pDestinationTopINT*outy 座標(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 26 HRESULT put_DestinationHeight(INT DestinationHeight)

put_DestinationHeight メソッドは、宛先矩形の高さを設定します。

DestinationHeightINTin高さ(ピクセル単位)を指定します。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_INVALIDARG
引数が無効です。DestinationHeight は 0 より大きい値でなければなりません。
S_OK
メソッドは成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーが接続されていません。
vtbl 27 HRESULT get_DestinationHeight(INT* pDestinationHeight)

get_DestinationHeight メソッドは、宛先矩形の高さを取得します。

pDestinationHeightINT*out高さ(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 28 HRESULT SetSourcePosition(INT Left, INT Top, INT Width, INT Height)

SetSourcePosition メソッドは、ソース矩形を設定します。

LeftINTinx 座標(ピクセル単位)を指定します。
TopINTiny 座標(ピクセル単位)を指定します。
WidthINTin幅(ピクセル単位)を指定します。
HeightINTin高さ(ピクセル単位)を指定します。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、IBasicVideo::put_SourceLeftIBasicVideo::put_SourceTopIBasicVideo::put_SourceWidth、および IBasicVideo::put_SourceHeight の各メソッドを個別に呼び出すのと同じ効果があります。

この座標を設定しても、宛先矩形の高さには影響しません。

vtbl 29 HRESULT GetSourcePosition(INT* pLeft, INT* pTop, INT* pWidth, INT* pHeight)

GetSourcePosition メソッドは、ソース矩形の位置を取得します。

pLeftINT*outx 座標(ピクセル単位)を受け取る変数へのポインター。
pTopINT*outy 座標(ピクセル単位)を受け取る変数へのポインター。
pWidthINT*out幅(ピクセル単位)を受け取る変数へのポインター。
pHeightINT*out高さ(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、IBasicVideo::get_SourceLeftIBasicVideo::get_SourceTopIBasicVideo::get_SourceWidth、および IBasicVideo::get_SourceHeight の各メソッドを個別に呼び出すのと同じ効果があります。

vtbl 30 HRESULT SetDefaultSourcePosition()

SetDefaultSourcePosition メソッドは、既定のソース矩形に戻します。このメソッドを呼び出すと、ビデオレンダラーはクロップせずにビデオ画像全体を使用します。

戻り値

HRESULT 値を返します。

vtbl 31 HRESULT SetDestinationPosition(INT Left, INT Top, INT Width, INT Height)

SetDestinationPosition メソッドは、宛先矩形を設定します。

LeftINTinx 座標(ピクセル単位)を指定します。
TopINTiny 座標(ピクセル単位)を指定します。
WidthINTin幅(ピクセル単位)を指定します。
HeightINTin高さ(ピクセル単位)を指定します。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_INVALIDARG
引数が無効です。WidthHeight は 0 より大きい値でなければなりません。
S_OK
メソッドは成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーが接続されていません。

解説(Remarks)

このメソッドは、IBasicVideo::put_DestinationLeftIBasicVideo::put_DestinationTopIBasicVideo::put_DestinationWidth、および IBasicVideo::put_DestinationHeight の各メソッドを個別に呼び出すのと同じ効果があります。

vtbl 32 HRESULT GetDestinationPosition(INT* pLeft, INT* pTop, INT* pWidth, INT* pHeight)

GetDestinationPosition メソッドは、宛先矩形の位置を取得します。

pLeftINT*outx 座標(ピクセル単位)を受け取る変数へのポインター。
pTopINT*outy 座標(ピクセル単位)を受け取る変数へのポインター。
pWidthINT*out幅(ピクセル単位)を受け取る変数へのポインター。
pHeightINT*out高さ(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、IBasicVideo::get_DestinationLeftIBasicVideo::get_DestinationTopIBasicVideo::get_DestinationWidth、および IBasicVideo::get_DestinationHeight の各メソッドを個別に呼び出すのと同じ効果があります。

vtbl 33 HRESULT SetDefaultDestinationPosition()

SetDefaultDestinationPosition メソッドは、既定の宛先矩形に戻します。このメソッドを呼び出すと、ビデオレンダラーは再生にウィンドウ全体を使用します。

戻り値

HRESULT 値を返します。

vtbl 34 HRESULT GetVideoSize(INT* pWidth, INT* pHeight)

GetVideoSize メソッドは、ネイティブなビデオの寸法を取得します。

pWidthINT*outビデオ画像の幅(ピクセル単位)を受け取る変数へのポインター。
pHeightINT*outビデオ画像の高さ(ピクセル単位)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

vtbl 35 HRESULT GetVideoPaletteEntries(INT StartIndex, INT Entries, INT* pRetrieved, INT* pPalette)

GetVideoPaletteEntries メソッドは、ビデオのパレットカラーを取得します。

StartIndexINTinパレットの開始インデックス。
EntriesINTin取得するパレットエントリの数。
pRetrievedINT*outpPallette に返されたエントリの数を受け取る変数へのポインター。
pPaletteINT*outEntries のサイズを持つ PALETTEENTRY 構造体の配列へのポインター。ポインターを long ポインター型にキャストします。このメソッドが配列を埋めます。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
S_OK
成功しました。
E_POINTER
NULL ポインター引数です。
VFW_E_NO_PALETTE_AVAILABLE
利用可能なパレットがありません。
VFW_E_NOT_CONNECTED
ビデオレンダラーの入力ピンが接続されていません。
vtbl 36 HRESULT GetCurrentImage(INT* pBufferSize, INT* pDIBImage)

GetCurrentImage メソッドは、レンダラーで待機している現在の画像を取得します。

pBufferSizeINT*inout呼び出し側が渡すバッファーのサイズを格納する変数へのポインター。pDIBImageNULL の場合、このパラメーターは必要なバッファーサイズを受け取ります。
pDIBImageINT*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 構造体で定義されるパレットエントリおよびビットマスクが格納されます。画像の形式はソースフィルターが提供する型に依存し、事前に指定することはできません。

vtbl 37 HRESULT IsUsingDefaultSource()

IsUsingDefaultSource メソッドは、レンダラーが既定のソース矩形を使用しているかどうかを問い合わせます。

戻り値

レンダラーが既定のソース矩形を使用している場合は S_OK を、それ以外の場合は S_FALSE を返します。

vtbl 38 HRESULT IsUsingDefaultDestination()

IsUsingDefaultDestination メソッドは、レンダラーが既定の宛先矩形を使用しているかどうかを問い合わせます。

戻り値

レンダラーが既定の宛先矩形を使用している場合は S_OK を、それ以外の場合は S_FALSE を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 不要)。