检查支持的 DXVA-HD 格式
检查支持的输入格式
若要获取 Microsoft DirectX 视频加速高清 (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;
}
相关主题