From d3c4a783247bf923d95924c225d94419e7c463f8 Mon Sep 17 00:00:00 2001 From: bcoudurier Date: Wed, 15 Jul 2009 08:57:27 +0000 Subject: [PATCH] print atom info during parsing, patch by Frank Barchard, fbarchard at google dot com git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19435 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b --- tools/qt-faststart.c | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/tools/qt-faststart.c b/tools/qt-faststart.c index ff86e56e2..5c1d85046 100644 --- a/tools/qt-faststart.c +++ b/tools/qt-faststart.c @@ -80,6 +80,7 @@ int main(int argc, char *argv[]) unsigned char atom_bytes[ATOM_PREAMBLE_SIZE]; uint32_t atom_type = 0; uint64_t atom_size = 0; + uint64_t atom_offset = 0; uint64_t last_offset; unsigned char *moov_atom; unsigned char *ftyp_atom = 0; @@ -112,20 +113,6 @@ int main(int argc, char *argv[]) atom_size = (uint32_t)BE_32(&atom_bytes[0]); atom_type = BE_32(&atom_bytes[4]); - if ((atom_type != FREE_ATOM) && - (atom_type != JUNK_ATOM) && - (atom_type != MDAT_ATOM) && - (atom_type != MOOV_ATOM) && - (atom_type != PNOT_ATOM) && - (atom_type != SKIP_ATOM) && - (atom_type != WIDE_ATOM) && - (atom_type != PICT_ATOM) && - (atom_type != UUID_ATOM) && - (atom_type != FTYP_ATOM)) { - printf ("encountered non-QT top-level atom (is this a Quicktime file?)\n"); - break; - } - /* keep ftyp atom */ if (atom_type == FTYP_ATOM) { ftyp_atom_size = atom_size; @@ -144,8 +131,7 @@ int main(int argc, char *argv[]) return 1; } start_offset = ftello(infile); - continue; - } + } else { /* 64-bit special case */ if (atom_size == 1) { @@ -158,6 +144,28 @@ int main(int argc, char *argv[]) fseeko(infile, atom_size - ATOM_PREAMBLE_SIZE, SEEK_CUR); } } + printf("%c%c%c%c %10"PRIu64" %"PRIu64"\n", + (atom_type >> 24) & 255, + (atom_type >> 16) & 255, + (atom_type >> 8) & 255, + (atom_type >> 0) & 255, + atom_offset, + atom_size); + if ((atom_type != FREE_ATOM) && + (atom_type != JUNK_ATOM) && + (atom_type != MDAT_ATOM) && + (atom_type != MOOV_ATOM) && + (atom_type != PNOT_ATOM) && + (atom_type != SKIP_ATOM) && + (atom_type != WIDE_ATOM) && + (atom_type != PICT_ATOM) && + (atom_type != UUID_ATOM) && + (atom_type != FTYP_ATOM)) { + printf ("encountered non-QT top-level atom (is this a Quicktime file?)\n"); + break; + } + atom_offset += atom_size; + } if (atom_type != MOOV_ATOM) { printf ("last atom in file was not a moov atom\n"); -- 2.11.4.GIT