Mercurial > libavformat.hg
changeset 1022:1d2d3a9f2c30 libavformat
support 64bit date/duration
author | bcoudurier |
---|---|
date | Wed, 22 Mar 2006 10:45:04 +0000 |
parents | 5661350bf214 |
children | 3ac6edd709fc |
files | mov.c |
diffstat | 1 files changed, 19 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mov.c Wed Mar 22 10:33:21 2006 +0000 +++ b/mov.c Wed Mar 22 10:45:04 2006 +0000 @@ -693,16 +693,21 @@ static int mov_read_mvhd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) { - get_byte(pb); /* version */ + int version = get_byte(pb); /* version */ get_byte(pb); get_byte(pb); get_byte(pb); /* flags */ - get_be32(pb); /* creation time */ - get_be32(pb); /* modification time */ + if (version == 1) { + get_be64(pb); + get_be64(pb); + } else { + get_be32(pb); /* creation time */ + get_be32(pb); /* modification time */ + } c->time_scale = get_be32(pb); /* time scale */ #ifdef DEBUG av_log(NULL, AV_LOG_DEBUG, "time scale = %i\n", c->time_scale); #endif - c->duration = get_be32(pb); /* duration */ + c->duration = (version == 1) ? get_be64(pb) : get_be32(pb); /* duration */ get_be32(pb); /* preferred scale */ get_be16(pb); /* preferred volume */ @@ -1335,10 +1340,11 @@ static int mov_read_tkhd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) { AVStream *st; + int version; st = c->fc->streams[c->fc->nb_streams-1]; - get_byte(pb); /* version */ + version = get_byte(pb); /* version */ get_byte(pb); get_byte(pb); get_byte(pb); /* flags */ @@ -1349,12 +1355,17 @@ MOV_TRACK_IN_POSTER 0x0008 */ - get_be32(pb); /* creation time */ - get_be32(pb); /* modification time */ + if (version == 1) { + get_be64(pb); + get_be64(pb); + } else { + get_be32(pb); /* creation time */ + get_be32(pb); /* modification time */ + } st->id = (int)get_be32(pb); /* track id (NOT 0 !)*/ get_be32(pb); /* reserved */ st->start_time = 0; /* check */ - get_be32(pb); /* highlevel (considering edits) duration in movie timebase */ + (version == 1) ? get_be64(pb) : get_be32(pb); /* highlevel (considering edits) duration in movie timebase */ get_be32(pb); /* reserved */ get_be32(pb); /* reserved */