Better fix for aspect_ratio problem in framebuffer producer
[melted] / src / modules / kdenlive / producer_framebuffer.c
index 03ed6b3..9e6ba2d 100644 (file)
@@ -164,6 +164,8 @@ static int producer_get_frame( mlt_producer this, mlt_frame_ptr frame, int index
 
                        // Get the frame
                        mlt_service_get_frame( MLT_PRODUCER_SERVICE( real_producer ), &first_frame, index );
+
+                       double ratio = (double) mlt_properties_get_int( MLT_FRAME_PROPERTIES( first_frame ), "width" ) / (double) mlt_properties_get_int( MLT_FRAME_PROPERTIES( first_frame ), "height" ) / ( (double) mlt_properties_get_int(MLT_FRAME_PROPERTIES( *frame ), "width" ) / (double) mlt_properties_get_int( MLT_FRAME_PROPERTIES( *frame ), "height" ));
                }
 
                // Make sure things are in their place
@@ -176,11 +178,10 @@ static int producer_get_frame( mlt_producer this, mlt_frame_ptr frame, int index
                mlt_frame_push_service( *frame, this );
                mlt_frame_push_service( *frame, framebuffer_get_image );
 
-               double ratio = (double) mlt_properties_get_int(properties, "width" ) / (double) mlt_properties_get_int( properties, "height" ) / ( (double) mlt_properties_get_int( MLT_FRAME_PROPERTIES( first_frame ), "width" ) / (double) mlt_properties_get_int( MLT_FRAME_PROPERTIES( first_frame ), "height" ) );
 
                // Give the returned frame temporal identity
                mlt_frame_set_position( *frame, mlt_producer_position( this ) );
-               mlt_properties_set_double( MLT_FRAME_PROPERTIES(*frame), "aspect_ratio", mlt_properties_get_double(MLT_PRODUCER_PROPERTIES( real_producer), "aspect_ratio" ) * ratio);
+               mlt_properties_set_double( MLT_FRAME_PROPERTIES(*frame), "aspect_ratio", mlt_properties_get_double( properties, "ratio_fix" ));
        }
 
        return 0;