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

IVPBaseConfig

COM
継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IVPBaseConfig は、デコーダーやキャプチャデバイスなどのハードウェアデバイスをラップするフィルターに実装されます。ただし、そのデバイスがグラフィックスアダプターへのビデオポートを備えている場合に限ります。

解説(Remarks)

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

メソッド 13

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

vtbl 3 HRESULT GetConnectInfo(DWORD* pdwNumConnectInfo, DDVIDEOPORTCONNECT* pddVPConnectInfo)

GetConnectInfo メソッドは、VPE オブジェクトがサポートする接続に関する情報を取得します。

pdwNumConnectInfoDWORD*inoutpddVPConnectInfo 配列内の DDVIDEOPORTCONNECT 構造体の数を指定する変数へのポインター。入力時には配列のサイズ(配列要素数)を指定します。出力時には、配列にコピーされた DDVIDEOPORTCONNECT 構造体の実際の数が格納されます。pddVPConnectInfoNULL の場合、このメソッドは必要な配列サイズを返します。
pddVPConnectInfoDDVIDEOPORTCONNECT*outoptional呼び出し側が確保した DDVIDEOPORTCONNECT 構造体の配列へのポインター。デバイスはこの配列に接続情報を格納します。

戻り値

成功した場合は S_OK を返し、それ以外の場合はエラーコードを返します。

解説(Remarks)

クライアントはまず、pddVPConnectInfo パラメーターに NULL を指定してこのメソッドを呼び出します。デバイスは pdwNumConnectInfo パラメーターに DDVIDEOPORTCONNECT 構造体の数を返します。クライアントはそのサイズの配列を確保し、pddVPConnectInfo パラメーターに配列のアドレスを渡して再度メソッドを呼び出します。デバイスは接続情報をバッファーにコピーし、pdwNumConnectInfo パラメーターにコピーした構造体の実際の数を返します。

DDVIDEOPORTCONNECT 構造体については Windows DDK に記載されています。デバイスはこのメソッドを直接 DdVideoPortGetConnectInfo 呼び出しに変換できます。

クライアントは、このメソッドが返した接続構造体のいずれかを参照するインデックス番号を指定して IVPBaseConfig::SetConnectInfo メソッドを呼び出すことで、接続情報を設定します。

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 4 HRESULT SetConnectInfo(DWORD dwChosenEntry)

SetConnectInfo メソッドは、ビデオポートの接続パラメーターを設定します。

dwChosenEntryDWORDinドライバーに渡す接続情報のインデックスを指定します。この値は、IVPBaseConfig::GetConnectInfo メソッドが返した配列への 0 から始まるインデックスです。

戻り値

HRESULT 値を返します。

解説(Remarks)

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 5 HRESULT GetVPDataInfo(AMVPDATAINFO* pamvpDataInfo)

GetVPDataInfo メソッドは、現在のビデオポートのデータ情報を取得します。

pamvpDataInfoAMVPDATAINFO*inout呼び出し側が確保した AMVPDATAINFO 構造体へのポインター。デバイスはこの構造体にビデオポートに関する情報を格納します。

戻り値

HRESULT 値を返します。

解説(Remarks)

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 6 HRESULT GetMaxPixelRate(AMVPSIZE* pamvpSize, DWORD* pdwMaxPixelsPerSecond)

GetMaxPixelRate メソッドは、指定された幅と高さに対してデバイスが出力する最大ピクセルレートを取得します。

pamvpSizeAMVPSIZE*inout目的の幅と高さを含む AMVPSIZE 構造体へのポインター。
pdwMaxPixelsPerSecondDWORD*inout最大ピクセルレート(1 秒あたりのピクセル数)を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、指定されたサイズに対して見込まれる 1 秒あたりの最大ピクセル数を取得します。デバイスがそのサイズをサポートしていない場合は、サポートするレートとサイズを返します。

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 7 HRESULT InformVPInputFormats(DWORD dwNumFormats, DDPIXELFORMAT* pDDPixelFormats)

