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; GESSmartMixer *self;
GstPad *mixer_pad; GstPad *mixer_pad;
GstPad *ghostpad; GstPad *ghostpad;
GstElement *bin;
} PadInfos; } PadInfos;
static void static void
@ -137,12 +136,6 @@ pad_infos_unref (PadInfos * infos)
{ {
if (g_atomic_int_dec_and_test (&infos->refcount)) { if (g_atomic_int_dec_and_test (&infos->refcount)) {
GST_DEBUG_OBJECT (infos->mixer_pad, "Releasing pad"); 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) { if (infos->mixer_pad) {
gst_element_release_request_pad (infos->self->mixer, infos->mixer_pad); gst_element_release_request_pad (infos->self->mixer, infos->mixer_pad);
gst_object_unref (infos->mixer_pad); gst_object_unref (infos->mixer_pad);
@ -255,11 +248,9 @@ static GstPad *
_request_new_pad (GstElement * element, GstPadTemplate * templ, _request_new_pad (GstElement * element, GstPadTemplate * templ,
const gchar * name, const GstCaps * caps) const gchar * name, const GstCaps * caps)
{ {
GstPad *videoconvert_srcpad, *videoconvert_sinkpad, *tmpghost;
PadInfos *infos = pad_infos_new (); PadInfos *infos = pad_infos_new ();
GESSmartMixer *self = GES_SMART_MIXER (element); GESSmartMixer *self = GES_SMART_MIXER (element);
GstPad *ghost; GstPad *ghost;
GstElement *videoconvert;
infos->mixer_pad = gst_element_request_pad (self->mixer, infos->mixer_pad = gst_element_request_pad (self->mixer,
gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (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->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, 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; 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); gst_pad_set_active (ghost, TRUE);
if (!gst_element_add_pad (GST_ELEMENT (self), ghost)) if (!gst_element_add_pad (GST_ELEMENT (self), ghost))
goto could_not_add; 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), gst_pad_set_event_function (GST_PAD (ghost),
ges_smart_mixer_sinkpad_event_func); ges_smart_mixer_sinkpad_event_func);
@ -428,7 +400,7 @@ static void
ges_smart_mixer_constructed (GObject * obj) ges_smart_mixer_constructed (GObject * obj)
{ {
GstPad *pad; GstPad *pad;
GstElement *identity; GstElement *identity, *videoconvert;
GESSmartMixer *self = GES_SMART_MIXER (obj); GESSmartMixer *self = GES_SMART_MIXER (obj);
gchar *cname = g_strdup_printf ("%s-compositor", GST_OBJECT_NAME (self)); 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_object_set (identity, "drop-allocation", TRUE, NULL);
g_assert (identity); g_assert (identity);
gst_bin_add_many (GST_BIN (self), self->mixer, identity, NULL); videoconvert = gst_element_factory_make ("videoconvert", NULL);
gst_element_link (self->mixer, identity); 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); self->srcpad = gst_ghost_pad_new ("src", pad);
gst_pad_set_active (self->srcpad, TRUE); gst_pad_set_active (self->srcpad, TRUE);
gst_object_unref (pad); gst_object_unref (pad);

View file

@ -329,7 +329,7 @@ set_interpolation (GstObject * element, GESVideoTransitionPrivate * priv,
static GstElement * static GstElement *
ges_video_transition_create_element (GESTrackElement * object) ges_video_transition_create_element (GESTrackElement * object)
{ {
GstElement *topbin, *iconva, *iconvb, *oconv; GstElement *topbin, *iconva, *iconvb;
GstElement *mixer = NULL; GstElement *mixer = NULL;
GstPad *sinka_target, *sinkb_target, *src_target, *sinka, *sinkb, *src; GstPad *sinka_target, *sinkb_target, *src_target, *sinka, *sinkb, *src;
GESVideoTransition *self; GESVideoTransition *self;
@ -348,10 +348,8 @@ ges_video_transition_create_element (GESTrackElement * object)
gst_element_factory_make ("framepositioner", "frame_tagger"); gst_element_factory_make ("framepositioner", "frame_tagger");
g_object_set (priv->positioner, "zorder", g_object_set (priv->positioner, "zorder",
G_MAXUINT - GES_TIMELINE_ELEMENT_PRIORITY (self), NULL); 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, gst_bin_add_many (GST_BIN (topbin), iconva, iconvb, priv->positioner, NULL);
oconv, NULL);
mixer = mixer =
g_object_new (GES_TYPE_SMART_MIXER, "name", 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"); GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE ? "add" : "over");
fast_element_link (mixer, priv->positioner); fast_element_link (mixer, priv->positioner);
fast_element_link (priv->positioner, oconv);
sinka_target = gst_element_get_static_pad (iconva, "sink"); sinka_target = gst_element_get_static_pad (iconva, "sink");
sinkb_target = gst_element_get_static_pad (iconvb, "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); sinka = gst_ghost_pad_new ("sinka", sinka_target);
sinkb = gst_ghost_pad_new ("sinkb", sinkb_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 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 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=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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 eos: (no structure)
event flush-start: (no structure) event flush-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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 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 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.000000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: checksum=d2d49287a7d0ddd7b5fadbb60c3220623119fea8, pts=0:00:00.033333333, dur=0:00:00.033333334 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 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 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) event eos: (no structure)

View file

@ -1,32 +1,32 @@
event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE; 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 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-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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
buffer: pts=0:00:00.100000000, dur=0:00:00.100000000 buffer: pts=0:00:00.100000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:00.200000000, dur=0:00:00.100000000 buffer: pts=0:00:00.200000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:00.300000000, dur=0:00:00.100000000 buffer: pts=0:00:00.300000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:00.400000000, dur=0:00:00.100000000 buffer: pts=0:00:00.400000000, dur=0:00:00.100000000, meta=GstVideoMeta
event eos: (no structure) event eos: (no structure)
event flush-start: (no structure) event flush-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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
buffer: pts=0:00:00.600000000, dur=0:00:00.100000000 buffer: pts=0:00:00.600000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:00.700000000, dur=0:00:00.100000000 buffer: pts=0:00:00.700000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:00.800000000, dur=0:00:00.100000000 buffer: pts=0:00:00.800000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:00.900000000, dur=0:00:00.100000000 buffer: pts=0:00:00.900000000, dur=0:00:00.100000000, meta=GstVideoMeta
event eos: (no structure) event eos: (no structure)
event flush-start: (no structure) event flush-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; event flush-stop: GstEventFlushStop, reset-time=(boolean)true;
@ -35,15 +35,15 @@ event eos: (no structure)
event flush-start: (no structure) event flush-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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.000000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:01.100000000, dur=0:00:00.100000000 buffer: pts=0:00:01.100000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:01.200000000, dur=0:00:00.100000000 buffer: pts=0:00:01.200000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:01.300000000, dur=0:00:00.100000000 buffer: pts=0:00:01.300000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:01.400000000, dur=0:00:00.100000000 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 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) event eos: (no structure)

View file

@ -1,13 +1,13 @@
event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE; 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 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-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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
buffer: pts=0:00:00.100000000, dur=0:00:00.100000000 buffer: pts=0:00:00.100000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:00.200000000, dur=0:00:00.100000000 buffer: pts=0:00:00.200000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:00.300000000, dur=0:00:00.100000000 buffer: pts=0:00:00.300000000, dur=0:00:00.100000000, meta=GstVideoMeta
buffer: pts=0:00:00.400000000, dur=0:00:00.100000000 buffer: pts=0:00:00.400000000, dur=0:00:00.100000000, meta=GstVideoMeta
event eos: (no structure) event eos: (no structure)

View file

@ -1,95 +1,95 @@
event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE; 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 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-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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.000000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.033333333, dur=0:00:00.033333334 buffer: pts=0:00:00.033333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.066666667, dur=0:00:00.033333333 buffer: pts=0:00:00.066666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.100000000, dur=0:00:00.033333333 buffer: pts=0:00:00.100000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.133333333, dur=0:00:00.033333334 buffer: pts=0:00:00.133333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.166666667, dur=0:00:00.033333333 buffer: pts=0:00:00.166666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.200000000, dur=0:00:00.033333333 buffer: pts=0:00:00.200000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.233333333, dur=0:00:00.033333334 buffer: pts=0:00:00.233333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.266666667, dur=0:00:00.033333333 buffer: pts=0:00:00.266666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.300000000, dur=0:00:00.033333333 buffer: pts=0:00:00.300000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.333333333, dur=0:00:00.033333334 buffer: pts=0:00:00.333333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.366666667, dur=0:00:00.033333333 buffer: pts=0:00:00.366666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.400000000, dur=0:00:00.033333333 buffer: pts=0:00:00.400000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.433333333, dur=0:00:00.033333334 buffer: pts=0:00:00.433333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.466666667, dur=0:00:00.033333333 buffer: pts=0:00:00.466666667, dur=0:00:00.033333333, meta=GstVideoMeta
event eos: (no structure) event eos: (no structure)
event flush-start: (no structure) event flush-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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.000000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.033333333, dur=0:00:00.033333334 buffer: pts=0:00:00.033333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.066666667, dur=0:00:00.033333333 buffer: pts=0:00:00.066666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.100000000, dur=0:00:00.033333333 buffer: pts=0:00:00.100000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.133333333, dur=0:00:00.033333334 buffer: pts=0:00:00.133333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.166666667, dur=0:00:00.033333333 buffer: pts=0:00:00.166666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.200000000, dur=0:00:00.033333333 buffer: pts=0:00:00.200000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.233333333, dur=0:00:00.033333334 buffer: pts=0:00:00.233333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.266666667, dur=0:00:00.033333333 buffer: pts=0:00:00.266666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.300000000, dur=0:00:00.033333333 buffer: pts=0:00:00.300000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.333333333, dur=0:00:00.033333334 buffer: pts=0:00:00.333333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.366666667, dur=0:00:00.033333333 buffer: pts=0:00:00.366666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.400000000, dur=0:00:00.033333333 buffer: pts=0:00:00.400000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.433333333, dur=0:00:00.033333334 buffer: pts=0:00:00.433333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.466666667, dur=0:00:00.033333333 buffer: pts=0:00:00.466666667, dur=0:00:00.033333333, meta=GstVideoMeta
event eos: (no structure) event eos: (no structure)
event flush-start: (no structure) event flush-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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
buffer: pts=0:00:00.033333333, dur=0:00:00.033333334 buffer: pts=0:00:00.033333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.066666667, dur=0:00:00.033333333 buffer: pts=0:00:00.066666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.100000000, dur=0:00:00.033333333 buffer: pts=0:00:00.100000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.133333333, dur=0:00:00.033333334 buffer: pts=0:00:00.133333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.166666667, dur=0:00:00.033333333 buffer: pts=0:00:00.166666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.200000000, dur=0:00:00.033333333 buffer: pts=0:00:00.200000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.233333333, dur=0:00:00.033333334 buffer: pts=0:00:00.233333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.266666667, dur=0:00:00.033333333 buffer: pts=0:00:00.266666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.300000000, dur=0:00:00.033333333 buffer: pts=0:00:00.300000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.333333333, dur=0:00:00.033333334 buffer: pts=0:00:00.333333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.366666667, dur=0:00:00.033333333 buffer: pts=0:00:00.366666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.400000000, dur=0:00:00.033333333 buffer: pts=0:00:00.400000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.433333333, dur=0:00:00.033333334 buffer: pts=0:00:00.433333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.466666667, dur=0:00:00.033333333 buffer: pts=0:00:00.466666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.500000000, dur=0:00:00.033333333 buffer: pts=0:00:00.500000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.533333333, dur=0:00:00.033333334 buffer: pts=0:00:00.533333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.566666667, dur=0:00:00.033333333 buffer: pts=0:00:00.566666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.600000000, dur=0:00:00.033333333 buffer: pts=0:00:00.600000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.633333333, dur=0:00:00.033333334 buffer: pts=0:00:00.633333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.666666667, dur=0:00:00.033333333 buffer: pts=0:00:00.666666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.700000000, dur=0:00:00.033333333 buffer: pts=0:00:00.700000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.733333333, dur=0:00:00.033333334 buffer: pts=0:00:00.733333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.766666667, dur=0:00:00.033333333 buffer: pts=0:00:00.766666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.800000000, dur=0:00:00.033333333 buffer: pts=0:00:00.800000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.833333333, dur=0:00:00.033333334 buffer: pts=0:00:00.833333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.866666667, dur=0:00:00.033333333 buffer: pts=0:00:00.866666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.900000000, dur=0:00:00.033333333 buffer: pts=0:00:00.900000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:00.933333333, dur=0:00:00.033333334 buffer: pts=0:00:00.933333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:00.966666667, dur=0:00:00.033333333 buffer: pts=0:00:00.966666667, dur=0:00:00.033333333, meta=GstVideoMeta
event eos: (no structure) event eos: (no structure)
event flush-start: (no structure) event flush-start: (no structure)
event flush-stop: GstEventFlushStop, reset-time=(boolean)true; 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 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.000000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:01.033333333, dur=0:00:00.033333334 buffer: pts=0:00:01.033333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:01.066666667, dur=0:00:00.033333333 buffer: pts=0:00:01.066666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:01.100000000, dur=0:00:00.033333333 buffer: pts=0:00:01.100000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:01.133333333, dur=0:00:00.033333334 buffer: pts=0:00:01.133333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:01.166666667, dur=0:00:00.033333333 buffer: pts=0:00:01.166666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:01.200000000, dur=0:00:00.033333333 buffer: pts=0:00:01.200000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:01.233333333, dur=0:00:00.033333334 buffer: pts=0:00:01.233333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:01.266666667, dur=0:00:00.033333333 buffer: pts=0:00:01.266666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:01.300000000, dur=0:00:00.033333333 buffer: pts=0:00:01.300000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:01.333333333, dur=0:00:00.033333334 buffer: pts=0:00:01.333333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:01.366666667, dur=0:00:00.033333333 buffer: pts=0:00:01.366666667, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:01.400000000, dur=0:00:00.033333333 buffer: pts=0:00:01.400000000, dur=0:00:00.033333333, meta=GstVideoMeta
buffer: pts=0:00:01.433333333, dur=0:00:00.033333334 buffer: pts=0:00:01.433333333, dur=0:00:00.033333334, meta=GstVideoMeta
buffer: pts=0:00:01.466666667, dur=0:00:00.033333333 buffer: pts=0:00:01.466666667, dur=0:00:00.033333333, meta=GstVideoMeta
event eos: (no structure) event eos: (no structure)