avdeinterlace: fix element leak
authorTim-Philipp Müller <tim@centricular.com>
Mon, 10 Apr 2023 16:59:21 +0000 (17:59 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Mon, 10 Apr 2023 19:05:35 +0000 (19:05 +0000)
Fixes #2473

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4385>

subprojects/gst-libav/ext/libav/gstavdeinterlace.c

index 15159dd..2d46c50 100644 (file)
@@ -196,10 +196,10 @@ gst_ffmpegdeinterlace_update_passthrough (GstFFMpegDeinterlace * deinterlace)
 }
 
 static gboolean
-gst_ffmpegdeinterlace_sink_setcaps (GstPad * pad, GstCaps * caps)
+gst_ffmpegdeinterlace_sink_setcaps (GstPad * pad, GstObject * parent,
+    GstCaps * caps)
 {
-  GstFFMpegDeinterlace *deinterlace =
-      GST_FFMPEGDEINTERLACE (gst_pad_get_parent (pad));
+  GstFFMpegDeinterlace *deinterlace = GST_FFMPEGDEINTERLACE (parent);
   GstStructure *structure = gst_caps_get_structure (caps, 0);
   const gchar *imode;
   AVCodecContext *ctx;
@@ -260,7 +260,7 @@ gst_ffmpegdeinterlace_sink_event (GstPad * pad, GstObject * parent,
       GstCaps *caps;
 
       gst_event_parse_caps (event, &caps);
-      ret = gst_ffmpegdeinterlace_sink_setcaps (pad, caps);
+      ret = gst_ffmpegdeinterlace_sink_setcaps (pad, parent, caps);
       gst_event_unref (event);
       break;
     }
@@ -414,7 +414,7 @@ gst_ffmpegdeinterlace_chain (GstPad * pad, GstObject * parent,
     deinterlace->reconfigure = FALSE;
     GST_OBJECT_UNLOCK (deinterlace);
     if ((caps = gst_pad_get_current_caps (deinterlace->srcpad))) {
-      gst_ffmpegdeinterlace_sink_setcaps (deinterlace->sinkpad, caps);
+      gst_ffmpegdeinterlace_sink_setcaps (deinterlace->sinkpad, parent, caps);
       gst_caps_unref (caps);
     }
   } else {