X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fkdenlive%2Fproducer_framebuffer.c;h=10dc22fecee88b00686cc5610b63607404f55701;hb=00ec4e199c9bd1213ec1ada66b662b5b0b181811;hp=d028eaac916b00a6971a9500d1da1836ba327bcd;hpb=e8cb811d00abe2b31e1e6591da9e3c13799228eb;p=melted diff --git a/src/modules/kdenlive/producer_framebuffer.c b/src/modules/kdenlive/producer_framebuffer.c index d028eaa..10dc22f 100644 --- a/src/modules/kdenlive/producer_framebuffer.c +++ b/src/modules/kdenlive/producer_framebuffer.c @@ -194,7 +194,7 @@ static int producer_get_frame( mlt_producer this, mlt_frame_ptr frame, int index mlt_producer producer_framebuffer_init( mlt_profile profile, mlt_service_type type, const char *id, char *arg ) { - + if ( !arg ) return NULL; mlt_producer this = NULL; this = calloc( 1, sizeof( struct mlt_producer_s ) ); mlt_producer_init( this, NULL ); @@ -236,7 +236,6 @@ mlt_producer producer_framebuffer_init( mlt_profile profile, mlt_service_type ty if (speed == 0.0) speed = 1.0; - if ( this != NULL && real_producer != NULL) { // Get the properties of this producer @@ -252,12 +251,18 @@ mlt_producer producer_framebuffer_init( mlt_profile profile, mlt_service_type ty // Grab some stuff from the real_producer mlt_properties_pass_list( properties, MLT_PRODUCER_PROPERTIES( real_producer ), "length, width,height" ); + if ( speed < 0 ) + { + speed = -speed; + mlt_properties_set_int( properties, "reverse", 1 ); + } if ( speed != 1.0 ) { - double real_length = (double) mlt_producer_get_length( real_producer ); - mlt_properties_set_position( properties, "length", real_length / speed ); + double real_length = ( (double) mlt_producer_get_length( real_producer ) ) / speed; + mlt_properties_set_position( properties, "length", real_length ); } + mlt_properties_set_position( properties, "out", mlt_producer_get_length( this ) - 1 ); // Since we control the seeking, prevent it from seeking on its own mlt_producer_set_speed( real_producer, 0 );