diff options
author | Martijn Kaijser <martijn@xbmc.org> | 2017-01-09 11:48:53 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-09 11:48:53 -0800 |
commit | 74509b8c317bba80c935f2624dcba1273d1a712a (patch) | |
tree | 9d9b2dd2b9690cc42852b1e12dda58dc8055c8d6 | |
parent | f52937f3d12e5227ac2505c39633bed3c74203b2 (diff) | |
parent | a67788b4f2bab9bd28e64fa21c053325c6240c30 (diff) |
Merge pull request #11408 from MartijnKaijser/11374
VideoPlayer: dxva - only retain buffers for deinterlacing
-rw-r--r-- | xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.cpp | 4 | ||||
-rw-r--r-- | xbmc/cores/VideoPlayer/VideoRenderers/WinRenderer.h | 1 |
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 |