From 9a9d4ecceabd0de3632f588ce5d89d7ba78b5490 Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Wed, 28 Jan 2015 14:02:15 -0300 Subject: [PATCH] qtdemux: simplify segment.base math Remove a fix for heavily edited files added for fixing https://bugzilla.gnome.org/show_bug.cgi?id=345830 to work with seeks and proper gaps playback. The fix was replaced for a more general solution that bases on using previous segment's duration, just like it works for media segments playback. https://bugzilla.gnome.org/show_bug.cgi?id=743518 --- gst/isomp4/qtdemux.c | 6 +----- gst/isomp4/qtdemux.h | 3 --- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index 32ab273842..7e20428e78 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -1425,7 +1425,6 @@ gst_qtdemux_perform_seek (GstQTDemux * qtdemux, GstSegment * segment, } segment->position = desired_offset; segment->time = desired_offset; - qtdemux->segment_base = desired_offset; /* we stop at the end */ if (segment->stop == -1) @@ -1874,7 +1873,6 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard) qtdemux->offset = 0; gst_adapter_clear (qtdemux->adapter); gst_segment_init (&qtdemux->segment, GST_FORMAT_TIME); - qtdemux->segment_base = 0; if (hard) { for (n = 0; n < qtdemux->n_streams; n++) { @@ -3640,6 +3638,7 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, if (G_UNLIKELY (QTSEGMENT_IS_EMPTY (segment))) { start = segment->time + seg_time; time = offset; + stop = start - seg_time + segment->duration; } else if (qtdemux->segment.rate >= 0) { start = MIN (segment->media_start + seg_time, stop); time = offset; @@ -3674,9 +3673,6 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, stream->segment.stop = stop; stream->segment.time = time; stream->segment.position = start; - stream->segment.base = - segment->time > - qtdemux->segment_base ? segment->time - qtdemux->segment_base : 0; /* now prepare and send the segment */ if (stream->pad) { diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h index 99ba47d582..22469b898f 100644 --- a/gst/isomp4/qtdemux.h +++ b/gst/isomp4/qtdemux.h @@ -123,9 +123,6 @@ struct _GstQTDemux { gint64 seek_offset; gint64 push_seek_start; gint64 push_seek_stop; - guint64 segment_base; /* The offset from which playback was started, needs to - * be subtracted from GstSegment.base to get a correct - * running time whenever a new QtSegment is activated */ #if 0 /* gst index support */