IDXVAHD_Device
COM公式ドキュメント
Microsoft DirectX Video Acceleration High Definition (DXVA-HD) デバイスを表します。
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
1 つ以上の Microsoft Direct3D ビデオサーフェスを作成します。
| Width | DWORD | in | 各サーフェスの幅 (ピクセル単位)。 |
| Height | DWORD | in | 各サーフェスの高さ (ピクセル単位)。 |
| Format | D3DFORMAT | in | ピクセル形式。D3DFORMAT 値または FOURCC コードで指定します。詳細については、Video FOURCCs を参照してください。 |
| Pool | D3DPOOL | in | サーフェスを作成するメモリプール。このパラメーターは、DXVAHD_VPDEVCAPS 構造体の InputPool メンバーと等しくなければなりません。この値を取得するには、IDXVAHD_Device::GetVideoProcessorDeviceCaps メソッドを呼び出します。 |
| Usage | DWORD | in | 予約済み。0 に設定します。 |
| Type | DXVAHD_SURFACE_TYPE | in | 作成するサーフェスの種類。DXVAHD_SURFACE_TYPE 列挙体のメンバーで指定します。 |
| NumSurfaces | DWORD | in | 作成するサーフェスの数。 |
| ppSurfaces | IDirect3DSurface9** | out | IDirect3DSurface9 ポインターの配列へのポインター。配列の要素数は NumSurfaces パラメーターで指定します。このメソッドは、新しいビデオサーフェスへのポインターで配列を埋めます。呼び出し元はこれらのポインターを解放しなければなりません。 |
| pSharedHandle | HANDLE* | inoutoptional | 予約済み。NULL に設定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft DirectX Video Acceleration High Definition (DXVA-HD) デバイスの機能を取得します。
| pCaps | DXVAHD_VPDEVCAPS* | out | デバイスの機能を受け取る DXVAHD_VPDEVCAPS 構造体へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft DirectX Video Acceleration High Definition (DXVA-HD) デバイスがサポートする出力形式のリストを取得します。
| Count | DWORD | in | 取得する形式の数。このパラメーターは、DXVAHD_VPDEVCAPS 構造体の OutputFormatCount メンバーと等しくなければなりません。この値を取得するには、IDXVAHD_Device::GetVideoProcessorDeviceCaps メソッドを呼び出します。 |
| pFormats | D3DFORMAT* | out | D3DFORMAT 値の配列へのポインター。配列の要素数は Count パラメーターで指定します。このメソッドは、出力形式のリストで配列を埋めます。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
形式のリストには、D3DFMT_X8R8G8B8 のような D3DFORMAT 値と、'NV12' のような FOURCC コードの両方を含めることができます。詳細については、Video FOURCCs を参照してください。
Examples
// Checks whether a DXVA-HD device supports a specified output format.
HRESULT CheckOutputFormatSupport(
IDXVAHD_Device *pDXVAHD,
const DXVAHD_VPDEVCAPS& caps,
D3DFORMAT d3dformat
)
{
D3DFORMAT *pFormats = new (std::nothrow) D3DFORMAT[caps.OutputFormatCount];
if (pFormats == NULL)
{
return E_OUTOFMEMORY;
}
HRESULT hr = pDXVAHD->GetVideoProcessorOutputFormats(
caps.OutputFormatCount,
pFormats
);
if (FAILED(hr))
{
goto done;
}
UINT index;
for (index = 0; index < caps.OutputFormatCount; index++)
{
if (pFormats[index] == d3dformat)
{
break;
}
}
if (index == caps.OutputFormatCount)
{
hr = E_FAIL;
}
done:
delete [] pFormats;
return hr;
}
Microsoft DirectX Video Acceleration High Definition (DXVA-HD) デバイスがサポートする入力形式のリストを取得します。
| Count | DWORD | in | 取得する形式の数。このパラメーターは、DXVAHD_VPDEVCAPS 構造体の InputFormatCount メンバーと等しくなければなりません。この値を取得するには、IDXVAHD_Device::GetVideoProcessorDeviceCaps メソッドを呼び出します。 |
| pFormats | D3DFORMAT* | out | D3DFORMAT 値の配列へのポインター。配列の要素数は Count パラメーターで指定します。このメソッドは、入力形式のリストで配列を埋めます。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
形式のリストには、D3DFMT_X8R8G8B8 のような D3DFORMAT 値と、'NV12' のような FOURCC コードの両方を含めることができます。詳細については、Video FOURCCs を参照してください。
Examples
// Checks whether a DXVA-HD device supports a specified input format.
HRESULT CheckInputFormatSupport(
IDXVAHD_Device *pDXVAHD,
const DXVAHD_VPDEVCAPS& caps,
D3DFORMAT d3dformat
)
{
D3DFORMAT *pFormats = new (std::nothrow) D3DFORMAT[ caps.InputFormatCount ];
if (pFormats == NULL)
{
return E_OUTOFMEMORY;
}
HRESULT hr = pDXVAHD->GetVideoProcessorInputFormats(
caps.InputFormatCount,
pFormats
);
if (FAILED(hr))
{
goto done;
}
UINT index;
for (index = 0; index < caps.InputFormatCount; index++)
{
if (pFormats[index] == d3dformat)
{
break;
}
}
if (index == caps.InputFormatCount)
{
hr = E_FAIL;
}
done:
delete [] pFormats;
return hr;
}
1 つ以上の Microsoft DirectX Video Acceleration High Definition (DXVA-HD) ビデオプロセッサの機能を取得します。
| Count | DWORD | in | pCaps 配列の要素数。このパラメーターは、DXVAHD_VPDEVCAPS 構造体の VideoProcessorCount メンバーと等しくなければなりません。この値を取得するには、IDXVAHD_Device::GetVideoProcessorDeviceCaps メソッドを呼び出します。 |
| pCaps | DXVAHD_VPCAPS* | out | DXVAHD_VPCAPS 構造体の配列へのポインター。このメソッドは、ドライバーがサポートするビデオプロセッサの機能でこれらの構造体を埋めます。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft DirectX Video Acceleration High Definition (DXVA-HD) ビデオプロセッサがサポートするカスタムレートのリストを取得します。カスタムレートは、フレームレート変換や逆テレシネ変換 (IVTC) に使用されます。
| pVPGuid | GUID* | in | クエリするビデオプロセッサを識別する GUID。この GUID は、IDXVAHD_Device::GetVideoProcessorCaps メソッドで取得した DXVAHD_VPCAPS 構造体のいずれかの VPGuid メンバーの値と等しくなければなりません。 |
| Count | DWORD | in | 取得するレートの数。このパラメーターは、当該ビデオプロセッサの DXVAHD_VPCAPS 構造体の CustomRateCount メンバーと等しくなければなりません。 |
| pRates | DXVAHD_CUSTOM_RATE_DATA* | out | DXVAHD_CUSTOM_RATE_DATA 構造体の配列へのポインター。配列の要素数は Count パラメーターで指定します。このメソッドは、カスタムレートのリストで配列を埋めます。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft DirectX Video Acceleration High Definition (DXVA-HD) デバイスがサポートするイメージフィルターの値の範囲を取得します。
| Filter | DXVAHD_FILTER | in | イメージフィルターの種類。DXVAHD_FILTER 列挙体のメンバーで指定します。 |
| pRange | DXVAHD_FILTER_RANGE_DATA* | out | DXVAHD_FILTER_RANGE_DATA 構造体へのポインター。このメソッドは、指定されたフィルターの値の範囲でこの構造体を埋めます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| Return code | Description |
|---|---|
| メソッドが成功しました。 | |
| Filter パラメーターが無効であるか、またはデバイスが指定されたフィルターをサポートしていません。 |
解説(Remarks)
デバイスがどのイメージフィルターをサポートしているかを調べるには、DXVAHD_VPDEVCAPS 構造体の FilterCaps メンバーを確認します。この値を取得するには、IDXVAHD_Device::GetVideoProcessorDeviceCaps メソッドを呼び出します。
Microsoft DirectX Video Acceleration High Definition (DXVA-HD) ビデオプロセッサを作成します。
| pVPGuid | GUID* | in | 作成するビデオプロセッサを識別する GUID。この GUID は、IDXVAHD_Device::GetVideoProcessorCaps メソッドで取得した DXVAHD_VPCAPS 構造体のいずれかの VPGuid メンバーの値と等しくなければなりません。 |
| ppVideoProcessor | IDXVAHD_VideoProcessor** | out | IDXVAHD_VideoProcessor インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放しなければなりません。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDXVAHD_Device "{95F12DFD-D77E-49BE-815F-57D579634D6D}" #usecom global IDXVAHD_Device IID_IDXVAHD_Device "{}" #comfunc global IDXVAHD_Device_CreateVideoSurface 3 int,int,int,int,int,int,int,sptr,sptr #comfunc global IDXVAHD_Device_GetVideoProcessorDeviceCaps 4 var #comfunc global IDXVAHD_Device_GetVideoProcessorOutputFormats 5 int,var #comfunc global IDXVAHD_Device_GetVideoProcessorInputFormats 6 int,var #comfunc global IDXVAHD_Device_GetVideoProcessorCaps 7 int,var #comfunc global IDXVAHD_Device_GetVideoProcessorCustomRates 8 var,int,var #comfunc global IDXVAHD_Device_GetVideoProcessorFilterRange 9 int,var #comfunc global IDXVAHD_Device_CreateVideoProcessor 10 var,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDXVAHD_Device "{95F12DFD-D77E-49BE-815F-57D579634D6D}" #usecom global IDXVAHD_Device IID_IDXVAHD_Device "{}" #comfunc global IDXVAHD_Device_CreateVideoSurface 3 int,int,int,int,int,int,int,sptr,sptr #comfunc global IDXVAHD_Device_GetVideoProcessorDeviceCaps 4 sptr #comfunc global IDXVAHD_Device_GetVideoProcessorOutputFormats 5 int,sptr #comfunc global IDXVAHD_Device_GetVideoProcessorInputFormats 6 int,sptr #comfunc global IDXVAHD_Device_GetVideoProcessorCaps 7 int,sptr #comfunc global IDXVAHD_Device_GetVideoProcessorCustomRates 8 sptr,int,sptr #comfunc global IDXVAHD_Device_GetVideoProcessorFilterRange 9 int,sptr #comfunc global IDXVAHD_Device_CreateVideoProcessor 10 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。