From: lilo_booter Date: Fri, 19 Aug 2005 12:20:29 +0000 (+0000) Subject: + Yet another aspect ratio correction for the filter transition (not 100% correct... X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=982cce93f18192cdc05fbddcb209ac3950b64318;p=mlt + Yet another aspect ratio correction for the filter transition (not 100% correct yet...) + Correction for aspect_ratio == 0 case (should honour consumer) git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@804 d19143bc-622f-0410-bfdd-b5b2a6649095 --- diff --git a/src/modules/core/transition_composite.c b/src/modules/core/transition_composite.c index 5fb0eb38..4cbf324a 100644 --- a/src/modules/core/transition_composite.c +++ b/src/modules/core/transition_composite.c @@ -732,11 +732,11 @@ static int get_b_frame_image( mlt_transition this, mlt_frame b_frame, uint8_t ** int normalised_height = geometry->item.h; int real_width = get_value( b_props, "real_width", "width" ); int real_height = get_value( b_props, "real_height", "height" ); - double input_ar = mlt_properties_get_double( b_props, "consumer_aspect_ratio" ); + double input_ar = mlt_properties_get_double( b_props, "aspect_ratio" ); double output_ar = mlt_properties_get_double( b_props, "consumer_aspect_ratio" ); - int scaled_width = input_ar / output_ar * real_width; + int scaled_width = ( input_ar == 0.0 ? output_ar : input_ar ) / output_ar * real_width; int scaled_height = real_height; - + // Now ensure that our images fit in the normalised frame if ( scaled_width > normalised_width ) { @@ -1043,8 +1043,10 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f if ( a_frame == b_frame ) { + double aspect_ratio = mlt_frame_get_aspect_ratio( b_frame ); get_b_frame_image( this, b_frame, &image_b, &width_b, &height_b, &result ); alpha_b = mlt_frame_get_alpha_mask( b_frame ); + mlt_properties_set_double( a_props, "aspect_ratio", aspect_ratio ); } // Get the image from the a frame