summaryrefslogtreecommitdiff
path: root/libavformat/movenc.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2005-05-14 19:48:32 +0000
committerMichael Niedermayer <michaelni@gmx.at>2005-05-14 19:48:32 +0000
commit83fa2ef8cb569f7bb29600dee4d6c954b60b4eaf (patch)
treee6dc4ece6ae3319bad4465ff277bc56933ec0320 /libavformat/movenc.c
parent89ba9eede999bbf2a02d2775272c0e801c2ee6da (diff)
round duration up in mov
Originally committed as revision 4242 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/movenc.c')
-rw-r--r--libavformat/movenc.c10
1 files changed, 3 insertions, 7 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)