[FFmpeg-devel] [PATCH] fix MOV aspect ratio handling with 'pasp'
Andrew Wason
rectalogic
Sat Feb 27 21:15:45 CET 2010
Commit r21301 broke MOV aspect ratio handling when the video has a
'pasp' atom. See the bug report for a more detailed discussion and
sample video:
https://roundup.ffmpeg.org/issue1754
The patch I attached to issue1754 wasn't very good. Attached here is a
much cleaner, simpler patch. If the aspect ratio implied by the track
dimensions differs from what was set by 'pasp' or the track matrix,
then multiply them - otherwise use the track dimensions aspect.
This gets correct results with all the samples I tested with.
Andrew
-------------- next part --------------
Index: libavformat/mov.c
===================================================================
--- libavformat/mov.c (revision 22094)
+++ libavformat/mov.c (working copy)
@@ -1656,7 +1656,8 @@
if (st->codec->width != sc->width || st->codec->height != sc->height) {
AVRational r = av_d2q(((double)st->codec->height * sc->width) /
((double)st->codec->width * sc->height), INT_MAX);
- if (st->sample_aspect_ratio.num)
+ if (st->sample_aspect_ratio.num &&
+ st->sample_aspect_ratio.num != r.num && st->sample_aspect_ratio.den != r.den)
st->sample_aspect_ratio = av_mul_q(st->sample_aspect_ratio, r);
else
st->sample_aspect_ratio = r;
More information about the ffmpeg-devel
mailing list