libs/gst/base/gstbasesrc.c: The start segment for reverse playback goes from start...
authorWim Taymans <wim.taymans@gmail.com>
Wed, 9 Jan 2008 12:25:17 +0000 (12:25 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 9 Jan 2008 12:25:17 +0000 (12:25 +0000)
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek),
(gst_base_src_loop):
The start segment for reverse playback goes from start to last_stop.

ChangeLog
libs/gst/base/gstbasesrc.c

index ea949ff..08a1ed2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2008-01-09  Wim Taymans  <wim.taymans@collabora.co.uk>
 
+       * libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek),
+       (gst_base_src_loop):
+       The start segment for reverse playback goes from start to last_stop.
+
+2008-01-09  Wim Taymans  <wim.taymans@collabora.co.uk>
+
        Patch by: Peter Kjellerstedt <pkj axis com>
 
        * gst/gstclock.h:
index 3cc0520..c92175d 100644 (file)
@@ -1199,10 +1199,19 @@ gst_base_src_perform_seek (GstBaseSrc * src, GstEvent * event, gboolean unlock)
      * next time it is scheduled. */
     if (src->priv->start_segment)
       gst_event_unref (src->priv->start_segment);
-    src->priv->start_segment =
-        gst_event_new_new_segment_full (FALSE,
-        src->segment.rate, src->segment.applied_rate, src->segment.format,
-        src->segment.last_stop, stop, src->segment.time);
+    if (src->segment.rate >= 0.0) {
+      /* forward, we send data from last_stop to stop */
+      src->priv->start_segment =
+          gst_event_new_new_segment_full (FALSE,
+          src->segment.rate, src->segment.applied_rate, src->segment.format,
+          src->segment.last_stop, stop, src->segment.time);
+    } else {
+      /* reverse, we send data from stop to last_stop */
+      src->priv->start_segment =
+          gst_event_new_new_segment_full (FALSE,
+          src->segment.rate, src->segment.applied_rate, src->segment.format,
+          src->segment.start, src->segment.last_stop, src->segment.time);
+    }
   }
 
   src->priv->discont = TRUE;