libs/gst/base/gstbasesrc.c: The start segment for reverse playback goes from start to last_stop.

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.
This commit is contained in:
Wim Taymans 2008-01-09 12:25:17 +00:00
parent b85b7ff0cf
commit 0c964dd348
2 changed files with 19 additions and 4 deletions

View file

@ -1,3 +1,9 @@
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>

View 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;