Verificando formatos DXVA-HD com suporte
Verificando formatos de entrada com suporte
Para obter uma lista dos formatos de entrada aos quais o dispositivo de Alta Definição de Aceleração de Vídeo (DXVA-HD) do Microsoft DirectX dá suporte, faça o seguinte:
- Chame IDXVAHD_Device::GetVideoProcessorDeviceCaps para obter os recursos do dispositivo.
- Verifique o membro InputFormatCount da estrutura DXVAHD_VPDEVCAPS . Esse membro fornece o número de formatos de entrada com suporte.
- Aloque uma matriz de valores D3DFORMAT , de tamanho InputFormatCount.
- Passe essa matriz para o método IDXVAHD_Device::GetVideoProcessorInputFormats . Os métodos preenchem a matriz com uma lista de formatos de entrada.
O código a seguir mostra essas etapas:
// 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;
}
Verificando formatos de saída com suporte
Para obter uma lista dos formatos de saída compatíveis com o dispositivo DXVA-HD, faça o seguinte:
- Chame IDXVAHD_Device::GetVideoProcessorDeviceCaps para obter os recursos do dispositivo.
- Verifique o membro OutputFormatCount da estrutura DXVAHD_VPDEVCAPS . Esse membro fornece o número de formatos de entrada com suporte.
- Aloque uma matriz de valores D3DFORMAT , de tamanho OutputFormatCount.
- Passe essa matriz para o método IDXVAHD_Device::GetVideoProcessorOutputFormats . Os métodos preenchem a matriz com uma lista de formatos de saída.
O código a seguir mostra essas etapas:
// 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;
}
Tópicos relacionados