aggregator: Ignore the "first" mode if the segment not a time segment
authorOlivier Crête <olivier.crete@collabora.com>
Thu, 30 Jul 2015 00:06:11 +0000 (20:06 -0400)
committerOlivier Crête <olivier.crete@collabora.com>
Thu, 30 Jul 2015 00:06:11 +0000 (20:06 -0400)
gst-libs/gst/base/gstaggregator.c

index c6c6a2ca4f5630bb0f56473e748d29999582bfcc..2be13e42031ebea9474f35fa36d05760780ef29e 100644 (file)
@@ -1953,12 +1953,20 @@ gst_aggregator_pad_chain (GstPad * pad, GstObject * object, GstBuffer * buffer)
         start_time = 0;
         break;
       case GST_AGGREGATOR_START_TIME_SELECTION_FIRST:
-        start_time = GST_BUFFER_PTS (actual_buf);
-        if (start_time != -1) {
-          start_time = MAX (start_time, aggpad->segment.start);
-          start_time =
-              gst_segment_to_running_time (&aggpad->segment, GST_FORMAT_TIME,
-              start_time);
+        if (aggpad->segment.format == GST_FORMAT_TIME) {
+          start_time = GST_BUFFER_PTS (actual_buf);
+          if (start_time != -1) {
+            start_time = MAX (start_time, aggpad->segment.start);
+            start_time =
+                gst_segment_to_running_time (&aggpad->segment, GST_FORMAT_TIME,
+                start_time);
+          }
+        } else {
+          start_time = 0;
+          GST_WARNING_OBJECT (aggpad,
+              "Ignoring request of selecting the first start time "
+              "as the segment is a %s segment instead of a time segment",
+              gst_format_get_name (aggpad->segment.format));
         }
         break;
       case GST_AGGREGATOR_START_TIME_SELECTION_SET: