From ed4308cf0aad19ce82ef415305fa99fa5e350e7a Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Mon, 11 Jul 2022 22:01:15 +0200 Subject: [PATCH] kodi: add PR21673 to fix DVD menus on DRMPRIME Signed-off-by: Matthias Reichl --- ...di-001-pr21673-drmprime-fix-dvd-menu.patch | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 packages/mediacenter/kodi/patches/kodi-001-pr21673-drmprime-fix-dvd-menu.patch diff --git a/packages/mediacenter/kodi/patches/kodi-001-pr21673-drmprime-fix-dvd-menu.patch b/packages/mediacenter/kodi/patches/kodi-001-pr21673-drmprime-fix-dvd-menu.patch new file mode 100644 index 0000000000..3035e26808 --- /dev/null +++ b/packages/mediacenter/kodi/patches/kodi-001-pr21673-drmprime-fix-dvd-menu.patch @@ -0,0 +1,69 @@ +From e425b4fc3d209c91e130004a67d16b9c46408788 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Thu, 7 Jul 2022 15:41:58 +0100 +Subject: [PATCH 1/2] CDVDVideoCodecDRMPRIME: Move picture release after + avcodec_receive_frame + +This matches the code order of DVDVideoCodecFFMPEG and is required +for working DVD menus +--- + .../DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp +index b27db92b5f7d7..a7407e76afb6b 100644 +--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp ++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp +@@ -536,12 +536,6 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::GetPicture(VideoPicture* pVideo + if (m_codecControlFlags & DVD_CODEC_CTRL_DRAIN) + Drain(); + +- if (pVideoPicture->videoBuffer) +- { +- pVideoPicture->videoBuffer->Release(); +- pVideoPicture->videoBuffer = nullptr; +- } +- + int ret = avcodec_receive_frame(m_pCodecContext, m_pFrame); + if (ret == AVERROR(EAGAIN)) + return VC_BUFFER; +@@ -566,6 +560,12 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::GetPicture(VideoPicture* pVideo + + SetPictureParams(pVideoPicture); + ++ if (pVideoPicture->videoBuffer) ++ { ++ pVideoPicture->videoBuffer->Release(); ++ pVideoPicture->videoBuffer = nullptr; ++ } ++ + if (IsSupportedHwFormat(static_cast(m_pFrame->format))) + { + CVideoBufferDRMPRIMEFFmpeg* buffer = + +From 325e745a0a609367007ba814f6eb1829d3d082e7 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Thu, 7 Jul 2022 12:31:12 +0100 +Subject: [PATCH 2/2] RendererDRMPRIME: Remove NeedBuffer check for valid fd + +This check breaks DVD menus. All calls return true which prevents +new pictures being released, stalling DVD menus +--- + .../VideoRenderers/HwDecRender/RendererDRMPRIME.cpp | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIME.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIME.cpp +index 36e4093cbe36b..a8667bdbf48e5 100644 +--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIME.cpp ++++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIME.cpp +@@ -172,10 +172,6 @@ bool CRendererDRMPRIME::NeedBuffer(int index) + if (m_iLastRenderBuffer == index) + return true; + +- CVideoBufferDRMPRIME* buffer = dynamic_cast(m_buffers[index].videoBuffer); +- if (buffer && buffer->m_fb_id) +- return true; +- + return false; + } +