smart-mixer: Move the videoconvert to after the mixer
authorThibault Saunier <tsaunier@igalia.com>
Wed, 22 Jul 2020 16:02:10 +0000 (12:02 -0400)
committerThibault Saunier <tsaunier@igalia.com>
Thu, 13 Aug 2020 22:34:48 +0000 (18:34 -0400)
So that it tries to negotiate with alpha and the alpha channel is
dropped as late as possible in the pipeline.

The compositor is able to do video conversion internally in any case
so having a videoconvert before it is useless.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/204>

ges/ges-smart-video-mixer.c
ges/ges-video-transition.c
tests/check/scenarios/check_keyframes_in_compositor_two_sources/flow-expectations/log-videosink-sink-expected
tests/check/scenarios/complex_effect_bin_desc/flow-expectations/log-videosink-sink-expected
tests/check/scenarios/edit_while_seeked_with_stop/flow-expectations/log-videosink-sink-expected
tests/check/scenarios/seek_with_stop.check_clock_sync/flow-expectations/log-videosink-sink-expected
tests/check/scenarios/seek_with_stop/flow-expectations/log-videosink-sink-expected

index f357e0a..80d8934 100644 (file)
@@ -129,7 +129,6 @@ typedef struct _PadInfos
   GESSmartMixer *self;
   GstPad *mixer_pad;
   GstPad *ghostpad;
-  GstElement *bin;
 } PadInfos;
 
 static void
