From c834ce5bc4c4888a2a2420ea28827269826d3195 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Sat, 25 Jul 2020 13:14:56 -0400 Subject: [PATCH] ges-source: Ensure that we output stream with segments in time Part-of: --- ges/ges-uri-source.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/ges/ges-uri-source.c b/ges/ges-uri-source.c index 9322671..d828eb7 100644 --- a/ges/ges-uri-source.c +++ b/ges/ges-uri-source.c @@ -61,6 +61,8 @@ autoplug_select_cb (GstElement * bin, GstPad * pad, GstCaps * caps, { GstElement *nlesrc; GstCaps *downstream_caps; + GstQuery *segment_query = NULL; + GstFormat segment_format; GstAutoplugSelectResult res = GST_AUTOPLUG_SELECT_TRY; gchar *stream_id = gst_pad_get_stream_id (pad); const gchar *wanted_id = @@ -79,13 +81,30 @@ autoplug_select_cb (GstElement * bin, GstPad * pad, GstCaps * caps, goto done; } + segment_query = gst_query_new_segment (GST_FORMAT_TIME); + if (!gst_pad_query (pad, segment_query)) { + GST_DEBUG_OBJECT (pad, "Could not query segment"); + + goto done; + } + + gst_query_parse_segment (segment_query, NULL, &segment_format, NULL, NULL); + if (segment_format != GST_FORMAT_TIME) { + GST_DEBUG_OBJECT (pad, + "Segment not in %s != time for %" GST_PTR_FORMAT + "... continue plugin elements", gst_format_get_name (segment_format), + caps); + + goto done; + } + nlesrc = ges_track_element_get_nleobject (self->element); downstream_caps = gst_pad_peer_query_caps (nlesrc->srcpads->data, NULL); if (downstream_caps && gst_caps_can_intersect (downstream_caps, caps)) { if (wanted) { res = GST_AUTOPLUG_SELECT_EXPOSE; - GST_DEBUG_OBJECT (self, "Exposing %" GST_PTR_FORMAT " with stream id: %s", - pad, stream_id); + GST_INFO_OBJECT (self, "Exposing %" GST_PTR_FORMAT " with stream id: %s", + caps, stream_id); } else { res = GST_AUTOPLUG_SELECT_SKIP; GST_DEBUG_OBJECT (self->element, "Totally skipping %s", stream_id); @@ -95,6 +114,8 @@ autoplug_select_cb (GstElement * bin, GstPad * pad, GstCaps * caps, done: g_free (stream_id); + gst_clear_query (&segment_query); + return res; } -- 2.7.4