diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2008-05-26 13:51:38 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2008-05-26 13:51:38 +0000 |
commit | afc9d66fbff532c31a1093d1e515235783f0e1e6 (patch) | |
tree | 6aff5b2121fe110185f4ebee25a6e77ab68fc1ca /gst | |
parent | 22b3fb381c8fd033d10fc54578ba0aa1ff634ea8 (diff) |
gst/qtdemux/qtdemux.c: Unbreak segment activation again. Fixes #531672.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_find_segment),
(gst_qtdemux_activate_segment):
Unbreak segment activation again. Fixes #531672.
Diffstat (limited to 'gst')
-rw-r--r-- | gst/qtdemux/qtdemux.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c index 655024db..b521a573 100644 --- a/gst/qtdemux/qtdemux.c +++ b/gst/qtdemux/qtdemux.c @@ -559,13 +559,21 @@ gst_qtdemux_find_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, gint i; guint32 seg_idx; + GST_LOG_OBJECT (qtdemux, "finding segment for %" GST_TIME_FORMAT, + GST_TIME_ARGS (time_position)); + /* find segment corresponding to time_position if we are looking * for a segment. */ seg_idx = -1; for (i = 0; i < stream->n_segments; i++) { QtDemuxSegment *segment = &stream->segments[i]; - if (segment->time <= time_position && time_position <= segment->stop_time) { + GST_LOG_OBJECT (qtdemux, + "looking at segment %" GST_TIME_FORMAT "-%" GST_TIME_FORMAT, + GST_TIME_ARGS (segment->time), GST_TIME_ARGS (segment->stop_time)); + + if (segment->time <= time_position && time_position < segment->stop_time) { + GST_LOG_OBJECT (qtdemux, "segment %d matches", i); seg_idx = i; break; } @@ -1200,20 +1208,32 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, guint64 start, stop, time; gdouble rate; + GST_LOG_OBJECT (qtdemux, "activate segment %d, offset %" G_GUINT64_FORMAT, + seg_idx, offset); + /* update the current segment */ stream->segment_index = seg_idx; /* get the segment */ segment = &stream->segments[seg_idx]; - if (offset < segment->time) + if (offset < segment->time) { + GST_WARNING_OBJECT (qtdemux, "offset < segment->time %" G_GUINT64_FORMAT, + segment->time); return FALSE; + } /* get time in this segment */ seg_time = offset - segment->time; - if (seg_time > segment->duration) + GST_LOG_OBJECT (qtdemux, "seg_time %" GST_TIME_FORMAT, + GST_TIME_ARGS (seg_time)); + + if (seg_time > segment->duration) { + GST_LOG_OBJECT (qtdemux, "seg_time > segment->duration %" GST_TIME_FORMAT, + GST_TIME_ARGS (segment->duration)); return FALSE; + } /* calc media start/stop */ if (qtdemux->segment.stop == -1) |