multiqueue: Don't clamp running times for position calculation
authorEdward Hervey <edward@centricular.com>
Mon, 22 Oct 2018 13:26:25 +0000 (15:26 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Mon, 22 Oct 2018 13:28:45 +0000 (15:28 +0200)
Since we use full signed running times, we no longer need to clamp
the buffer time.

This avoids having the position of single queues not advancing for
buffers that are out of segment and never waking up non-linked
streams (resulting in an apparent "deadlock").

plugins/elements/gstmultiqueue.c

index 02875af..76006a2 100644 (file)
@@ -1566,8 +1566,6 @@ get_running_time (GstSegment * segment, GstMiniObject * object, gboolean end)
     if (GST_CLOCK_TIME_IS_VALID (btime)) {
       if (end && GST_BUFFER_DURATION_IS_VALID (buf))
         btime += GST_BUFFER_DURATION (buf);
-      if (btime > segment->stop)
-        btime = segment->stop;
       time = my_segment_to_running_time (segment, btime);
     }
   } else if (GST_IS_BUFFER_LIST (object)) {
@@ -1583,8 +1581,6 @@ get_running_time (GstSegment * segment, GstMiniObject * object, gboolean end)
       if (GST_CLOCK_TIME_IS_VALID (btime)) {
         if (end && GST_BUFFER_DURATION_IS_VALID (buf))
           btime += GST_BUFFER_DURATION (buf);
-        if (btime > segment->stop)
-          btime = segment->stop;
         time = my_segment_to_running_time (segment, btime);
         if (!end)
           goto done;