Skip to content
Snippets Groups Projects
Commit 65b875d8 authored by Frank Barchard's avatar Frank Barchard Committed by Baptiste Coudurier
Browse files

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
parent ad420e25
No related branches found
No related tags found
No related merge requests found
......@@ -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");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment