summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--gst/qtdemux/qtdemux.c9
2 files changed, 14 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 61492401..efd5811b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,14 @@
* gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
(qtdemux_parse_trak):
+ use the correct variable to check if we can calculate
+ the last chunk. Looks like an obvious bug, and makes
+ the dump of offsets comparable to other tools
+
+2006-02-07 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
+ (qtdemux_parse_trak):
clean up some debugging, using _OBJECT, moving recurring
messages to LOG level
diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c
index af829ef6..a0e865ff 100644
--- a/gst/qtdemux/qtdemux.c
+++ b/gst/qtdemux/qtdemux.c
@@ -2357,7 +2357,10 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
int samples_per_chunk;
first_chunk = QTDEMUX_GUINT32_GET (stsc->data + 16 + i * 12 + 0) - 1;
- if (i == n_samples - 1) {
+ /* the last chunk of each entry is calculated by taking the first chunk
+ * of the next entry; except if there is no next, where we fake it with
+ * INT_MAX */
+ if (i == n_samples_per_chunk - 1) {
last_chunk = INT_MAX;
} else {
last_chunk = QTDEMUX_GUINT32_GET (stsc->data + 16 + i * 12 + 12) - 1;
@@ -2365,8 +2368,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
samples_per_chunk = QTDEMUX_GUINT32_GET (stsc->data + 16 + i * 12 + 4);
GST_LOG_OBJECT (qtdemux,
- "sample %d has first_chunk %d, last_chunk %d, samples_per_chunk %d",
- i, first_chunk, last_chunk, samples_per_chunk);
+ "entry %d has first_chunk %d, last_chunk %d, samples_per_chunk %d", i,
+ first_chunk, last_chunk, samples_per_chunk);
for (j = first_chunk; j < last_chunk; j++) {
guint64 chunk_offset;