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

IVMRWindowlessControl9

COM
IID8f537d09-f85e-4414-b23b-502e54c79927継承元IUnknown自前メソッド開始 vtbl3

メソッド 13

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

vtbl 3 HRESULT GetNativeVideoSize(INT* lpWidth, INT* lpHeight, INT* lpARWidth, INT* lpARHeight)
lpWidthINT*outネイティブ映像の幅(ピクセル)を受け取るINTへのポインタ。
lpHeightINT*outネイティブ映像の高さ(ピクセル)を受け取るINTへのポインタ。
lpARWidthINT*outアスペクト比の幅成分を受け取るINTへのポインタ。NULL可。
lpARHeightINT*outアスペクト比の高さ成分を受け取るINTへのポインタ。NULL可。
vtbl 4 HRESULT GetMinIdealVideoSize(INT* lpWidth, INT* lpHeight)
lpWidthINT*out高品質に表示できる最小理想幅を受け取るINTへのポインタ。
lpHeightINT*out高品質に表示できる最小理想高さを受け取るINTへのポインタ。
vtbl 5 HRESULT GetMaxIdealVideoSize(INT* lpWidth, INT* lpHeight)
lpWidthINT*out高品質に表示できる最大理想幅を受け取るINTへのポインタ。
lpHeightINT*out高品質に表示できる最大理想高さを受け取るINTへのポインタ。
vtbl 6 HRESULT SetVideoPosition(RECT* lpSRCRect, RECT* lpDSTRect)
lpSRCRectRECT*in映像のうち表示するソース矩形を指定するRECTへのポインタ。全体表示ならNULL可。
lpDSTRectRECT*inクリッピングウィンドウ内の描画先矩形を指定するRECTへのポインタ。NULL可。
vtbl 7 HRESULT GetVideoPosition(RECT* lpSRCRect, RECT* lpDSTRect)
lpSRCRectRECT*out現在のソース矩形を受け取るRECTへのポインタ。
lpDSTRectRECT*out現在の描画先矩形を受け取るRECTへのポインタ。
vtbl 8 HRESULT GetAspectRatioMode(DWORD* lpAspectRatioMode)
lpAspectRatioModeDWORD*out現在のアスペクト比保持モード(VMR9_ARMODE)を受け取るDWORDへのポインタ。
vtbl 9 HRESULT SetAspectRatioMode(DWORD AspectRatioMode)
AspectRatioModeDWORDin適用するアスペクト比保持モード。VMR9ARMODE_NONEまたはLETTER_BOX。
vtbl 10 HRESULT SetVideoClippingWindow(HWND hwnd)
hwndHWNDin映像を表示するクリッピング対象ウィンドウのHWNDハンドル。
vtbl 11 HRESULT RepaintVideo(HWND hwnd, HDC hdc)
hwndHWNDin再描画を要求するウィンドウのHWNDハンドル。
hdcHDCin再描画に使用するデバイスコンテキストのHDCハンドル。
vtbl 12 HRESULT DisplayModeChanged()
vtbl 13 HRESULT GetCurrentImage(BYTE** lpDib)
lpDibBYTE**out現在のフレームをDIB形式で受け取るBYTEバッファへの出力ポインタ。CoTaskMemFreeで解放する。
vtbl 14 HRESULT SetBorderColor(COLORREF Clr)
ClrCOLORREFinレターボックス余白に使う境界色をCOLORREF(RGB)で指定する。
vtbl 15 HRESULT GetBorderColor(COLORREF* lpClr)
lpClrCOLORREF*out現在の境界色をCOLORREFで受け取るポインタ。

HSP用 COM定義

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

出力引数:
#define global IID_IVMRWindowlessControl9 "{8F537D09-F85E-4414-B23B-502E54C79927}"
#usecom global IVMRWindowlessControl9 IID_IVMRWindowlessControl9 "{}"
#comfunc global IVMRWindowlessControl9_GetNativeVideoSize      3 var,var,var,var
#comfunc global IVMRWindowlessControl9_GetMinIdealVideoSize    4 var,var
#comfunc global IVMRWindowlessControl9_GetMaxIdealVideoSize    5 var,var
#comfunc global IVMRWindowlessControl9_SetVideoPosition        6 var,var
#comfunc global IVMRWindowlessControl9_GetVideoPosition        7 var,var
#comfunc global IVMRWindowlessControl9_GetAspectRatioMode      8 var
#comfunc global IVMRWindowlessControl9_SetAspectRatioMode      9 int
#comfunc global IVMRWindowlessControl9_SetVideoClippingWindow  10 sptr
#comfunc global IVMRWindowlessControl9_RepaintVideo            11 sptr,sptr
#comfunc global IVMRWindowlessControl9_DisplayModeChanged      12
#comfunc global IVMRWindowlessControl9_GetCurrentImage         13 var
#comfunc global IVMRWindowlessControl9_SetBorderColor          14 int
#comfunc global IVMRWindowlessControl9_GetBorderColor          15 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。