Allows runtime modifications to region fx
[melted] / src / modules / core / transition_composite.c
index 88c1222..174d532 100644 (file)
@@ -987,6 +987,9 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f
        // Get the image from the a frame
        mlt_frame_get_image( a_frame, image, format, width, height, 1 );
 
+       // Get the properties from the transition
+       mlt_properties properties = mlt_transition_properties( this );
+
        if ( b_frame != NULL )
        {
                // Get the properties of the a frame
@@ -995,9 +998,6 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f
                // Get the properties of the b frame
                mlt_properties b_props = mlt_frame_properties( b_frame );
 
-               // Get the properties from the transition
-               mlt_properties properties = mlt_transition_properties( this );
-
                // Structures for geometry
                struct geometry_s result;
 
@@ -1010,7 +1010,10 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f
                
                // Optimisation - no compositing required
                if ( result.mix == 0 || ( result.w == 0 && result.h == 0 ) )
+               {
+                       mlt_properties_set_data( properties, "geometries", NULL, 0, NULL, NULL );
                        return 0;
+               }
 
                // Since we are the consumer of the b_frame, we must pass along these
                // consumer properties from the a_frame
@@ -1033,7 +1036,8 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f
                        
                        int32_t luma_softness = mlt_properties_get_double( properties, "softness" ) * ( 1 << 16 );
                        uint16_t *luma_bitmap = get_luma( properties, width_b, height_b );
-                       composite_line_fn line_fn = mlt_properties_get_int( properties, "_MMX" ) ? composite_line_yuv_mmx : NULL;
+                       //composite_line_fn line_fn = mlt_properties_get_int( properties, "_MMX" ) ? composite_line_yuv_mmx : NULL;
+                       composite_line_fn line_fn = NULL;
 
                        for ( field = 0; field < ( progressive ? 1 : 2 ); field++ )
                        {
@@ -1052,6 +1056,9 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f
                }
        }
 
+       // Force geometries to be recalculated
+       mlt_properties_set_data( properties, "geometries", NULL, 0, NULL, NULL );
+
        return 0;
 }