discoverer: Check sinkpad existence before retrieving caps
authorSebastian Dröge <sebastian@centricular.com>
Wed, 6 May 2020 08:52:20 +0000 (11:52 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 6 May 2020 08:52:20 +0000 (11:52 +0300)
Otherwise we would error out without releasing the caps first.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/655>

gst-libs/gst/pbutils/gstdiscoverer.c

index b27f89a..60e5412 100644 (file)
@@ -701,6 +701,10 @@ uridecodebin_pad_added_cb (GstElement * uridecodebin, GstPad * pad,
   g_object_set (ps->sink, "silent", TRUE, NULL);
   g_object_set (ps->queue, "max-size-buffers", 1, "silent", TRUE, NULL);
 
+  sinkpad = gst_element_get_static_pad (ps->queue, "sink");
+  if (sinkpad == NULL)
+    goto error;
+
   caps = gst_pad_get_current_caps (pad);
   if (!caps) {
     GST_WARNING ("Couldn't get negotiated caps from %s:%s",
@@ -708,10 +712,6 @@ uridecodebin_pad_added_cb (GstElement * uridecodebin, GstPad * pad,
     caps = gst_pad_query_caps (pad, NULL);
   }
 
-  sinkpad = gst_element_get_static_pad (ps->queue, "sink");
-  if (sinkpad == NULL)
-    goto error;
-
   if (caps && !gst_caps_is_empty (caps) && !gst_caps_is_any (caps)
       && is_subtitle_caps (caps)) {
     /* Subtitle streams are sparse and may not provide any information - don't