X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fcore%2Ftransition_luma.c;fp=src%2Fmodules%2Fcore%2Ftransition_luma.c;h=435aeb30b8ddff70209896e4ca927e1bcd1555ce;hb=702e73b84d90830062ebe07ba01b72ad59d48d93;hp=248d8485bb4133c063c607a4ae9e9cac5b807ca8;hpb=8ab6e82d1ca2f48ba027f223b650577036d9a589;p=melted diff --git a/src/modules/core/transition_luma.c b/src/modules/core/transition_luma.c index 248d848..435aeb3 100644 --- a/src/modules/core/transition_luma.c +++ b/src/modules/core/transition_luma.c @@ -465,6 +465,7 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f mlt_properties_get_int( b_props, "luma.progressive" ); int top_field_first = mlt_properties_get_int( b_props, "top_field_first" ); int reverse = mlt_properties_get_int( properties, "reverse" ); + int invert = mlt_properties_get_int( properties, "invert" ); if ( mlt_properties_get( a_props, "rescale.interp" ) == NULL ) mlt_properties_set( a_props, "rescale.interp", "nearest" ); @@ -480,8 +481,8 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f if ( mix >= 1.0 ) mix -= floor( mix ); - mix = reverse ? 1 - mix : mix; - frame_delta *= reverse ? -1.0 : 1.0; + mix = reverse || invert ? 1 - mix : mix; + frame_delta *= reverse || invert ? -1.0 : 1.0; // Ensure we get scaling on the b_frame mlt_properties_set( b_props, "rescale.interp", "nearest" ); @@ -491,16 +492,16 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f if ( luma_width > 0 && luma_height > 0 && luma_bitmap != NULL ) // Composite the frames using a luma map - luma_composite( a_frame, b_frame, luma_width, luma_height, luma_bitmap, mix, frame_delta, + luma_composite( !invert ? a_frame : b_frame, !invert ? b_frame : a_frame, luma_width, luma_height, luma_bitmap, mix, frame_delta, luma_softness, progressive ? -1 : top_field_first, width, height ); else // Dissolve the frames using the time offset for mix value dissolve_yuv( a_frame, b_frame, mix, *width, *height ); // Extract the a_frame image info - *width = mlt_properties_get_int( a_props, "width" ); - *height = mlt_properties_get_int( a_props, "height" ); - *image = mlt_properties_get_data( a_props, "image", NULL ); + *width = mlt_properties_get_int( !invert ? a_props : b_props, "width" ); + *height = mlt_properties_get_int( !invert ? a_props : b_props, "height" ); + *image = mlt_properties_get_data( !invert ? a_props : b_props, "image", NULL ); return 0; }