Хорошо, поэтому я написал собственный VMR9 Allocator / Presenter, который, кажется, работает нормально. Однако, когда я пытаюсь скопировать видеокадры с поверхностей Allocator / Presenter на поверхности моего приложения, видео начинает мерцать. Воспроизведение звука в порядке, поэтому я уверен, что проблема не в том, что машина зависла или что-то в этом роде. Это код, который у меня есть в моем цикле рендеринга.
g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255, 0, 0, 0), 1.0f, 0);
// render the scene
if (SUCCEEDED(g_pd3dDevice->BeginScene()))
{
//g_pd3dDevice->SetRenderTarget(0, g_pd3dSurface);
g_pd3dDevice->StretchRect(vmr9_ap->renderSurface, src, g_pd3dSurface, dest, D3DTEXF_NONE);
// end the scene
g_pd3dDevice->EndScene();
}
Однако, если я изменю это на это (комментируя очистку буфера)
// g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255, 0, 0, 0), 1.0f, 0);
// render the scene
if (SUCCEEDED(g_pd3dDevice->BeginScene()))
{
//g_pd3dDevice->SetRenderTarget(0, g_pd3dSurface);
g_pd3dDevice->StretchRect(vmr9_ap->renderSurface, src, g_pd3dSurface, dest, D3DTEXF_NONE);
// end the scene
g_pd3dDevice->EndScene();
}
это мерцание исчезает. Я беспокоюсь, что это как-то нехорошо / хакерски и может вызвать больше проблем, чем решить. У кого-нибудь есть опыт в этой области? Есть ли лучшее решение?
Спасибо!