InformVPInputFormats メソッドは、ビデオポートがサポートするビデオ形式をデバイスに通知します。

dwNumFormatsDWORDinpDDPixelFormats パラメーターに含まれるビデオ形式の数。
pDDPixelFormatsDDPIXELFORMAT*inoutデバイスに送信するピクセル形式構造体(DDPIXELFORMAT)の配列へのポインター。

戻り値

失敗した場合は S_FALSE を返し、それ以外の場合は S_OK を返します。

解説(Remarks)

指定されたサポート対象のビデオポート形式の配列によって、デバイスが提案する形式が決まる場合があります。

DDPIXELFORMAT 構造体については Windows DDK に記載されています。

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 8 HRESULT GetVideoFormats(DWORD* pdwNumFormats, DDPIXELFORMAT* pddPixelFormats)

GetVideoFormats メソッドは、ドライバーがサポートするビデオ形式を取得します。

pdwNumFormatsDWORD*inoutpddPixelFormats 配列内の DDPIXELFORMAT 構造体の数を指定する変数へのポインター。入力時には配列のサイズ(配列要素数)を指定します。出力時には、配列にコピーされた DDPIXELFORMAT 構造体の実際の数が格納されます。pddPixelFormatNULL の場合、このメソッドは必要な配列サイズを返します。
pddPixelFormatsDDPIXELFORMAT*outoptional呼び出し側が確保した DDPIXELFORMAT 構造体の配列へのポインター。デバイスはこの配列に形式情報を格納します。

戻り値

成功した場合は S_OK を返し、それ以外の場合はエラーコードを返します。

解説(Remarks)

クライアントはまず、pddPixelFormats パラメーターに NULL を指定してこのメソッドを呼び出します。デバイスは pddPixelFormatso パラメーターに DDPIXELFORMAT 構造体の数を返します。クライアントはそのサイズの配列を確保し、pddPixelFormats パラメーターに配列のアドレスを渡して再度メソッドを呼び出します。デバイスは形式情報をバッファーにコピーし、pddPixelFormats パラメーターにコピーした構造体の実際の数を返します。

DDPIXELFORMAT 構造体については Windows DDK に記載されています。

クライアントは、このメソッドが返した形式構造体のいずれかを参照するインデックス番号を指定して IVPBaseConfig::SetVideoFormat メソッドを呼び出すことで、形式を設定します。

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 9 HRESULT SetVideoFormat(DWORD dwChosenEntry)

SetVideoFormat メソッドは、ビデオ形式を設定します。

dwChosenEntryDWORDin使用するビデオピクセル形式のインデックス(0 から始まる)を指定する値。

戻り値

HRESULT 値を返します。

解説(Remarks)

ビデオ形式は IVPBaseConfig::GetVideoFormats を使用して取得します。

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 10 HRESULT SetInvertPolarity()

SetInvertPolarity メソッドは、デバイスが使用している現在の極性を反転させます。

戻り値

HRESULT 値を返します。

解説(Remarks)

極性を反転させるとは、デコーダーまたはキャプチャデバイスに対して、偶数フィールドを奇数フィールドとして扱い、その逆も行うよう要求することを意味します。

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 11 HRESULT GetOverlaySurface(IDirectDrawSurface** ppddOverlaySurface)

GetOverlaySurface メソッドは、呼び出し側がドライバーのオーバーレイサーフェスを使用すべきかどうかを問い合わせます。使用すべき場合、このメソッドはそのサーフェスへのポインターを返します。

ppddOverlaySurfaceIDirectDrawSurface**outIDirectDrawSurface インターフェースへのポインターのアドレス。呼び出し側がドライバーのオーバーレイサーフェスを使用すべき場合、この変数にオーバーレイサーフェス用の IDirectDrawSurface インターフェースを設定します。

戻り値

オーバーレイサーフェスオブジェクトが返された場合は S_OK を返します。

解説(Remarks)

