Commit 14bc5704 authored by Michael Niedermayer's avatar Michael Niedermayer

avformat/movenc: avoid floats in width/height/aspect ratio computations

This avoids the possibility for rounding/precision differences between platforms
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 3331213e
...@@ -2368,10 +2368,12 @@ static int mov_write_tkhd_tag(AVIOContext *pb, MOVMuxContext *mov, ...@@ -2368,10 +2368,12 @@ static int mov_write_tkhd_tag(AVIOContext *pb, MOVMuxContext *mov,
avio_wb32(pb, track->enc->width << 16); avio_wb32(pb, track->enc->width << 16);
avio_wb32(pb, track->height << 16); avio_wb32(pb, track->height << 16);
} else { } else {
double sample_aspect_ratio = av_q2d(st->sample_aspect_ratio); int64_t track_width_1616 = av_rescale(st->sample_aspect_ratio.num,
if (!sample_aspect_ratio || track->height != track->enc->height) track->enc->width * 0x10000LL,
sample_aspect_ratio = 1; st->sample_aspect_ratio.den);
avio_wb32(pb, sample_aspect_ratio * track->enc->width * 0x10000); if (!track_width_1616 || track->height != track->enc->height)
track_width_1616 = track->enc->width * 0x10000;
avio_wb32(pb, track_width_1616);
avio_wb32(pb, track->height * 0x10000); avio_wb32(pb, track->height * 0x10000);
} }
} else { } else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment