smart-mixer: Move the videoconvert to after the mixer

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>
This commit is contained in:
Thibault Saunier 2020-07-22 12:02:10 -04:00
parent e5b1215d1e
commit 6acee38459
7 changed files with 146 additions and 174 deletions

View 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);
pad = gst_element_get_static_pad (identity, "src");
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 (videoconvert, "src");
self->srcpad = gst_ghost_pad_new ("src", pad);
gst_pad_set_active (self->srcpad, TRUE);
gst_object_unref (pad);

View 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);

View 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

View 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)

View 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)

View 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)

View 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)