Skip to content

Commit

Permalink
Merge pull request #12678 from afedchin/win-fix-dxva-flicker
Browse files Browse the repository at this point in the history
[win32] Fix dxva renderer flickers at playback startup
  • Loading branch information
afedchin committed Aug 16, 2017
2 parents 50b29a1 + 3bca5c1 commit 6847303
Showing 1 changed file with 16 additions and 11 deletions.
27 changes: 16 additions & 11 deletions xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.cpp
Expand Up @@ -855,7 +855,7 @@ void CWinRenderer::RenderHW(DWORD flags, CD3DTexture* target)
&& image->format != BUFFER_FMT_D3D11_P016)
return;

if (!image->HasPic())
if (!image->loaded)
return;

int past = 0;
Expand All @@ -871,12 +871,15 @@ void CWinRenderer::RenderHW(DWORD flags, CD3DTexture* target)
bool found = false;
for (int i = 0; i < m_NumYV12Buffers; i++)
{
if (m_renderBuffers[i].HasPic()
&& m_renderBuffers[i].frameIdx == image->frameIdx + (future*2 + 2))
if (m_renderBuffers[i].frameIdx == image->frameIdx + (future*2 + 2))
{
views[1 - future++] = &m_renderBuffers[i];
found = true;
break;
// a future frame may not be loaded yet
if (m_renderBuffers[i].loaded || m_renderBuffers[i].UploadBuffer())
{
views[1 - future++] = &m_renderBuffers[i];
found = true;
break;
}
}
}
if (!found)
Expand All @@ -889,12 +892,14 @@ void CWinRenderer::RenderHW(DWORD flags, CD3DTexture* target)
bool found = false;
for (int i = 0; i < m_NumYV12Buffers; i++)
{
if (m_renderBuffers[i].HasPic()
&& m_renderBuffers[i].frameIdx == image->frameIdx - (past*2 + 2))
if (m_renderBuffers[i].frameIdx == image->frameIdx - (past*2 + 2))
{
views[3 + past++] = &m_renderBuffers[i];
found = true;
break;
if (m_renderBuffers[i].loaded)
{
views[3 + past++] = &m_renderBuffers[i];
found = true;
break;
}
}
}
if (!found)
Expand Down

0 comments on commit 6847303

Please sign in to comment.