summaryrefslogtreecommitdiff
path: root/gst/interlace
diff options
context:
space:
mode:
authorVivia Nikolaidou <vivia@ahiru.eu>2021-03-08 20:59:14 +0200
committerVivia Nikolaidou <vivia@ahiru.eu>2021-03-08 21:02:01 +0200
commitcde4e74eca34fa825a00597d991f7cf2039d621b (patch)
treeb4b6f57d51ab30ad0097a28b6b27bbd89b793a2c /gst/interlace
parentcb55d30b3c453fcd041f6227a4d0efcacc1f8add (diff)
downloadgstreamer-plugins-bad-cde4e74eca34fa825a00597d991f7cf2039d621b.tar.gz
interlace: Discard stored_frame on EOS and PAUSED_TO_READY
Would otherwise leak it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2062>
Diffstat (limited to 'gst/interlace')
-rw-r--r--gst/interlace/gstinterlace.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gst/interlace/gstinterlace.c b/gst/interlace/gstinterlace.c
index a49d974d9..ac109af20 100644
--- a/gst/interlace/gstinterlace.c
+++ b/gst/interlace/gstinterlace.c
@@ -678,6 +678,10 @@ gst_interlace_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
}
#endif
+ if (interlace->stored_frame) {
+ gst_buffer_unref (interlace->stored_frame);
+ interlace->stored_frame = NULL;
+ }
ret = gst_pad_push_event (interlace->srcpad, event);
break;
case GST_EVENT_CAPS:
@@ -1471,6 +1475,9 @@ gst_interlace_change_state (GstElement * element, GstStateChange transition)
case GST_STATE_CHANGE_PAUSED_TO_READY:
g_mutex_lock (&interlace->lock);
interlace->src_fps_n = 0;
+ if (interlace->stored_frame) {
+ gst_buffer_unref (interlace->stored_frame);
+ }
g_mutex_unlock (&interlace->lock);
/* why? */
//gst_interlace_reset (interlace);