diff options
author | Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> | 2021-10-21 00:31:24 +0200 |
---|---|---|
committer | Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> | 2021-10-21 14:22:05 +0200 |
commit | 23f05a2619c930bdf272ade80afd745a8671bfb0 (patch) | |
tree | 094df90cc47806f53dd67e894b9f37269858e4ea | |
parent | f2ef2dc4d5c7889c7a0d1c2152a95cab0da524b9 (diff) | |
download | gstreamer-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.c | 12 |
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 |