summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Penquerc'h <ogg.k.ogg.k@googlemail.com>2010-01-24 14:41:44 +0000
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2010-01-25 23:50:09 +0000
commited2e09133eb71c8187d509916f675ed1144f89e1 (patch)
treeae7b84cd21464fbb3bfc0d69c7d30f9eeae80033
parent25873a050f6d2742a855caa9b5a466f35b530cbc (diff)
oggdemux: sparse streams aren't timed by end time, and their duration isn't implicit
Fixes timestamps and durations on Kate subtitle streams. See http://www.xiph.org/ogg/doc/ogg-multiplex.html section 'start-time and end-time positioning' for some more details, and bug #600929.
-rw-r--r--ext/ogg/gstoggdemux.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ext/ogg/gstoggdemux.c b/ext/ogg/gstoggdemux.c
index 42037c41..2d00a48f 100644
--- a/ext/ogg/gstoggdemux.c
+++ b/ext/ogg/gstoggdemux.c
@@ -591,6 +591,10 @@ gst_ogg_demux_chain_peer (GstOggPad * pad, ogg_packet * packet,
pad->current_granule);
out_duration = gst_util_uint64_scale (duration,
GST_SECOND * pad->map.granulerate_d, pad->map.granulerate_n);
+ } else if (pad->is_sparse) {
+ out_timestamp = gst_ogg_stream_granule_to_time (&pad->map,
+ pad->current_granule);
+ out_duration = GST_CLOCK_TIME_NONE;
} else {
out_timestamp = gst_ogg_stream_granule_to_time (&pad->map,
pad->current_granule - duration);