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

IDirectXVideoProcessor

COM
IID8c3a39f0-916e-4690-804f-4c8001355d25継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

DirectX Video Acceleration (DXVA) のビデオプロセッサデバイスを表します。

メソッド 6

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

vtbl 3 HRESULT GetVideoProcessorService(IDirectXVideoProcessorService** ppService)

このビデオプロセッサデバイスを作成した DirectX Video Acceleration (DXVA) ビデオプロセッササービスを取得します。

ppServiceIDirectXVideoProcessorService**outIDirectXVideoProcessorService インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
vtbl 4 HRESULT GetCreationParameters(GUID* pDeviceGuid, DXVA2_VideoDesc* pVideoDesc, D3DFORMAT* pRenderTargetFormat, DWORD* pMaxNumSubStreams)

このデバイスの作成に使用されたパラメーターを取得します。(IDirectXVideoProcessor.GetCreationParameters)

pDeviceGuidGUID*outoptionalデバイス GUID を受け取ります。このパラメーターは NULL にできます。
pVideoDescDXVA2_VideoDesc*outoptional呼び出し元が割り当てた DXVA2_VideoDesc 構造体へのポインター。メソッドはこの構造体にビデオ形式の記述を格納します。このパラメーターは NULL にできます。
pRenderTargetFormatD3DFORMAT*outoptionalレンダーターゲット形式を D3DFORMAT 値として受け取ります。詳細については Direct3D のドキュメントを参照してください。このパラメーターは NULL にできます。
pMaxNumSubStreamsDWORD*outoptionalデバイスがサポートするストリームの最大数を受け取ります。このパラメーターは NULL にできます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
引数が無効です。少なくとも 1 つのパラメーターが非 NULL でなければなりません。

解説(Remarks)

結果が不要な場合は、任意のパラメーターを NULL に設定できます。少なくとも 1 つのパラメーターは非 NULL でなければなりません。

vtbl 5 HRESULT GetVideoProcessorCaps(DXVA2_VideoProcessorCaps* pCaps)

ビデオプロセッサデバイスの機能を取得します。

pCapsDXVA2_VideoProcessorCaps*outビデオプロセッサの機能を受け取る DXVA2_VideoProcessorCaps 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
vtbl 6 HRESULT GetProcAmpRange(DWORD ProcAmpCap, DXVA2_ValueRange* pRange)

このビデオプロセッサデバイス上のビデオプロセッサ (ProcAmp) 設定の値の範囲を取得します。

ProcAmpCapDWORDinクエリする ProcAmp 設定。ProcAmp Settings を参照してください。
pRangeDXVA2_ValueRange*outProcAmpCaps で指定された設定の値の範囲を受け取る DXVA2_ValueRange 構造体へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT GetFilterPropertyRange(DWORD FilterSetting, DXVA2_ValueRange* pRange)

このデバイスがサポートするイメージフィルターの値の範囲を取得します。

FilterSettingDWORDinクエリするフィルター設定。詳細については DXVA Image Filter Settings を参照してください。
pRangeDXVA2_ValueRange*outFilterSetting で指定された設定の値の範囲を受け取る DXVA2_ValueRange 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
vtbl 8 HRESULT VideoProcessBlt(IDirect3DSurface9* pRenderTarget, DXVA2_VideoProcessBltParams* pBltParams, DXVA2_VideoSample* pSamples, DWORD NumSamples, HANDLE* pHandleComplete)

1 つ以上の入力サンプルに対してビデオ処理操作を実行し、その結果を Direct3D9 サーフェスに書き込みます。

pRenderTargetIDirect3DSurface9*in

Direct3D サーフェスの IDirect3DSurface9 インターフェイスへのポインター。ビデオ処理操作の出力はこのサーフェスに書き込まれます。サーフェスは以下のいずれかの種類にできます。

  • IDirectXVideoAccelerationService::CreateSurfaceDXVA2_VideoProcessRenderTarget フラグ付きで呼び出して作成されたサーフェス。DXVA2_VideoSoftwareRenderTarget フラグも使用できますが、デバイス GUID が DXVA2_VideoProcSoftwareDevice (ソフトウェアビデオ処理デバイス) の場合に限ります。
  • D3DUSAGE_RENDERTARGET 使用フラグを指定して Direct3D デバイスから作成されたサーフェス。
  • Direct3D スワップチェーン。
pBltParamsDXVA2_VideoProcessBltParams*in実行するビデオ処理操作を記述する DXVA2_VideoProcessBltParams 構造体へのポインター。
pSamplesDXVA2_VideoSample*in

入力サンプルを含む DXVA2_VideoSample 構造体の配列へのポインター。配列には少なくとも 1 つの要素が必要です。

入力サンプルの最大数は、ヘッダーファイル dxva2api.h で定義されている定数 MAX_DEINTERLACE_SURFACES によって決まります。

NumSamplesDWORDinpSamples 配列内の要素数。
pHandleCompleteHANDLE*inoutoptional予約済み。NULL に設定してください。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
D3DERR_DRIVERINTERNALERROR
ドライバーの内部エラーです。
E_INVALIDARG
引数が無効です。

解説(Remarks)

このメソッドが返った時点で、操作が完了していない場合があります。

このメソッドが E_INVALIDARG を返した場合は、以下を確認してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IDirectXVideoProcessor "{8C3A39F0-916E-4690-804F-4C8001355D25}"
#usecom global IDirectXVideoProcessor IID_IDirectXVideoProcessor "{}"
#comfunc global IDirectXVideoProcessor_GetVideoProcessorService  3 sptr
#comfunc global IDirectXVideoProcessor_GetCreationParameters     4 var,var,var,var
#comfunc global IDirectXVideoProcessor_GetVideoProcessorCaps     5 var
#comfunc global IDirectXVideoProcessor_GetProcAmpRange           6 int,var
#comfunc global IDirectXVideoProcessor_GetFilterPropertyRange    7 int,var
#comfunc global IDirectXVideoProcessor_VideoProcessBlt           8 sptr,var,var,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。