diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2005-05-14 19:48:32 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2005-05-14 19:48:32 +0000 |
commit | 83fa2ef8cb569f7bb29600dee4d6c954b60b4eaf (patch) | |
tree | e6dc4ece6ae3319bad4465ff277bc56933ec0320 | |
parent | 89ba9eede999bbf2a02d2775272c0e801c2ee6da (diff) | |
download | ffmpeg-83fa2ef8cb569f7bb29600dee4d6c954b60b4eaf.tar.gz |
round duration up in mov
Originally committed as revision 4242 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavformat/movenc.c | 10 | ||||
-rw-r--r-- | tests/libav.regression.ref | 2 |
2 files changed, 4 insertions, 8 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 9df793ec82..58660e4836 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -715,7 +715,6 @@ static int mov_write_mdia_tag(ByteIOContext *pb, MOVTrack* track) static int mov_write_tkhd_tag(ByteIOContext *pb, MOVTrack* track) { - int64_t maxTrackLenTemp; put_be32(pb, 0x5c); /* size (always 0x5c) */ put_tag(pb, "tkhd"); put_be32(pb, 0xf); /* version & flags (track enabled) */ @@ -723,8 +722,7 @@ static int mov_write_tkhd_tag(ByteIOContext *pb, MOVTrack* track) put_be32(pb, track->time); /* modification time */ put_be32(pb, track->trackID); /* track-id */ put_be32(pb, 0); /* reserved */ - maxTrackLenTemp = ((int64_t)globalTimescale*(int64_t)track->trackDuration)/(int64_t)track->timescale; - put_be32(pb, (long)maxTrackLenTemp); /* duration */ + put_be32(pb, av_rescale_rnd(track->trackDuration, globalTimescale, track->timescale, AV_ROUND_UP)); /* duration */ put_be32(pb, 0); /* reserved */ put_be32(pb, 0); /* reserved */ @@ -764,7 +762,6 @@ static int mov_write_tkhd_tag(ByteIOContext *pb, MOVTrack* track) // This box seems important for the psp playback ... without it the movie seems to hang static int mov_write_edts_tag(ByteIOContext *pb, MOVTrack *track) { - int64_t maxTrackLenTemp; put_be32(pb, 0x24); /* size */ put_tag(pb, "edts"); put_be32(pb, 0x1c); /* size */ @@ -772,8 +769,7 @@ static int mov_write_edts_tag(ByteIOContext *pb, MOVTrack *track) put_be32(pb, 0x0); put_be32(pb, 0x1); - maxTrackLenTemp = ((int64_t)globalTimescale*(int64_t)track->trackDuration)/(int64_t)track->timescale; - put_be32(pb, (long)maxTrackLenTemp); /* duration ... doesn't seem to effect psp */ + put_be32(pb, av_rescale_rnd(track->trackDuration, globalTimescale, track->timescale, AV_ROUND_UP)); /* duration ... doesn't seem to effect psp */ put_be32(pb, 0x0); put_be32(pb, 0x00010000); @@ -842,7 +838,7 @@ static int mov_write_mvhd_tag(ByteIOContext *pb, MOVContext *mov) put_be32(pb, mov->timescale); /* timescale */ for (i=0; i<MAX_STREAMS; i++) { if(mov->tracks[i].entry > 0) { - maxTrackLenTemp = ((int64_t)globalTimescale*(int64_t)mov->tracks[i].trackDuration)/(int64_t)mov->tracks[i].timescale; + maxTrackLenTemp = av_rescale_rnd(mov->tracks[i].trackDuration, globalTimescale, mov->tracks[i].timescale, AV_ROUND_UP); if(maxTrackLen < maxTrackLenTemp) maxTrackLen = maxTrackLenTemp; if(maxTrackID < mov->tracks[i].trackID) diff --git a/tests/libav.regression.ref b/tests/libav.regression.ref index 34346abf25..a0a28aee03 100644 --- a/tests/libav.regression.ref +++ b/tests/libav.regression.ref @@ -19,7 +19,7 @@ ffmpeg regression test 794934a02582f8dfc85d1856514cf37c *./data/b-libav.flv 339325 ./data/b-libav.flv ./data/b-libav.flv CRC=7b9076f8 -a2b938a9f14030d2f4bd4e32d98e9b0a *./data/b-libav.mov +55d26d5f682f75fa57a5c126056c4c31 *./data/b-libav.mov 369865 ./data/b-libav.mov ./data/b-libav.mov CRC=48f5a90d f34e560f8f0f2c603cf0cb3e7eeb031b *./data/b-libav.nut |