transcodebin: Add filter as soon as it is set
authorThibault Saunier <tsaunier@igalia.com>
Thu, 19 Nov 2020 21:39:33 +0000 (18:39 -0300)
committerThibault Saunier <tsaunier@igalia.com>
Mon, 30 Nov 2020 20:31:48 +0000 (17:31 -0300)
Instead of waiting so that we can simply use a clocksync element as
filter, otherwise we won't know the pipeline is live as it won't
return NO_PREROLL as one would expect in that case.

Adding it right away shouldn't create any issue, both ways are fine.

gst/transcode/gsttranscodebin.c

index b6df25d..778992f 100644 (file)
@@ -211,7 +211,7 @@ _insert_filter (GstTranscodeBin * self, GstPad * sinkpad, GstPad * pad,
     return pad;
   }
 
-  gst_bin_add_many (GST_BIN (self), convert, gst_object_ref (filter), NULL);
+  gst_bin_add_many (GST_BIN (self), convert, NULL);
 
   convert_sink = gst_element_get_static_pad (convert, "sink");
   g_assert (convert_sink);
@@ -836,6 +836,8 @@ _set_filter (GstTranscodeBin * self, GstElement * filter, GstElement ** mfilter)
       goto bail_out;
     }
     GST_OBJECT_UNLOCK (filter);
+
+    gst_bin_add (GST_BIN (self), gst_object_ref (filter));
   }
 
   GST_OBJECT_LOCK (self);