multiqueue: Don't use random segment.position from upstream
authorEdward Hervey <edward@centricular.com>
Wed, 9 Dec 2015 16:40:02 +0000 (17:40 +0100)
committerEdward Hervey <bilboed@bilboed.com>
Wed, 9 Dec 2015 16:41:49 +0000 (17:41 +0100)
segment.position is meant for internal usage only, but the various
GST_EVENT_SEGMENT creationg/parsing functions won't clear that field.

Use the appropriate segment boundary as an initial value instead

plugins/elements/gstmultiqueue.c

index 8d1f961..b19daa4 100644 (file)
@@ -1217,6 +1217,12 @@ apply_segment (GstMultiQueue * mq, GstSingleQueue * sq, GstEvent * event,
   }
   GST_MULTI_QUEUE_MUTEX_LOCK (mq);
 
+  /* Make sure we have a valid initial segment position (and not garbage
+   * from upstream) */
+  if (segment->rate > 0.0)
+    segment->position = segment->start;
+  else
+    segment->position = segment->stop;
   if (segment == &sq->sink_segment)
     sq->sink_tainted = TRUE;
   else {