streamcombiner: Forward upstream force-key-unit events to all sinkpads
authorSeungha Yang <seungha.yang@navercorp.com>
Sun, 15 Apr 2018 10:15:28 +0000 (19:15 +0900)
committerSeungha Yang <seungha.yang@navercorp.com>
Thu, 5 Sep 2019 13:47:13 +0000 (22:47 +0900)
streamcombiner element forwards a upstream event only to one sinkpad.
When the streamcombiner is used with encodebin, the sinkpad
corresponding to pass-through path is configured before that of encoder,
and therefore streamcombiner forwards upstream events only to
the firstly configured one (i.e., pass-through path).

gst/encoding/gststreamcombiner.c

index 7223643..22fff91 100644 (file)
@@ -22,6 +22,7 @@
 #include "config.h"
 #endif
 
+#include <gst/video/video.h>
 #include "gststreamcombiner.h"
 #include "gststreamcombinerpad.h"
 
@@ -175,6 +176,10 @@ gst_stream_combiner_src_event (GstPad * pad, GstObject * parent,
   GstStreamCombiner *stream_combiner = (GstStreamCombiner *) parent;
   GstPad *sinkpad = NULL;
 
+  /* Forward force-key-unit event to all sinkpads */
+  if (gst_video_event_is_force_key_unit (event))
+    return gst_pad_event_default (pad, parent, event);
+
   STREAMS_LOCK (stream_combiner);
   if (stream_combiner->current)
     sinkpad = stream_combiner->current;