qtdemux: simplify segment.base math
authorThiago Santos <thiagoss@osg.samsung.com>
Wed, 28 Jan 2015 17:02:15 +0000 (14:02 -0300)
committerThiago Santos <thiagoss@osg.samsung.com>
Wed, 28 Jan 2015 18:20:58 +0000 (15:20 -0300)
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
gst/isomp4/qtdemux.h

index 32ab273..7e20428 100644 (file)
@@ -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) {
index 99ba47d..22469b8 100644 (file)
@@ -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 */