Vérification des formats DXVA-HD pris en charge
Vérification des formats d’entrée pris en charge
Pour obtenir la liste des formats d’entrée pris en charge par l’appareil Microsoft DirectX Video Acceleration Haute Définition (DXVA-HD), procédez comme suit :
- Appelez IDXVAHD_Device::GetVideoProcessorDeviceCaps pour obtenir les fonctionnalités de l’appareil.
- Vérifiez le membre InputFormatCount de la structure DXVAHD_VPDEVCAPS . Ce membre indique le nombre de formats d’entrée pris en charge.
- Allouez un tableau de valeurs D3DFORMAT , de taille InputFormatCount.
- Transmettez ce tableau à la méthode IDXVAHD_Device::GetVideoProcessorInputFormats . Les méthodes remplit le tableau avec une liste de formats d’entrée.
Le code suivant illustre ces étapes :
// 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;
}
Vérification des formats de sortie pris en charge
Pour obtenir la liste des formats de sortie pris en charge par l’appareil DXVA-HD, procédez comme suit :
- Appelez IDXVAHD_Device::GetVideoProcessorDeviceCaps pour obtenir les fonctionnalités de l’appareil.
- Vérifiez le membre OutputFormatCount de la structure DXVAHD_VPDEVCAPS . Ce membre indique le nombre de formats d’entrée pris en charge.
- Allouez un tableau de valeurs D3DFORMAT , de taille OutputFormatCount.
- Passez ce tableau à la méthode IDXVAHD_Device::GetVideoProcessorOutputFormats . Les méthodes remplit le tableau avec une liste de formats de sortie.
Le code suivant illustre ces étapes :
// 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;
}
Rubriques connexes