summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2008-05-26 13:51:38 +0000
committerWim Taymans <wim.taymans@gmail.com>2008-05-26 13:51:38 +0000
commitafc9d66fbff532c31a1093d1e515235783f0e1e6 (patch)
tree6aff5b2121fe110185f4ebee25a6e77ab68fc1ca /gst
parent22b3fb381c8fd033d10fc54578ba0aa1ff634ea8 (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.c26
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)