summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@igalia.com>2020-07-25 13:14:56 -0400
committerThibault Saunier <tsaunier@igalia.com>2020-07-30 18:44:13 -0400
commitc834ce5bc4c4888a2a2420ea28827269826d3195 (patch)
treec80211e826b8f5eee4175185c3247da34d58ea40
parent8c622b18f6ae39be568a61164793ec0598886772 (diff)
ges-source: Ensure that we output stream with segments in time
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
-rw-r--r--ges/ges-uri-source.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/ges/ges-uri-source.c b/ges/ges-uri-source.c
index 93226710..d828eb77 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;
}