diff --git a/projects/RPi/patches/kodi/0002-gbm-Set-max-bpc-for-high-bit-depth-videos.patch b/projects/RPi/patches/kodi/0001-gbm-Set-max-bpc-for-high-bit-depth-videos.patch similarity index 71% rename from projects/RPi/patches/kodi/0002-gbm-Set-max-bpc-for-high-bit-depth-videos.patch rename to projects/RPi/patches/kodi/0001-gbm-Set-max-bpc-for-high-bit-depth-videos.patch index b0abba97ed..4e0946e41c 100644 --- a/projects/RPi/patches/kodi/0002-gbm-Set-max-bpc-for-high-bit-depth-videos.patch +++ b/projects/RPi/patches/kodi/0001-gbm-Set-max-bpc-for-high-bit-depth-videos.patch @@ -1,14 +1,14 @@ -From 42b30508bfe5451d4dc2884acfde9e0ec2d58c92 Mon Sep 17 00:00:00 2001 +From e181af5b2b97b3fbc69b9ad7318a3c02f6186ca5 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Fri, 3 Dec 2021 16:00:50 +0000 -Subject: [PATCH 2/4] gbm: Set max bpc for high bit depth videos +Subject: [PATCH 1/5] gbm: Set max bpc for high bit depth videos --- - .../HwDecRender/VideoLayerBridgeDRMPRIME.cpp | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) + .../HwDecRender/VideoLayerBridgeDRMPRIME.cpp | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp -index 4b8ee5afbb..bd6623e8d1 100644 +index 233e6310bb..9b36758c00 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp @@ -34,6 +34,14 @@ void CVideoLayerBridgeDRMPRIME::Disable() @@ -26,21 +26,20 @@ index 4b8ee5afbb..bd6623e8d1 100644 m_DRM->AddProperty(plane, "FB_ID", 0); m_DRM->AddProperty(plane, "CRTC_ID", 0); -@@ -175,6 +183,14 @@ void CVideoLayerBridgeDRMPRIME::Configure(CVideoBufferDRMPRIME* buffer) - std::tie(result, value) = plane->GetPropertyValue("COLOR_RANGE", GetColorRange(picture)); - if (result) - m_DRM->AddProperty(plane, "COLOR_RANGE", value); +@@ -175,6 +183,13 @@ void CVideoLayerBridgeDRMPRIME::Configure(CVideoBufferDRMPRIME* buffer) + plane->GetPropertyValue("COLOR_RANGE", GetColorRange(picture)); + if (colorRange) + m_DRM->AddProperty(plane, "COLOR_RANGE", colorRange.value()); + + // set max bpc to allow the drm driver to choose a deep colour mode + int bpc = buffer->GetPicture().colorBits > 8 ? 12 : 8; + auto connector = m_DRM->GetConnector(); -+ result = m_DRM->AddProperty(connector, "max bpc", bpc); ++ bool result = m_DRM->AddProperty(connector, "max bpc", bpc); + CLog::Log(LOGDEBUG, "CVideoLayerBridgeDRMPRIME::{} - setting max bpc to {} ({})", __FUNCTION__, + bpc, result); -+ } void CVideoLayerBridgeDRMPRIME::SetVideoPlane(CVideoBufferDRMPRIME* buffer, const CRect& destRect) -- -2.39.0 +2.39.2 diff --git a/projects/RPi/patches/kodi/0001-CDVDVideoCodecDRMPRIME-Also-support-YUV420-buffers.patch b/projects/RPi/patches/kodi/0002-CDVDVideoCodecDRMPRIME-Also-support-YUV420-buffers.patch similarity index 85% rename from projects/RPi/patches/kodi/0001-CDVDVideoCodecDRMPRIME-Also-support-YUV420-buffers.patch rename to projects/RPi/patches/kodi/0002-CDVDVideoCodecDRMPRIME-Also-support-YUV420-buffers.patch index 0f2c93f4c2..991028312f 100644 --- a/projects/RPi/patches/kodi/0001-CDVDVideoCodecDRMPRIME-Also-support-YUV420-buffers.patch +++ b/projects/RPi/patches/kodi/0002-CDVDVideoCodecDRMPRIME-Also-support-YUV420-buffers.patch @@ -1,7 +1,7 @@ -From 97d39a46091b65e4355ce7e545bdec46ff2f87de Mon Sep 17 00:00:00 2001 +From 05fbbc78734827304edd3eb10de0a0117d10a8b9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 11 Sep 2021 14:03:05 +0100 -Subject: [PATCH 1/4] CDVDVideoCodecDRMPRIME: Also support YUV420 buffers +Subject: [PATCH 2/5] CDVDVideoCodecDRMPRIME: Also support YUV420 buffers CDVDVideoCodecDRMPRIME: Add support for deinterlace of sw decoded buffers @@ -11,10 +11,10 @@ Need to call SetDimensions earlier and store the drm descriptor in expected plac 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -index 20a5c24f53..a36107c515 100644 +index b221cdaf75..c0efa91770 100644 --- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp +++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -@@ -582,7 +582,7 @@ bool CDVDVideoCodecDRMPRIME::SetPictureParams(VideoPicture* pVideoPicture) +@@ -619,7 +619,7 @@ bool CDVDVideoCodecDRMPRIME::SetPictureParams(VideoPicture* pVideoPicture) pVideoPicture->videoBuffer = nullptr; } @@ -23,7 +23,7 @@ index 20a5c24f53..a36107c515 100644 { CVideoBufferDRMPRIMEFFmpeg* buffer = dynamic_cast(m_videoBufferPool->Get()); -@@ -660,7 +660,7 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) +@@ -697,7 +697,7 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) const AVFilter* srcFilter = avfilter_get_by_name("buffer"); const AVFilter* outFilter = avfilter_get_by_name("buffersink"); @@ -32,7 +32,7 @@ index 20a5c24f53..a36107c515 100644 std::string args = StringUtils::Format("video_size={}x{}:pix_fmt={}:time_base={}/{}:" "pixel_aspect={}/{}", -@@ -808,6 +808,16 @@ void CDVDVideoCodecDRMPRIME::FilterClose() +@@ -845,6 +845,16 @@ void CDVDVideoCodecDRMPRIME::FilterClose() CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterIn() { @@ -50,5 +50,5 @@ index 20a5c24f53..a36107c515 100644 if (ret < 0) { -- -2.39.0 +2.39.2 diff --git a/projects/RPi/patches/kodi/0004-CDVDVideoCodecDRMPRIME-Adjust-av-formats-to-match-re.patch b/projects/RPi/patches/kodi/0003-CDVDVideoCodecDRMPRIME-Adjust-av-formats-to-match-re.patch similarity index 85% rename from projects/RPi/patches/kodi/0004-CDVDVideoCodecDRMPRIME-Adjust-av-formats-to-match-re.patch rename to projects/RPi/patches/kodi/0003-CDVDVideoCodecDRMPRIME-Adjust-av-formats-to-match-re.patch index 94e221e1a6..ad0b7598a0 100644 --- a/projects/RPi/patches/kodi/0004-CDVDVideoCodecDRMPRIME-Adjust-av-formats-to-match-re.patch +++ b/projects/RPi/patches/kodi/0003-CDVDVideoCodecDRMPRIME-Adjust-av-formats-to-match-re.patch @@ -1,7 +1,7 @@ -From 518d8487d090af854fb72a7d0e5efc075d97228c Mon Sep 17 00:00:00 2001 +From 8fbcf5fada25720b5c6f66959d5ee1c28cff04f9 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 18 Jan 2023 16:41:00 +0000 -Subject: [PATCH 4/4] CDVDVideoCodecDRMPRIME: Adjust av formats to match recent +Subject: [PATCH 3/5] CDVDVideoCodecDRMPRIME: Adjust av formats to match recent ffmpeg changes --- @@ -9,10 +9,10 @@ Subject: [PATCH 4/4] CDVDVideoCodecDRMPRIME: Adjust av formats to match recent 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -index a36107c515..d5b3289680 100644 +index c0efa91770..29d38a3ec0 100644 --- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp +++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -@@ -319,6 +319,7 @@ bool CDVDVideoCodecDRMPRIME::Open(CDVDStreamInfo& hints, CDVDCodecOptions& optio +@@ -355,6 +355,7 @@ bool CDVDVideoCodecDRMPRIME::Open(CDVDStreamInfo& hints, CDVDCodecOptions& optio m_pCodecContext->bits_per_coded_sample = hints.bitsperpixel; m_pCodecContext->time_base.num = 1; m_pCodecContext->time_base.den = DVD_TIME_BASE; @@ -20,7 +20,7 @@ index a36107c515..d5b3289680 100644 m_pCodecContext->thread_count = CServiceBroker::GetCPUInfo()->GetCPUCount(); if (hints.extradata && hints.extrasize > 0) -@@ -660,13 +661,13 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) +@@ -697,13 +698,13 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) const AVFilter* srcFilter = avfilter_get_by_name("buffer"); const AVFilter* outFilter = avfilter_get_by_name("buffersink"); @@ -36,7 +36,7 @@ index a36107c515..d5b3289680 100644 m_pCodecContext->time_base.num ? m_pCodecContext->time_base.num : 1, m_pCodecContext->time_base.num ? -@@ -818,6 +819,7 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterIn() +@@ -855,6 +856,7 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterIn() m_pFrame->data[0] = reinterpret_cast(descriptor); } @@ -45,5 +45,5 @@ index a36107c515..d5b3289680 100644 if (ret < 0) { -- -2.39.0 +2.39.2 diff --git a/projects/RPi/patches/kodi/0003-CVideoLayerBridgeDRMPRIME-add-colourspace-connector-.patch b/projects/RPi/patches/kodi/0003-CVideoLayerBridgeDRMPRIME-add-colourspace-connector-.patch deleted file mode 100644 index 7fe34c3654..0000000000 --- a/projects/RPi/patches/kodi/0003-CVideoLayerBridgeDRMPRIME-add-colourspace-connector-.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 0b9b204c6560f3aff39697f92616b48102840dfe Mon Sep 17 00:00:00 2001 -From: Lukas Rusak -Date: Mon, 29 Apr 2019 18:48:45 -0700 -Subject: [PATCH 3/4] CVideoLayerBridgeDRMPRIME add colourspace connector - property - ---- - .../Buffers/VideoBufferDRMPRIME.cpp | 12 ++++++++++++ - .../VideoPlayer/Buffers/VideoBufferDRMPRIME.h | 1 + - .../HwDecRender/VideoLayerBridgeDRMPRIME.cpp | 19 +++++++++++++++++++ - 3 files changed, 32 insertions(+) - -diff --git a/xbmc/cores/VideoPlayer/Buffers/VideoBufferDRMPRIME.cpp b/xbmc/cores/VideoPlayer/Buffers/VideoBufferDRMPRIME.cpp -index b1c23ffc3d..a5fb7ddf44 100644 ---- a/xbmc/cores/VideoPlayer/Buffers/VideoBufferDRMPRIME.cpp -+++ b/xbmc/cores/VideoPlayer/Buffers/VideoBufferDRMPRIME.cpp -@@ -20,6 +20,18 @@ extern "C" - namespace DRMPRIME - { - -+std::string GetColorimetry(const VideoPicture& picture) -+{ -+ switch (picture.color_space) -+ { -+ case AVCOL_SPC_BT2020_CL: -+ case AVCOL_SPC_BT2020_NCL: -+ return "BT2020_RGB"; -+ } -+ -+ return "Default"; -+} -+ - std::string GetColorEncoding(const VideoPicture& picture) - { - switch (picture.color_space) -diff --git a/xbmc/cores/VideoPlayer/Buffers/VideoBufferDRMPRIME.h b/xbmc/cores/VideoPlayer/Buffers/VideoBufferDRMPRIME.h -index e77f75b58b..4de9732308 100644 ---- a/xbmc/cores/VideoPlayer/Buffers/VideoBufferDRMPRIME.h -+++ b/xbmc/cores/VideoPlayer/Buffers/VideoBufferDRMPRIME.h -@@ -34,6 +34,7 @@ enum hdmi_eotf - HDMI_EOTF_BT_2100_HLG, - }; - -+std::string GetColorimetry(const VideoPicture& picture); - std::string GetColorEncoding(const VideoPicture& picture); - std::string GetColorRange(const VideoPicture& picture); - uint8_t GetEOTF(const VideoPicture& picture); -diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp -index bd6623e8d1..a1342595c6 100644 ---- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp -+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp -@@ -42,6 +42,16 @@ void CVideoLayerBridgeDRMPRIME::Disable() - CLog::Log(LOGDEBUG, "CVideoLayerBridgeDRMPRIME::{} - setting max bpc to {} ({})", - __FUNCTION__, bpc, result); - -+ uint64_t value; -+ std::tie(result, value) = connector->GetPropertyValue("Colorspace", "Default"); -+ if (result) -+ { -+ CLog::Log(LOGDEBUG, "CVideoLayerBridgeDRMPRIME::{} - setting connector colorspace to Default", -+ __FUNCTION__); -+ m_DRM->AddProperty(connector, "Colorspace", value); -+ m_DRM->SetActive(true); -+ } -+ - m_DRM->AddProperty(plane, "FB_ID", 0); - m_DRM->AddProperty(plane, "CRTC_ID", 0); - -@@ -191,6 +201,15 @@ void CVideoLayerBridgeDRMPRIME::Configure(CVideoBufferDRMPRIME* buffer) - CLog::Log(LOGDEBUG, "CVideoLayerBridgeDRMPRIME::{} - setting max bpc to {} ({})", __FUNCTION__, - bpc, result); - -+ std::tie(result, value) = connector->GetPropertyValue("Colorspace", GetColorimetry(picture)); -+ if (result) -+ { -+ CLog::Log(LOGDEBUG, "CVideoLayerBridgeDRMPRIME::{} - setting connector colorspace to {}", -+ __FUNCTION__, GetColorimetry(picture)); -+ m_DRM->AddProperty(connector, "Colorspace", value); -+ m_DRM->SetActive(true); -+ } -+ - } - - void CVideoLayerBridgeDRMPRIME::SetVideoPlane(CVideoBufferDRMPRIME* buffer, const CRect& destRect) --- -2.39.0 - diff --git a/projects/RPi/patches/kodi/0005-support-arbitrary-pixel-formats.patch b/projects/RPi/patches/kodi/0004-DVDVideoCodecDRMPRIME-Add-support-for-arbitrary-outp.patch similarity index 90% rename from projects/RPi/patches/kodi/0005-support-arbitrary-pixel-formats.patch rename to projects/RPi/patches/kodi/0004-DVDVideoCodecDRMPRIME-Add-support-for-arbitrary-outp.patch index 5fe832be50..7e4ec85ce4 100644 --- a/projects/RPi/patches/kodi/0005-support-arbitrary-pixel-formats.patch +++ b/projects/RPi/patches/kodi/0004-DVDVideoCodecDRMPRIME-Add-support-for-arbitrary-outp.patch @@ -1,8 +1,8 @@ -From 4b60bcc31eddb776d0134c4f2a64ad36969bde1b Mon Sep 17 00:00:00 2001 +From 56117d2874dcc36ac779609c63f1a8b0bace5366 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 6 Feb 2023 15:19:51 +0000 -Subject: [PATCH] DVDVideoCodecDRMPRIME: Add support for arbitrary output pixel - formats +Subject: [PATCH 4/5] DVDVideoCodecDRMPRIME: Add support for arbitrary output + pixel formats This enables any ffmpeg pixel formats to be supported by DRMPRIME decoder by creating a scale ffmpeg filter to convert it to a supported format. @@ -20,10 +20,10 @@ And it happens automatically without requiring user video settings 2 files changed, 77 insertions(+), 50 deletions(-) diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -index 347dce1ae8..e071de2e53 100644 +index 29d38a3ec0..611876ba8d 100644 --- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp +++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -@@ -201,7 +201,7 @@ enum AVPixelFormat CDVDVideoCodecDRMPRIME::GetFormat(struct AVCodecContext* avct +@@ -219,7 +219,7 @@ enum AVPixelFormat CDVDVideoCodecDRMPRIME::GetFormat(struct AVCodecContext* avct { for (int n = 0; fmt[n] != AV_PIX_FMT_NONE; n++) { @@ -32,7 +32,7 @@ index 347dce1ae8..e071de2e53 100644 { CDVDVideoCodecDRMPRIME* ctx = static_cast(avctx->opaque); ctx->UpdateProcessInfo(avctx, fmt[n]); -@@ -222,7 +222,8 @@ enum AVPixelFormat CDVDVideoCodecDRMPRIME::GetFormat(struct AVCodecContext* avct +@@ -240,7 +240,8 @@ enum AVPixelFormat CDVDVideoCodecDRMPRIME::GetFormat(struct AVCodecContext* avct int CDVDVideoCodecDRMPRIME::GetBuffer(struct AVCodecContext* avctx, AVFrame* frame, int flags) { @@ -42,7 +42,7 @@ index 347dce1ae8..e071de2e53 100644 { int width = frame->width; int height = frame->height; -@@ -230,7 +231,7 @@ int CDVDVideoCodecDRMPRIME::GetBuffer(struct AVCodecContext* avctx, AVFrame* fra +@@ -248,7 +249,7 @@ int CDVDVideoCodecDRMPRIME::GetBuffer(struct AVCodecContext* avctx, AVFrame* fra AlignedSize(avctx, width, height); int size; @@ -51,7 +51,7 @@ index 347dce1ae8..e071de2e53 100644 { case AV_PIX_FMT_YUV420P: case AV_PIX_FMT_YUVJ420P: -@@ -250,13 +251,12 @@ int CDVDVideoCodecDRMPRIME::GetBuffer(struct AVCodecContext* avctx, AVFrame* fra +@@ -268,13 +269,12 @@ int CDVDVideoCodecDRMPRIME::GetBuffer(struct AVCodecContext* avctx, AVFrame* fra CDVDVideoCodecDRMPRIME* ctx = static_cast(avctx->opaque); auto buffer = dynamic_cast( @@ -67,7 +67,7 @@ index 347dce1ae8..e071de2e53 100644 buffer->Export(frame, width, height); buffer->SyncStart(); -@@ -611,9 +611,9 @@ bool CDVDVideoCodecDRMPRIME::SetPictureParams(VideoPicture* pVideoPicture) +@@ -628,9 +628,9 @@ bool CDVDVideoCodecDRMPRIME::SetPictureParams(VideoPicture* pVideoPicture) buffer->SetRef(m_pFrame); pVideoPicture->videoBuffer = buffer; } @@ -79,7 +79,7 @@ index 347dce1ae8..e071de2e53 100644 buffer->SetPictureParams(*pVideoPicture); buffer->Acquire(); buffer->SyncEnd(); -@@ -647,13 +647,13 @@ void CDVDVideoCodecDRMPRIME::FilterTest() +@@ -664,13 +664,13 @@ void CDVDVideoCodecDRMPRIME::FilterTest() if (name.find("deinterlace") != std::string::npos) { @@ -96,7 +96,7 @@ index 347dce1ae8..e071de2e53 100644 return; } } -@@ -663,14 +663,31 @@ void CDVDVideoCodecDRMPRIME::FilterTest() +@@ -680,14 +680,31 @@ void CDVDVideoCodecDRMPRIME::FilterTest() __FUNCTION__); } @@ -130,7 +130,7 @@ index 347dce1ae8..e071de2e53 100644 return true; if (!(m_pFilterGraph = avfilter_graph_alloc())) -@@ -681,13 +698,13 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) +@@ -698,13 +715,13 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) const AVFilter* srcFilter = avfilter_get_by_name("buffer"); const AVFilter* outFilter = avfilter_get_by_name("buffersink"); @@ -146,7 +146,7 @@ index 347dce1ae8..e071de2e53 100644 m_pCodecContext->time_base.num ? m_pCodecContext->time_base.num : 1, m_pCodecContext->time_base.num ? -@@ -706,7 +723,6 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) +@@ -723,7 +740,6 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) CLog::Log(LOGERROR, "CDVDVideoCodecDRMPRIME::FilterOpen - avfilter_graph_create_filter: src: {} ({})", err, result); @@ -154,7 +154,7 @@ index 347dce1ae8..e071de2e53 100644 return false; } -@@ -714,7 +730,6 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) +@@ -731,7 +747,6 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) if (!par) { CLog::Log(LOGERROR, "CDVDVideoCodecDRMPRIME::FilterOpen - unable to alloc buffersrc"); @@ -162,7 +162,7 @@ index 347dce1ae8..e071de2e53 100644 return false; } -@@ -730,7 +745,6 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) +@@ -747,7 +762,6 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) CLog::Log(LOGERROR, "CDVDVideoCodecDRMPRIME::FilterOpen - av_buffersrc_parameters_set: {} ({})", err, result); @@ -170,7 +170,7 @@ index 347dce1ae8..e071de2e53 100644 return false; } av_freep(&par); -@@ -744,7 +758,6 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) +@@ -761,7 +775,6 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) CLog::Log(LOGERROR, "CDVDVideoCodecDRMPRIME::FilterOpen - avfilter_graph_create_filter: out: {} ({})", err, result); @@ -178,7 +178,7 @@ index 347dce1ae8..e071de2e53 100644 return false; } -@@ -753,32 +766,46 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) +@@ -770,32 +783,46 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) if (result < 0) { CLog::Log(LOGERROR, "CDVDVideoCodecDRMPRIME::FilterOpen - failed settings pix formats"); @@ -243,7 +243,7 @@ index 347dce1ae8..e071de2e53 100644 } if ((result = avfilter_graph_config(m_pFilterGraph, nullptr)) < 0) -@@ -787,15 +814,11 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) +@@ -804,15 +831,11 @@ bool CDVDVideoCodecDRMPRIME::FilterOpen(const std::string& filters, bool test) av_strerror(result, err, AV_ERROR_MAX_STRING_SIZE); CLog::Log(LOGERROR, "CDVDVideoCodecDRMPRIME::FilterOpen - avfilter_graph_config: {} ({})", err, result); @@ -259,7 +259,7 @@ index 347dce1ae8..e071de2e53 100644 m_processInfo.SetVideoDeintMethod(filters); -@@ -830,16 +853,16 @@ void CDVDVideoCodecDRMPRIME::FilterClose() +@@ -847,16 +870,16 @@ void CDVDVideoCodecDRMPRIME::FilterClose() CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterIn() { // sw decoded buffers need cache flush and for descripter to be set @@ -279,7 +279,7 @@ index 347dce1ae8..e071de2e53 100644 int ret = av_buffersrc_add_frame(m_pFilterIn, m_pFrame); if (ret < 0) { -@@ -932,25 +955,28 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::GetPicture(VideoPicture* pVideo +@@ -949,25 +972,28 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::GetPicture(VideoPicture* pVideo return VC_ERROR; } diff --git a/projects/RPi/patches/kodi/0006-fixup-ffmpeg-avformats.patch b/projects/RPi/patches/kodi/0005-DVDVideoCodecDRMPRIME-Remove-obsolete-thread_safe_ca.patch similarity index 70% rename from projects/RPi/patches/kodi/0006-fixup-ffmpeg-avformats.patch rename to projects/RPi/patches/kodi/0005-DVDVideoCodecDRMPRIME-Remove-obsolete-thread_safe_ca.patch index 1a61db8479..468e4c0bfb 100644 --- a/projects/RPi/patches/kodi/0006-fixup-ffmpeg-avformats.patch +++ b/projects/RPi/patches/kodi/0005-DVDVideoCodecDRMPRIME-Remove-obsolete-thread_safe_ca.patch @@ -1,17 +1,18 @@ -From 12b3f602eb11e348e29c61ad162734dab3f51520 Mon Sep 17 00:00:00 2001 -From: Matthias Reichl -Date: Tue, 21 Mar 2023 19:53:12 +0100 -Subject: [PATCH] fixup DVDVideoCodecDRMPRIME av formats for latest ffmpeg +From 85c8218d79f042c6d16b1d1ff6479743f095994e Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Fri, 14 Apr 2023 19:59:42 +0100 +Subject: [PATCH 5/5] DVDVideoCodecDRMPRIME: Remove obsolete + thread_safe_callbacks --- xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -index f9c69d6871..1030ed4aa3 100644 +index 611876ba8d..f7022e1854 100644 --- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp +++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp -@@ -337,7 +337,6 @@ bool CDVDVideoCodecDRMPRIME::Open(CDVDStreamInfo& hints, CDVDCodecOptions& optio +@@ -355,7 +355,6 @@ bool CDVDVideoCodecDRMPRIME::Open(CDVDStreamInfo& hints, CDVDCodecOptions& optio m_pCodecContext->bits_per_coded_sample = hints.bitsperpixel; m_pCodecContext->time_base.num = 1; m_pCodecContext->time_base.den = DVD_TIME_BASE;