Overlay Mixer は、ドライバーが Overlay Mixer にドライバーのオーバーレイサーフェスを使用させる必要があるかどうかを判断するためにこの関数を使用します。この関数が NULL を返す場合、Overlay Mixer は独自のサーフェスを確保します。

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 12 HRESULT SetDirectDrawKernelHandle(UINT_PTR dwDDKernelHandle)

SetDirectDrawKernelHandle メソッドは、DirectDraw オブジェクトへのカーネルモードハンドルを設定します。このハンドルにより、デバイスのミニドライバーが DirectDraw と通信できるようになります。

dwDDKernelHandleUINT_PTRinDirectDraw オブジェクトのカーネルモードハンドルを指定します。

戻り値

HRESULT 値を返します。

解説(Remarks)

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 13 HRESULT SetVideoPortID(DWORD dwVideoPortID)

SetVideoPortID メソッドは、使用するハードウェアビデオポートの ID を指定します。

dwVideoPortIDDWORDinビデオポート ID を指定します。この値は、Windows DDK に記載されている DDVIDEOPORTDESC 構造体の dwVideoPortID メンバーに対応します。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、ミニドライバーがビデオポートと直接通信できるようにするため、ミニドライバー上に DirectDraw ビデオポート ID を設定します。

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 14 HRESULT SetDDSurfaceKernelHandles(DWORD cHandles, UINT_PTR* rgDDKernelHandles)

SetDDSurfaceKernelHandles メソッドは、オーバーレイサーフェスに使用する DirectDraw サーフェスのカーネルモードハンドルを指定します。

cHandlesDWORDinrgDDKernelHandles 配列内のハンドルの数を指定します。
rgDDKernelHandlesUINT_PTR*inoutカーネルモードハンドルの配列のアドレス。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、オーバーレイサーフェス用の DirectDraw ハンドルを設定します。付属するサーフェスは複数存在する場合があるため、配列には複数のサーフェスハンドルが含まれることがあります。

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

vtbl 15 HRESULT SetSurfaceParameters(DWORD dwPitch, DWORD dwXOrigin, DWORD dwYOrigin)

SetSurfaceParameters メソッドは、オーバーレイサーフェスのレイアウトをデバイスに通知します。下流のフィルター(Overlay Mixer、VBI Surface Allocator、または Video Port Manager)は、オーバーレイサーフェスを作成した後にこのメソッドを呼び出します。

dwPitchDWORDinサーフェスのストライド(ピッチとも呼ばれます)をピクセル単位で指定します。
dwXOriginDWORDin有効なデータが始まるピクセルの X 座標を指定します。
dwYOriginDWORDin有効なデータが始まるピクセルの Y 座標を指定します。

戻り値

成功した場合は S_OK を返し、それ以外の場合は E_NOTIMPL を返します。

解説(Remarks)

Vpconfig.h よりも前に Dvp.h と Vptype.h をインクルードしてください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IVPBaseConfig "{}"
#usecom global IVPBaseConfig IID_IVPBaseConfig "{}"
#comfunc global IVPBaseConfig_GetConnectInfo             3 var,var
#comfunc global IVPBaseConfig_SetConnectInfo             4 int
#comfunc global IVPBaseConfig_GetVPDataInfo              5 var
#comfunc global IVPBaseConfig_GetMaxPixelRate            6 var,var
#comfunc global IVPBaseConfig_InformVPInputFormats       7 int,var
#comfunc global IVPBaseConfig_GetVideoFormats            8 var,var
#comfunc global IVPBaseConfig_SetVideoFormat             9 int
#comfunc global IVPBaseConfig_SetInvertPolarity          10
#comfunc global IVPBaseConfig_GetOverlaySurface          11 sptr
#comfunc global IVPBaseConfig_SetDirectDrawKernelHandle  12 sptr
#comfunc global IVPBaseConfig_SetVideoPortID             13 int
#comfunc global IVPBaseConfig_SetDDSurfaceKernelHandles  14 int,var
#comfunc global IVPBaseConfig_SetSurfaceParameters       15 int,int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。