From cc529cc40228368ad022902a9c8b550e425a6150 Mon Sep 17 00:00:00 2001 From: ddennedy Date: Sun, 13 Jul 2008 01:27:39 +0000 Subject: [PATCH] consumer_avformat.c: bugfix recent regression with setting aspect ratio. Now it takes it from the profile by default using the quotient properties for best accuracy. Now, one can also override the aspect ratio using the same property name as the ffmpeg command line utility ("aspect") for even greater symmetry. git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@1160 d19143bc-622f-0410-bfdd-b5b2a6649095 --- src/modules/avformat/consumer_avformat.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/modules/avformat/consumer_avformat.c b/src/modules/avformat/consumer_avformat.c index 93b8652..5fb963c 100644 --- a/src/modules/avformat/consumer_avformat.c +++ b/src/modules/avformat/consumer_avformat.c @@ -429,7 +429,6 @@ static AVStream *add_video_stream( mlt_consumer this, AVFormatContext *oc, int c if ( st != NULL ) { char *pix_fmt = mlt_properties_get( properties, "pix_fmt" ); - double ar = mlt_properties_get_double( properties, "aspect_ratio" ); AVCodecContext *c = st->codec; // Establish defaults from AVOptions @@ -463,6 +462,7 @@ static AVStream *add_video_stream( mlt_consumer this, AVFormatContext *oc, int c // we just coerce the values to facilitate a passive behaviour through // the rescale normaliser when using equivalent producers and consumers. // = display_aspect / (width * height) + double ar = mlt_properties_get_double( properties, "aspect_ratio" ); if ( ar == 8.0/9.0 ) // 4:3 NTSC { c->sample_aspect_ratio.num = 10; @@ -484,10 +484,16 @@ static AVStream *add_video_stream( mlt_consumer this, AVFormatContext *oc, int c c->sample_aspect_ratio.den = 81; } } - else + else if ( mlt_properties_get( properties, "aspect" ) ) { + double ar = mlt_properties_get_double( properties, "aspect" ); c->sample_aspect_ratio = av_d2q( ar * c->height / c->width , 255); } + else + { + c->sample_aspect_ratio.num = mlt_properties_get_int( properties, "sample_aspect_num" ); + c->sample_aspect_ratio.den = mlt_properties_get_int( properties, "sample_aspect_den" ); + } if ( mlt_properties_get_double( properties, "qscale" ) > 0 ) { -- 1.7.4.4