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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour