mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
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
This commit is contained in:
parent
ad420e25e2
commit
65b875d8fc
@ -80,6 +80,7 @@ int main(int argc, char *argv[])
|
|||||||
unsigned char atom_bytes[ATOM_PREAMBLE_SIZE];
|
unsigned char atom_bytes[ATOM_PREAMBLE_SIZE];
|
||||||
uint32_t atom_type = 0;
|
uint32_t atom_type = 0;
|
||||||
uint64_t atom_size = 0;
|
uint64_t atom_size = 0;
|
||||||
|
uint64_t atom_offset = 0;
|
||||||
uint64_t last_offset;
|
uint64_t last_offset;
|
||||||
unsigned char *moov_atom;
|
unsigned char *moov_atom;
|
||||||
unsigned char *ftyp_atom = 0;
|
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_size = (uint32_t)BE_32(&atom_bytes[0]);
|
||||||
atom_type = BE_32(&atom_bytes[4]);
|
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 */
|
/* keep ftyp atom */
|
||||||
if (atom_type == FTYP_ATOM) {
|
if (atom_type == FTYP_ATOM) {
|
||||||
ftyp_atom_size = atom_size;
|
ftyp_atom_size = atom_size;
|
||||||
@ -144,8 +131,7 @@ int main(int argc, char *argv[])
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
start_offset = ftello(infile);
|
start_offset = ftello(infile);
|
||||||
continue;
|
} else {
|
||||||
}
|
|
||||||
|
|
||||||
/* 64-bit special case */
|
/* 64-bit special case */
|
||||||
if (atom_size == 1) {
|
if (atom_size == 1) {
|
||||||
@ -158,6 +144,28 @@ int main(int argc, char *argv[])
|
|||||||
fseeko(infile, atom_size - ATOM_PREAMBLE_SIZE, SEEK_CUR);
|
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) {
|
if (atom_type != MOOV_ATOM) {
|
||||||
printf ("last atom in file was not a moov atom\n");
|
printf ("last atom in file was not a moov atom\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user