Exécution du Blit DXVA-HD
BOOL ProcessVideoFrame(HWND hwnd, UINT frameNumber)
{
if (!g_pD3D || !g_pDXVAVP)
{
return FALSE;
}
RECT client;
GetClientRect(hwnd, &client);
if (IsRectEmpty(&client))
{
return TRUE;
}
// Check the current status of D3D9 device.
HRESULT hr = TestCooperativeLevel();
switch (hr)
{
case D3D_OK :
break;
case D3DERR_DEVICELOST :
return TRUE;
case D3DERR_DEVICENOTRESET :
return FALSE;
break;
default :
return FALSE;
}
IDirect3DSurface9 *pRT = NULL; // Render target
DXVAHD_STREAM_DATA stream_data = { 0 };
// Get the render-target surface.
hr = g_pD3DDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &pRT);
if (FAILED(hr))
{
goto done;
}
// Initialize the stream data structures for the primary video stream
// and the substream.
stream_data.Enable = TRUE;
stream_data.OutputIndex = 0;
stream_data.InputFrameOrField = 0;
stream_data.pInputSurface = g_pSurface;
// Perform the blit.
hr = g_pDXVAVP->VideoProcessBltHD(
pRT,
frameNumber,
1,
&stream_data
);
if (FAILED(hr)) {
goto done;
}
// Present the frame.
hr = g_pD3DDevice->Present(NULL, NULL, NULL, NULL);
done:
SafeRelease(&pRT);
return SUCCEEDED(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