summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>2021-10-21 00:31:24 +0200
committerJan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>2021-10-21 14:22:05 +0200
commit23f05a2619c930bdf272ade80afd745a8671bfb0 (patch)
tree094df90cc47806f53dd67e894b9f37269858e4ea
parentf2ef2dc4d5c7889c7a0d1c2152a95cab0da524b9 (diff)
downloadgstreamer-plugins-bad-23f05a2619c930bdf272ade80afd745a8671bfb0.tar.gz
interlace: Reset after changing state to READY
Trying to reset before the pads have been deactivated races with the streaming thread. There was also a buggy buffer clear leaving a dangling `stored_frame` pointer around. Use `gst_interlace_reset` so this happens properly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2553>
-rw-r--r--gst/interlace/gstinterlace.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gst/interlace/gstinterlace.c b/gst/interlace/gstinterlace.c
index bdf132f79..054c0ed56 100644
--- a/gst/interlace/gstinterlace.c
+++ b/gst/interlace/gstinterlace.c
@@ -1485,23 +1485,23 @@ static GstStateChangeReturn
gst_interlace_change_state (GstElement * element, GstStateChange transition)
{
GstInterlace *interlace = GST_INTERLACE (element);
+ GstStateChangeReturn ret;
+
+ ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
switch (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);
+
+ gst_interlace_reset (interlace);
break;
default:
break;
}
- return GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+ return ret;
}
static gboolean