aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartijn Kaijser <martijn@xbmc.org>2017-01-09 11:48:53 -0800
committerGitHub <noreply@github.com>2017-01-09 11:48:53 -0800
commit74509b8c317bba80c935f2624dcba1273d1a712a (patch)
tree9d9b2dd2b9690cc42852b1e12dda58dc8055c8d6
parentf52937f3d12e5227ac2505c39633bed3c74203b2 (diff)
parenta67788b4f2bab9bd28e64fa21c053325c6240c30 (diff)
Merge pull request #11408 from MartijnKaijser/11374
VideoPlayer: dxva - only retain buffers for deinterlacing
-rw-r--r--xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.cpp4
-rw-r--r--xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.h1
2 files changed, 4 insertions, 1 deletions
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.cpp
index 2c6b838b88..5e2fa81e40 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.cpp
@@ -261,6 +261,7 @@ void CWinRenderer::AddVideoPictureHW(DVDVideoPicture &picture, int index)
SAFE_RELEASE(buf->pic);
buf->pic = m_processor->Convert(picture);
buf->frameIdx = m_frameIdx;
+ buf->pictureFlags = picture.iFlags;
m_frameIdx += 2;
}
else if (picture.format == RENDER_FMT_DXVA)
@@ -1117,7 +1118,8 @@ bool CWinRenderer::NeedBuffer(int idx)
DXVABuffer** buffers = reinterpret_cast<DXVABuffer**>(m_VideoBuffers);
int numPast = m_processor->PastRefs();
- if (buffers[idx] && buffers[idx]->pic)
+ if (buffers[idx] && buffers[idx]->pic &&
+ (buffers[idx]->pictureFlags & DVP_FLAG_INTERLACED))
{
if (buffers[idx]->frameIdx + numPast*2 >= buffers[m_iYV12RenderBuffer]->frameIdx)
return true;
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.h b/xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.h
index dfd7cd86a8..1474493008 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.h
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.h
@@ -147,6 +147,7 @@ struct DXVABuffer : SVideoBuffer
~DXVABuffer() { SAFE_RELEASE(pic); }
DXVA::CRenderPicture *pic;
unsigned int frameIdx;
+ unsigned int pictureFlags;
};
class CWinRenderer : public CBaseRenderer