X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fgtk2%2Fproducer_pixbuf.c;h=81255d737760ec16005caff735365ce2e600c414;hb=a0f5ab7bd6445ba7a3e5a366bcb893a31dce34c7;hp=3bfe553de848529427d3c63d731eb2a79520edec;hpb=d0a840da47c2c35959641c26d74b1498df0ed6be;p=melted diff --git a/src/modules/gtk2/producer_pixbuf.c b/src/modules/gtk2/producer_pixbuf.c index 3bfe553..81255d7 100644 --- a/src/modules/gtk2/producer_pixbuf.c +++ b/src/modules/gtk2/producer_pixbuf.c @@ -90,7 +90,7 @@ mlt_producer producer_pixbuf_init( char *filename ) gap ++; } } - mlt_properties_set_timecode( properties, "out", this->count ); + mlt_properties_set_position( properties, "out", this->count * 25 ); } else if ( strstr( filename, "/.all." ) != NULL ) { @@ -117,7 +117,7 @@ mlt_producer producer_pixbuf_init( char *filename ) free( de[ i ] ); } - mlt_properties_set_timecode( properties, "out", this->count ); + mlt_properties_set_position( properties, "out", this->count * 25 ); free( de ); free( dir_name ); } @@ -125,7 +125,7 @@ mlt_producer producer_pixbuf_init( char *filename ) { this->filenames = realloc( this->filenames, sizeof( char * ) * ( this->count + 1 ) ); this->filenames[ this->count ++ ] = strdup( filename ); - mlt_properties_set_timecode( properties, "out", 1 ); + mlt_properties_set_position( properties, "out", 25 ); } // Initialise gobject types @@ -207,7 +207,7 @@ static int producer_get_frame( mlt_producer producer, mlt_frame_ptr frame, int i int image_idx = ( int )floor( mlt_producer_position( producer ) / ttl ) % this->count; // Update timecode on the frame we're creating - mlt_frame_set_timecode( *frame, mlt_producer_position( producer ) ); + mlt_frame_set_position( *frame, mlt_producer_position( producer ) ); // optimization for subsequent iterations on single picture if ( this->image != NULL && image_idx == this->image_idx ) @@ -217,9 +217,12 @@ static int producer_get_frame( mlt_producer producer, mlt_frame_ptr frame, int i mlt_properties_set_int( properties, "height", this->height ); // Set the compositing properties - mlt_properties_set_int( properties, "x", mlt_properties_get_int( producer_props, "x" ) ); - mlt_properties_set_int( properties, "y", mlt_properties_get_int( producer_props, "y" ) ); - mlt_properties_set_double( properties, "mix", mlt_properties_get_double( producer_props, "mix" ) ); + if ( mlt_properties_get( producer_props, "x" ) != NULL ) + mlt_properties_set_int( properties, "x", mlt_properties_get_int( producer_props, "x" ) ); + if ( mlt_properties_get( producer_props, "y" ) != NULL ) + mlt_properties_set_int( properties, "y", mlt_properties_get_int( producer_props, "y" ) ); + if ( mlt_properties_get( producer_props, "mix" ) != NULL ) + mlt_properties_set_double( properties, "image.mix", mlt_properties_get_double( producer_props, "mix" ) ); // if picture sequence pass the image and alpha data without destructor mlt_properties_set_data( properties, "image", this->image, 0, NULL, NULL ); @@ -247,7 +250,7 @@ static int producer_get_frame( mlt_producer producer, mlt_frame_ptr frame, int i { GdkPixbuf *temp = pixbuf; GdkPixbuf *scaled = gdk_pixbuf_scale_simple( pixbuf, - (gint) ( (float) gdk_pixbuf_get_width( pixbuf ) * 54.0/59.0), + (gint) ( (float) gdk_pixbuf_get_width( pixbuf ) * 45.0/48.0), gdk_pixbuf_get_height( pixbuf ), GDK_INTERP_HYPER ); pixbuf = scaled; g_object_unref( temp ); @@ -256,7 +259,7 @@ static int producer_get_frame( mlt_producer producer, mlt_frame_ptr frame, int i { GdkPixbuf *temp = pixbuf; GdkPixbuf *scaled = gdk_pixbuf_scale_simple( pixbuf, - (gint) ( (float) gdk_pixbuf_get_width( pixbuf ) * 11.0/10.0 ), + (gint) ( (float) gdk_pixbuf_get_width( pixbuf ) * 9.0/8.0 ), gdk_pixbuf_get_height( pixbuf ), GDK_INTERP_HYPER ); pixbuf = scaled; g_object_unref( temp ); @@ -301,9 +304,12 @@ static int producer_get_frame( mlt_producer producer, mlt_frame_ptr frame, int i mlt_properties_set_int( properties, "height", this->height ); // Set the compositing properties - mlt_properties_set_int( properties, "x", mlt_properties_get_int( producer_props, "x" ) ); - mlt_properties_set_int( properties, "y", mlt_properties_get_int( producer_props, "y" ) ); - mlt_properties_set_double( properties, "mix", mlt_properties_get_double( producer_props, "mix" ) ); + if ( mlt_properties_get( producer_props, "x" ) != NULL ) + mlt_properties_set_int( properties, "x", mlt_properties_get_int( producer_props, "x" ) ); + if ( mlt_properties_get( producer_props, "y" ) != NULL ) + mlt_properties_set_int( properties, "y", mlt_properties_get_int( producer_props, "y" ) ); + if ( mlt_properties_get( producer_props, "mix" ) != NULL ) + mlt_properties_set_double( properties, "mix", mlt_properties_get_double( producer_props, "mix" ) ); // Pass alpha and image on properties with or without destructor this->image = image;