From 65b875d8fcc2a40cc45b41516c4bec4f90909b20 Mon Sep 17 00:00:00 2001 From: Frank Barchard 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 Originally committed as revision 19435 to svn://svn.ffmpeg.org/ffmpeg/trunk --- 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 ff86e56e20..5c1d850462 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");