Mercurial > libavformat.hg
changeset 761:805598adf3e9 libavformat
round duration up in mov
author | michael |
---|---|
date | Sat, 14 May 2005 19:48:32 +0000 |
parents | c72bba158baa |
children | 1d330c4d6411 |
files | movenc.c |
diffstat | 1 files changed, 3 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/movenc.c Fri May 13 18:10:23 2005 +0000 +++ b/movenc.c Sat May 14 19:48:32 2005 +0000 @@ -715,7 +715,6 @@ 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 @@ 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 @@ // 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 @@ 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 @@ 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)