@@ -137,12 +136,6 @@ pad_infos_unref (PadInfos * infos)
 {
   if (g_atomic_int_dec_and_test (&infos->refcount)) {
     GST_DEBUG_OBJECT (infos->mixer_pad, "Releasing pad");
-    if (G_LIKELY (infos->bin)) {
-      gst_element_set_state (infos->bin, GST_STATE_NULL);
-      gst_element_unlink (infos->bin, infos->self->mixer);
-      gst_bin_remove (GST_BIN (infos->self), infos->bin);
-    }
-
     if (infos->mixer_pad) {
       gst_element_release_request_pad (infos->self->mixer, infos->mixer_pad);
       gst_object_unref (infos->mixer_pad);
@@ -255,11 +248,9 @@ static GstPad *
 _request_new_pad (GstElement * element, GstPadTemplate * templ,
     const gchar * name, const GstCaps * caps)
 {
-  GstPad *videoconvert_srcpad, *videoconvert_sinkpad, *tmpghost;
   PadInfos *infos = pad_infos_new ();
   GESSmartMixer *self = GES_SMART_MIXER (element);
   GstPad *ghost;
-  GstElement *videoconvert;
 
   infos->mixer_pad = gst_element_request_pad (self->mixer,
       gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (self->mixer),
@@ -274,33 +265,14 @@ _request_new_pad (GstElement * element, GstPadTemplate * templ,
 
   infos->self = self;
 
-  infos->bin = gst_bin_new (NULL);
-  videoconvert = gst_element_factory_make ("videoconvert", NULL);
-
-  gst_bin_add (GST_BIN (infos->bin), videoconvert);
-
-  videoconvert_sinkpad = gst_element_get_static_pad (videoconvert, "sink");
-  tmpghost = GST_PAD (gst_ghost_pad_new (NULL, videoconvert_sinkpad));
-  gst_object_unref (videoconvert_sinkpad);
-  gst_pad_set_active (tmpghost, TRUE);
-  gst_element_add_pad (GST_ELEMENT (infos->bin), tmpghost);
-
-  gst_bin_add (GST_BIN (self), infos->bin);
   ghost = g_object_new (ges_smart_mixer_pad_get_type (), "name", name,
-      "direction", GST_PAD_DIRECTION (tmpghost), NULL);
+      "direction", GST_PAD_DIRECTION (infos->mixer_pad), NULL);
   infos->ghostpad = ghost;
-  gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (ghost), tmpghost);
+  gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (ghost), infos->mixer_pad);
   gst_pad_set_active (ghost, TRUE);
   if (!gst_element_add_pad (GST_ELEMENT (self), ghost))
     goto could_not_add;
 
-  videoconvert_srcpad = gst_element_get_static_pad (videoconvert, "src");
-  tmpghost = GST_PAD (gst_ghost_pad_new (NULL, videoconvert_srcpad));
-  gst_object_unref (videoconvert_srcpad);
-  gst_pad_set_active (tmpghost, TRUE);
-  gst_element_add_pad (GST_ELEMENT (infos->bin), tmpghost);
-  gst_pad_link (tmpghost, infos->mixer_pad);
-
   gst_pad_set_event_function (GST_PAD (ghost),
       ges_smart_mixer_sinkpad_event_func);
 
@@ -428,7 +400,7 @@ static void
 ges_smart_mixer_constructed (GObject * obj)
 {
   GstPad *pad;
-  GstElement *identity;
+  GstElement *identity, *videoconvert;
 
   GESSmartMixer *self = GES_SMART_MIXER (obj);
   gchar *cname = g_strdup_printf ("%s-compositor", GST_OBJECT_NAME (self));
@@ -446,10 +418,13 @@ ges_smart_mixer_constructed (GObject * obj)
   g_object_set (identity, "drop-allocation", TRUE, NULL);
   g_assert (identity);
 
-  gst_bin_add_many (GST_BIN (self), self->mixer, identity, NULL);
-  gst_element_link (self->mixer, identity);
+  videoconvert = gst_element_factory_make ("videoconvert", NULL);
+  g_assert (videoconvert);
+
+  gst_bin_add_many (GST_BIN (self), self->mixer, identity, videoconvert, NULL);
+  gst_element_link_many (self->mixer, identity, videoconvert, NULL);
 
-  pad = gst_element_get_static_pad (identity, "src");
+  pad = gst_element_get_static_pad (videoconvert, "src");
   self->srcpad = gst_ghost_pad_new ("src", pad);
   gst_pad_set_active (self->srcpad, TRUE);
   gst_object_unref (pad);
index 44840cf..e5f5916 100644 (file)
@@ -329,7 +329,7 @@ set_interpolation (GstObject * element, GESVideoTransitionPrivate * priv,
 static GstElement *
 ges_video_transition_create_element (GESTrackElement * object)
 {
-  GstElement *topbin, *iconva, *iconvb, *oconv;
+  GstElement *topbin, *iconva, *iconvb;
   GstElement *mixer = NULL;
   GstPad *sinka_target, *sinkb_target, *src_target, *sinka, *sinkb, *src;
   GESVideoTransition *self;
@@ -348,10 +348,8 @@ ges_video_transition_create_element (GESTrackElement * object)
       gst_element_factory_make ("framepositioner", "frame_tagger");
   g_object_set (priv->positioner, "zorder",
       G_MAXUINT - GES_TIMELINE_ELEMENT_PRIORITY (self), NULL);
-  oconv = gst_element_factory_make ("videoconvert", "tr-csp-output");
 
-  gst_bin_add_many (GST_BIN (topbin), iconva, iconvb, priv->positioner,
-      oconv, NULL);
+  gst_bin_add_many (GST_BIN (topbin), iconva, iconvb, priv->positioner, NULL);
 
   mixer =
       g_object_new (GES_TYPE_SMART_MIXER, "name",
@@ -379,11 +377,10 @@ ges_video_transition_create_element (GESTrackElement * object)
       GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE ? "add" : "over");
 
   fast_element_link (mixer, priv->positioner);
-  fast_element_link (priv->positioner, oconv);
 
   sinka_target = gst_element_get_static_pad (iconva, "sink");
   sinkb_target = gst_element_get_static_pad (iconvb, "sink");
-  src_target = gst_element_get_static_pad (oconv, "src");
+  src_target = gst_element_get_static_pad (priv->positioner, "src");
 
   sinka = gst_ghost_pad_new ("sinka", sinka_target);
   sinkb = gst_ghost_pad_new ("sinkb", sinkb_target);
index fb0a655..6f3cbee 100644 (file)
@@ -1,34 +1,34 @@
 event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE;
-event caps: video/x-raw, format=(string)I420, width=(int)500, height=(int)500, framerate=(fraction)10/1, chroma-site=(string)jpeg, colorimetry=(string)bt601;
+event caps: video/x-raw, width=(int)500, height=(int)500, framerate=(fraction)10/1, format=(string)I420;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:02.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
-buffer: content-id=0, pts=0:00:00.000000000, dur=0:00:00.100000000
-buffer: content-id=1, pts=0:00:00.100000000, dur=0:00:00.100000000
-buffer: content-id=2, pts=0:00:00.200000000, dur=0:00:00.100000000
-buffer: content-id=3, pts=0:00:00.300000000, dur=0:00:00.100000000
-buffer: content-id=4, pts=0:00:00.400000000, dur=0:00:00.100000000
-buffer: content-id=5, pts=0:00:00.500000000, dur=0:00:00.100000000
-buffer: content-id=6, pts=0:00:00.600000000, dur=0:00:00.100000000
-buffer: content-id=7, pts=0:00:00.700000000, dur=0:00:00.100000000
-buffer: content-id=8, pts=0:00:00.800000000, dur=0:00:00.100000000
-buffer: content-id=9, pts=0:00:00.900000000, dur=0:00:00.100000000
-buffer: content-id=10, pts=0:00:01.000000000, dur=0:00:00.100000000
-buffer: content-id=9, pts=0:00:01.100000000, dur=0:00:00.100000000
-buffer: content-id=8, pts=0:00:01.200000000, dur=0:00:00.100000000
-buffer: content-id=7, pts=0:00:01.300000000, dur=0:00:00.100000000
-buffer: content-id=6, pts=0:00:01.400000000, dur=0:00:00.100000000
-buffer: content-id=5, pts=0:00:01.500000000, dur=0:00:00.100000000
-buffer: content-id=4, pts=0:00:01.600000000, dur=0:00:00.100000000
-buffer: content-id=3, pts=0:00:01.700000000, dur=0:00:00.100000000
-buffer: content-id=2, pts=0:00:01.800000000, dur=0:00:00.100000000
-buffer: content-id=1, pts=0:00:01.900000000, dur=0:00:00.100000000
+buffer: content-id=0, pts=0:00:00.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=1, pts=0:00:00.100000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=2, pts=0:00:00.200000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=3, pts=0:00:00.300000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=4, pts=0:00:00.400000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=5, pts=0:00:00.500000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=6, pts=0:00:00.600000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=7, pts=0:00:00.700000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=8, pts=0:00:00.800000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=9, pts=0:00:00.900000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=10, pts=0:00:01.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=9, pts=0:00:01.100000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=8, pts=0:00:01.200000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=7, pts=0:00:01.300000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=6, pts=0:00:01.400000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=5, pts=0:00:01.500000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=4, pts=0:00:01.600000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=3, pts=0:00:01.700000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=2, pts=0:00:01.800000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: content-id=1, pts=0:00:01.900000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event segment: format=TIME, start=0:00:02.000000000, offset=0:00:00.000000000, stop=0:00:02.000000001, flags=0x01, time=0:00:02.000000000, base=0:00:02.000000000, position=none
-buffer: content-id=11, pts=0:00:02.000000000, dur=0:00:00.000000001
+buffer: content-id=11, pts=0:00:02.000000000, dur=0:00:00.000000001, meta=GstVideoMeta
 event eos: (no structure)
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:01.000000000, offset=0:00:00.000000000, stop=0:00:02.000000000, flags=0x01, time=0:00:01.000000000, base=0:00:00.000000000, position=none
-buffer: content-id=10, pts=0:00:01.000000000, dur=0:00:00.100000000
+buffer: content-id=12, pts=0:00:01.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:01.000000000, offset=0:00:00.000000000, stop=0:00:03.000000000, flags=0x01, time=0:00:01.000000000, base=0:00:00.000000000, position=none
-buffer: content-id=0, pts=0:00:01.000000000, dur=0:00:00.100000000
+buffer: content-id=0, pts=0:00:01.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
index 7541dda..2770dc3 100644 (file)
@@ -1,9 +1,9 @@
 event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE;
-event caps: video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, framerate=(fraction)30/1, chroma-site=(string)jpeg, colorimetry=(string)bt601;
+event caps: video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)I420, chroma-site=(string)jpeg, colorimetry=(string)bt601;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.100000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000
-buffer: checksum=d2d49287a7d0ddd7b5fadbb60c3220623119fea8, pts=0:00:00.000000000, dur=0:00:00.033333333
-buffer: checksum=d2d49287a7d0ddd7b5fadbb60c3220623119fea8, pts=0:00:00.033333333, dur=0:00:00.033333334
-buffer: checksum=d2d49287a7d0ddd7b5fadbb60c3220623119fea8, pts=0:00:00.066666667, dur=0:00:00.033333333
+buffer: checksum=d2d49287a7d0ddd7b5fadbb60c3220623119fea8, pts=0:00:00.000000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: checksum=d2d49287a7d0ddd7b5fadbb60c3220623119fea8, pts=0:00:00.033333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: checksum=d2d49287a7d0ddd7b5fadbb60c3220623119fea8, pts=0:00:00.066666667, dur=0:00:00.033333333, meta=GstVideoMeta
 event segment: format=TIME, start=0:00:00.100000000, offset=0:00:00.000000000, stop=0:00:00.100000001, flags=0x01, time=0:00:00.100000000, base=0:00:00.100000000
-buffer: checksum=b4a126ab26f314a74ef860a9af457327a28d680b, pts=0:00:00.100000000, dur=0:00:00.000000001
+buffer: checksum=b4a126ab26f314a74ef860a9af457327a28d680b, pts=0:00:00.100000000, dur=0:00:00.000000001, meta=GstVideoMeta
 event eos: (no structure)
index 4004ae5..7ef80e9 100644 (file)
@@ -1,32 +1,32 @@
 event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE;
-event caps: video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, framerate=(fraction)10/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709;
+event caps: video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)10/1, format=(string)I420, chroma-site=(string)mpeg2, colorimetry=(string)bt709;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
-buffer: pts=0:00:00.000000000, dur=0:00:00.100000000
+buffer: pts=0:00:00.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
-buffer: pts=0:00:00.000000000, dur=0:00:00.100000000
+buffer: pts=0:00:00.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
-buffer: pts=0:00:00.000000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.100000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.200000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.300000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.400000000, dur=0:00:00.100000000
+buffer: pts=0:00:00.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.100000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.200000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.300000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.400000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event eos: (no structure)
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:00.500000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.500000000, base=0:00:00.000000000, position=none
-buffer: pts=0:00:00.500000000, dur=0:00:00.100000000
+buffer: pts=0:00:00.500000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:00.500000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.500000000, base=0:00:00.000000000, position=none
-buffer: pts=0:00:00.500000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.600000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.700000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.800000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.900000000, dur=0:00:00.100000000
+buffer: pts=0:00:00.500000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.600000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.700000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.800000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.900000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event eos: (no structure)
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
@@ -35,15 +35,15 @@ event eos: (no structure)
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:01.000000000, offset=0:00:00.000000000, stop=0:00:02.000000000, flags=0x01, time=0:00:01.000000000, base=0:00:00.000000000, position=none
-buffer: pts=0:00:01.000000000, dur=0:00:00.100000000
+buffer: pts=0:00:01.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:01.000000000, offset=0:00:00.000000000, stop=0:00:01.500000000, flags=0x01, time=0:00:01.000000000, base=0:00:00.000000000, position=none
-buffer: pts=0:00:01.000000000, dur=0:00:00.100000000
-buffer: pts=0:00:01.100000000, dur=0:00:00.100000000
-buffer: pts=0:00:01.200000000, dur=0:00:00.100000000
-buffer: pts=0:00:01.300000000, dur=0:00:00.100000000
-buffer: pts=0:00:01.400000000, dur=0:00:00.100000000
+buffer: pts=0:00:01.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:01.100000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:01.200000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:01.300000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:01.400000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event segment: format=TIME, start=0:00:01.500000000, offset=0:00:00.000000000, stop=0:00:01.500000001, flags=0x01, time=0:00:01.500000000, base=0:00:00.500000000, position=none
-buffer: pts=0:00:01.500000000, dur=0:00:00.000000001
+buffer: pts=0:00:01.500000000, dur=0:00:00.000000001, meta=GstVideoMeta
 event eos: (no structure)
index 4370de5..73ae007 100644 (file)
@@ -1,13 +1,13 @@
 event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE;
-event caps: video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, framerate=(fraction)10/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709;
+event caps: video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)10/1, format=(string)I420, chroma-site=(string)mpeg2, colorimetry=(string)bt709;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
-buffer: pts=0:00:00.000000000, dur=0:00:00.100000000
+buffer: pts=0:00:00.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000, position=none
-buffer: pts=0:00:00.000000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.100000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.200000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.300000000, dur=0:00:00.100000000
-buffer: pts=0:00:00.400000000, dur=0:00:00.100000000
+buffer: pts=0:00:00.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.100000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.200000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.300000000, dur=0:00:00.100000000, meta=GstVideoMeta
+buffer: pts=0:00:00.400000000, dur=0:00:00.100000000, meta=GstVideoMeta
 event eos: (no structure)
index 1efd048..5099f9a 100644 (file)
@@ -1,95 +1,95 @@
 event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE;
-event caps: video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, framerate=(fraction)30/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709;
+event caps: video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)I420, chroma-site=(string)mpeg2, colorimetry=(string)bt709;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000
-buffer: pts=0:00:00.000000000, dur=0:00:00.033333333
+buffer: pts=0:00:00.000000000, dur=0:00:00.033333333, meta=GstVideoMeta
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000
-buffer: pts=0:00:00.000000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.033333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.066666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.100000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.133333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.166666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.200000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.233333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.266666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.300000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.333333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.366666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.400000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.433333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.466666667, dur=0:00:00.033333333
+buffer: pts=0:00:00.000000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.033333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.066666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.100000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.133333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.166666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.200000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.233333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.266666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.300000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.333333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.366666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.400000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.433333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.466666667, dur=0:00:00.033333333, meta=GstVideoMeta
 event eos: (no structure)
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.500000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000
-buffer: pts=0:00:00.000000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.033333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.066666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.100000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.133333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.166666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.200000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.233333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.266666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.300000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.333333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.366666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.400000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.433333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.466666667, dur=0:00:00.033333333
+buffer: pts=0:00:00.000000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.033333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.066666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.100000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.133333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.166666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.200000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.233333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.266666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.300000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.333333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.366666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.400000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.433333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.466666667, dur=0:00:00.033333333, meta=GstVideoMeta
 event eos: (no structure)
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:01.000000000, flags=0x01, time=0:00:00.000000000, base=0:00:00.000000000
-buffer: pts=0:00:00.000000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.033333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.066666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.100000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.133333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.166666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.200000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.233333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.266666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.300000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.333333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.366666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.400000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.433333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.466666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.500000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.533333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.566666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.600000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.633333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.666666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.700000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.733333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.766666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.800000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.833333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.866666667, dur=0:00:00.033333333
-buffer: pts=0:00:00.900000000, dur=0:00:00.033333333
-buffer: pts=0:00:00.933333333, dur=0:00:00.033333334
-buffer: pts=0:00:00.966666667, dur=0:00:00.033333333
+buffer: pts=0:00:00.000000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.033333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.066666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.100000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.133333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.166666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.200000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.233333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.266666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.300000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.333333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.366666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.400000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.433333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.466666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.500000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.533333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.566666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.600000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.633333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.666666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.700000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.733333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.766666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.800000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.833333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.866666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.900000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:00.933333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:00.966666667, dur=0:00:00.033333333, meta=GstVideoMeta
 event eos: (no structure)
 event flush-start: (no structure)
 event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
 event segment: format=TIME, start=0:00:01.000000000, offset=0:00:00.000000000, stop=0:00:01.500000000, flags=0x01, time=0:00:01.000000000, base=0:00:00.000000000
-buffer: pts=0:00:01.000000000, dur=0:00:00.033333333
-buffer: pts=0:00:01.033333333, dur=0:00:00.033333334
-buffer: pts=0:00:01.066666667, dur=0:00:00.033333333
-buffer: pts=0:00:01.100000000, dur=0:00:00.033333333
-buffer: pts=0:00:01.133333333, dur=0:00:00.033333334
-buffer: pts=0:00:01.166666667, dur=0:00:00.033333333
-buffer: pts=0:00:01.200000000, dur=0:00:00.033333333
-buffer: pts=0:00:01.233333333, dur=0:00:00.033333334
-buffer: pts=0:00:01.266666667, dur=0:00:00.033333333
-buffer: pts=0:00:01.300000000, dur=0:00:00.033333333
-buffer: pts=0:00:01.333333333, dur=0:00:00.033333334
-buffer: pts=0:00:01.366666667, dur=0:00:00.033333333
-buffer: pts=0:00:01.400000000, dur=0:00:00.033333333
-buffer: pts=0:00:01.433333333, dur=0:00:00.033333334
-buffer: pts=0:00:01.466666667, dur=0:00:00.033333333
+buffer: pts=0:00:01.000000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:01.033333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:01.066666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:01.100000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:01.133333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:01.166666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:01.200000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:01.233333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:01.266666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:01.300000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:01.333333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:01.366666667, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:01.400000000, dur=0:00:00.033333333, meta=GstVideoMeta
+buffer: pts=0:00:01.433333333, dur=0:00:00.033333334, meta=GstVideoMeta
+buffer: pts=0:00:01.466666667, dur=0:00:00.033333333, meta=GstVideoMeta
 event eos: (no structure)