qtdemux: fix reverse playback
authorVineeth TM <vineeth.tm@samsung.com>
Wed, 10 Jun 2015 00:49:47 +0000 (09:49 +0900)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 10 Jun 2015 08:41:13 +0000 (10:41 +0200)
When performing seek, segment->start is being updated with desired_offset,
but in case of reverse playback segment->start should be 0 and
segment->stop should be updated with desired offset.

https://bugzilla.gnome.org/show_bug.cgi?id=750675

gst/isomp4/qtdemux.c

index 2b771ae..07b8b84 100644 (file)
@@ -1432,11 +1432,15 @@ gst_qtdemux_perform_seek (GstQTDemux * qtdemux, GstSegment * segment,
   }
   segment->position = desired_offset;
   segment->time = desired_offset;
-  segment->start = desired_offset;
+  if (segment->rate >= 0) {
+    segment->start = desired_offset;
 
-  /* we stop at the end */
-  if (segment->stop == -1)
-    segment->stop = segment->duration;
+    /* we stop at the end */
+    if (segment->stop == -1)
+      segment->stop = segment->duration;
+  } else {
+    segment->stop = desired_offset;
+  }
 
   if (qtdemux->fragmented)
     qtdemux->fragmented_seek_pending = TRUE;