サポートされている DXVA-HD 形式の確認
サポートされている入力形式の確認
Microsoft DirectX Video Acceleration High Definition (DXVA-HD) デバイスでサポートされている入力形式の一覧を取得するには、次の操作を行います。
- デバイス機能を取得するには 、IDXVAHD_Device::GetVideoProcessorDeviceCaps を呼び出します。
- DXVAHD_VPDEVCAPS構造体の InputFormatCount メンバーを確認します。 このメンバーは、サポートされている入力形式の数を指定します。
- サイズ InputFormatCount の D3DFORMAT 値の配列を割り当てます。
- この配列を IDXVAHD_Device::GetVideoProcessorInputFormats メソッドに渡します。 メソッドは、配列に入力形式の一覧を入力します。
これらの手順を示すコードは次のようになります。
// 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;
}
サポートされている出力形式の確認
DXVA-HD デバイスでサポートされている出力形式の一覧を取得するには、次の操作を行います。
- デバイス機能を取得するには 、IDXVAHD_Device::GetVideoProcessorDeviceCaps を呼び出します。
- DXVAHD_VPDEVCAPS構造体の OutputFormatCount メンバーを確認します。 このメンバーは、サポートされている入力形式の数を指定します。
- サイズ OutputFormatCount の D3DFORMAT 値の配列を割り当てます。
- この配列を IDXVAHD_Device::GetVideoProcessorOutputFormats メソッドに 渡します。 メソッドは、配列に出力形式の一覧を入力します。
これらの手順を示すコードは次のようになります。
// 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;
}
関連トピック