Überprüfen der unterstützten DXVA-HD-Formate
Überprüfen unterstützter Eingabeformate
Gehen Sie wie folgt vor, um eine Liste der Eingabeformate abzurufen, die das DxVA-HD-Gerät (Microsoft DirectX Video Acceleration High Definition) unterstützt:
- Rufen Sie IDXVAHD_Device::GetVideoProcessorDeviceCaps auf, um die Gerätefunktionen abzurufen.
- Überprüfen Sie das InputFormatCount-Element der DXVAHD_VPDEVCAPS-Struktur . Dieser Member gibt die Anzahl der unterstützten Eingabeformate an.
- Ordnen Sie ein Array von D3DFORMAT-Werten der Größe InputFormatCount zu.
- Übergeben Sie dieses Array an die IDXVAHD_Device::GetVideoProcessorInputFormats-Methode . Die Methoden füllen das Array mit einer Liste von Eingabeformaten.
Diese Schritte sind im folgenden Code dargestellt:
// 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;
}
Überprüfen der unterstützten Ausgabeformate
Gehen Sie wie folgt vor, um eine Liste der Ausgabeformate abzurufen, die das DXVA-HD-Gerät unterstützt:
- Rufen Sie IDXVAHD_Device::GetVideoProcessorDeviceCaps auf, um die Gerätefunktionen abzurufen.
- Überprüfen Sie das OutputFormatCount-Element der DXVAHD_VPDEVCAPS-Struktur . Dieser Member gibt die Anzahl der unterstützten Eingabeformate an.
- Ordnen Sie ein Array von D3DFORMAT-Werten der Größe OutputFormatCount zu.
- Übergeben Sie dieses Array an die IDXVAHD_Device::GetVideoProcessorOutputFormats-Methode . Die Methoden füllen das Array mit einer Liste von Ausgabeformaten.
Diese Schritte sind im folgenden Code dargestellt:
// 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;
}
Zugehörige Themen