qtdemux: Round timestamp up when scaling to mov format
authorRobert Swain <robert.swain@collabora.co.uk>
Tue, 25 May 2010 19:14:05 +0000 (21:14 +0200)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 25 May 2010 23:08:16 +0000 (00:08 +0100)
Fix timestamp rounding to allow the correct index to be located.

The issue was that scaling from GStreamer time format to mov time format was
rounding down causing the timestamp of the newsegment event received after a
flushing keyframe seek to find the sample index before the one it should
causing further backward seeking to the keyframe prior until no rounding error
occurred.

Rounding up when scaling to mov format has the desired effect, and it is
not clear whether just the _round () variant would be sufficient.

Fixes bug #619105

gst/qtdemux/qtdemux.c

index b5ad50c24b3b32dc3e2781af78347d2b04672643..b88d39923bdac3a3b11183af537abfcadc697a8c 100644 (file)
@@ -817,7 +817,8 @@ gst_qtdemux_find_index_linear (GstQTDemux * qtdemux, QtDemuxStream * str,
   guint32 index = 0;
 
   /* convert media_time to mov format */
-  media_time = gst_util_uint64_scale (media_time, str->timescale, GST_SECOND);
+  media_time =
+      gst_util_uint64_scale_ceil (media_time, str->timescale, GST_SECOND);
 
   if (media_time == result->timestamp)
     return index;