kodi: update drmprime-filter patches

Fix missing flush after EOF

Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
Matthias Reichl 2023-05-16 20:35:05 +02:00
parent 864420aae0
commit eb9923c34c
7 changed files with 50 additions and 18 deletions

View File

@ -1,7 +1,7 @@
From 3f4e5cd94c1ad7e9361f68f04dba23aec06e0e49 Mon Sep 17 00:00:00 2001
From 24d09f0f92e3afc975f211591c147032f663ed01 Mon Sep 17 00:00:00 2001
From: Jonas Karlman <jonas@kwiboo.se>
Date: Sun, 20 Oct 2019 17:10:07 +0000
Subject: [PATCH 1/6] WIP: DVDVideoCodecDRMPRIME: add support for filters
Subject: [PATCH 1/7] WIP: DVDVideoCodecDRMPRIME: add support for filters
---
.../DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp | 62 +++++++++++++++++--
@ -135,5 +135,5 @@ index db49d165e7..b5cacf1a3c 100644
std::shared_ptr<IVideoBufferPool> m_videoBufferPool;
};
--
2.34.1
2.39.2

View File

@ -1,7 +1,7 @@
From a2f57bbd2c63fc0cf89304805e93f3b57ce55b58 Mon Sep 17 00:00:00 2001
From da88bb2f1dfbb6745406fab1bbece5b71df39b91 Mon Sep 17 00:00:00 2001
From: Jernej Skrabec <jernej.skrabec@siol.net>
Date: Thu, 26 Dec 2019 11:01:51 +0100
Subject: [PATCH 2/6] WIP: DRMPRIME deinterlace filter
Subject: [PATCH 2/7] WIP: DRMPRIME deinterlace filter
---
.../DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp | 379 +++++++++++++++---
@ -517,5 +517,5 @@ index b5cacf1a3c..fab3431d40 100644
AVFilterContext* m_pFilterIn = nullptr;
AVFilterContext* m_pFilterOut = nullptr;
--
2.34.1
2.39.2

View File

@ -1,7 +1,7 @@
From c2b50468de1a8a72a4e00e53492e4e26f2573490 Mon Sep 17 00:00:00 2001
From cb187a5456d0e992b4875ad965a6b628726c557f Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 27 Aug 2021 20:29:50 +0100
Subject: [PATCH 3/6] DVDVideoCodecDRMPRIME: Avoid exception with
Subject: [PATCH 3/7] DVDVideoCodecDRMPRIME: Avoid exception with
AV_PIX_FMT_NONE
---
@ -22,5 +22,5 @@ index 1843e72e55..709311e75f 100644
return false;
}
--
2.34.1
2.39.2

View File

@ -1,7 +1,7 @@
From 66833bc8221a9d5a5fbc625c3f0293a261bbd412 Mon Sep 17 00:00:00 2001
From 7b98c8968c7dd3b5a56f76695515cb59654f8691 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 17 Sep 2021 15:23:16 +0100
Subject: [PATCH 4/6] DVDVideoCodecDRMPRIME: Leave deinterlace filter active on
Subject: [PATCH 4/7] DVDVideoCodecDRMPRIME: Leave deinterlace filter active on
a progressive frame
Interlaced content often has strange mixtures of interlace and progressive frames (e.g. IIPPPPIIPPPP)
@ -29,5 +29,5 @@ index 709311e75f..6ba0804904 100644
filterChain += m_deintFilterName;
--
2.34.1
2.39.2

View File

@ -1,7 +1,7 @@
From 6d40c431345c8bac66fb1a3bb06e29a0f944ac3d Mon Sep 17 00:00:00 2001
From c17af60a355973986d9ea5b6baefb96577299b9f Mon Sep 17 00:00:00 2001
From: Dom Cobley <popcornmix@gmail.com>
Date: Tue, 30 Nov 2021 16:05:06 +0000
Subject: [PATCH 5/6] SetVideoInterlaced: Set and unset deinterlace method name
Subject: [PATCH 5/7] SetVideoInterlaced: Set and unset deinterlace method name
reported
---
@ -37,5 +37,5 @@ index 6ba0804904..9139233bc4 100644
{
CLog::Log(LOGDEBUG, LOGVIDEO, "CDVDVideoCodecDRMPRIME::FilterClose - Freeing filter graph");
--
2.34.1
2.39.2

View File

@ -1,7 +1,7 @@
From e014499333c6ca6ef4dca3a15b8c81ec07d80c12 Mon Sep 17 00:00:00 2001
From 37ee879ee3bdcf8320fe135acc6cae0a8cbdb991 Mon Sep 17 00:00:00 2001
From: Dom Cobley <popcornmix@gmail.com>
Date: Wed, 24 Nov 2021 20:21:28 +0000
Subject: [PATCH 6/6] DVDVideoCodecDRMPRIME: Close deinterlace filter on error
Subject: [PATCH 6/7] DVDVideoCodecDRMPRIME: Close deinterlace filter on error
Otherwise we crash later with an invalid m_pFilterGraph pointer
---
@ -69,5 +69,5 @@ index 9139233bc4..0b44d90f13 100644
}
--
2.34.1
2.39.2

View File

@ -0,0 +1,32 @@
From 9996a0027ee8b0149b639fdc1bb7b524a8176bc0 Mon Sep 17 00:00:00 2001
From: Dom Cobley <popcornmix@gmail.com>
Date: Mon, 15 May 2023 12:50:16 +0100
Subject: [PATCH 7/7] DVDVideoCodecDRMPRIME: Fix missing flush after eof
---
.../VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
index 0b44d90f13..a472a06792 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
@@ -891,7 +891,15 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::GetPicture(VideoPicture* pVideo
if (ret == AVERROR(EAGAIN))
return VC_BUFFER;
else if (ret == AVERROR_EOF)
+ {
+ if (m_codecControlFlags & DVD_CODEC_CTRL_DRAIN)
+ {
+ CLog::Log(LOGDEBUG, "CDVDVideoCodecDRMPRIME::{} - flush buffers", __FUNCTION__);
+ avcodec_flush_buffers(m_pCodecContext);
+ SetCodecControl(m_codecControlFlags & ~DVD_CODEC_CTRL_DRAIN);
+ }
return VC_EOF;
+ }
else if (ret)
{
char err[AV_ERROR_MAX_STRING_SIZE] = {};
--
2.39.2