diff options
-rw-r--r-- | libavformat/movenc.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 6a4e16a..8b0a579 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -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->height << 16); } else { - double sample_aspect_ratio = av_q2d(st->sample_aspect_ratio); - if (!sample_aspect_ratio || track->height != track->enc->height) - sample_aspect_ratio = 1; - avio_wb32(pb, sample_aspect_ratio * track->enc->width * 0x10000); + int64_t track_width_1616 = av_rescale(st->sample_aspect_ratio.num, + track->enc->width * 0x10000LL, + st->sample_aspect_ratio.den); + 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); } } else { |