videoaggregator: Check if there's a previous buffer to 'keep'
authorNirbheek Chauhan <nirbheek@centricular.com>
Tue, 24 Mar 2015 13:34:26 +0000 (19:04 +0530)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 24 Mar 2015 13:54:33 +0000 (14:54 +0100)
If we want to keep a previous buffer but there's no previous buffer, we actually
need more data instead.

gst-libs/gst/video/gstvideoaggregator.c

index 24ab93f..272a35b 100644 (file)
@@ -1006,8 +1006,14 @@ gst_videoaggregator_fill_queues (GstVideoAggregator * vagg,
             gst_segment_to_running_time (&segment, GST_FORMAT_TIME, start_time);
 
         if (start_time >= output_end_time) {
-          GST_DEBUG_OBJECT (pad, "buffer duration is -1, start_time >= "
-              "output_end_time.  Keeping previous buffer");
+          if (pad->buffer) {
+            GST_DEBUG_OBJECT (pad, "buffer duration is -1, start_time >= "
+                "output_end_time. Keeping previous buffer");
+          } else {
+            GST_DEBUG_OBJECT (pad, "buffer duration is -1, start_time >= "
+                "output_end_time. No previous buffer, need more data");
+            need_more_data = TRUE;
+          }
           gst_buffer_unref (buf);
           continue;
         } else if (start_time < output_start_time) {