some bugfixes, filter_shape producer, pixbuf takes svg xml, fezzik can take a service...
[melted] / src / modules / fezzik / producer_fezzik.c
index 4ff34eb..bcc801c 100644 (file)
@@ -61,6 +61,8 @@ static mlt_producer create_producer( char *file )
                result = mlt_factory_producer( "pixbuf", file );
        else if ( strstr( file, ".png" ) )
                result = mlt_factory_producer( "pixbuf", file );
+       else if ( strstr( file, ".svg" ) )
+               result = mlt_factory_producer( "pixbuf", file );
        else if ( strstr( file, ".txt" ) )
                result = mlt_factory_producer( "pango", file );
        else if ( strstr( file, ".westley" ) )
@@ -81,9 +83,9 @@ static mlt_producer create_producer( char *file )
        if ( result == NULL )
                result = mlt_factory_producer( "avformat", file );
 
-       // 4th line fallbacks 
+       // 4th - allow explicit construction
        if ( result == NULL )
-               result = mlt_factory_producer( "ffmpeg", file );
+               result = mlt_factory_producer( file, NULL );
 
        return result;
 }
@@ -108,7 +110,9 @@ static mlt_service create_filter( mlt_tractor tractor, mlt_service last, char *e
 mlt_producer producer_fezzik_init( char *arg )
 {
        // Create the producer that the tractor will contain
-       mlt_producer producer = create_producer( arg );
+       mlt_producer producer = NULL;
+       if ( arg != NULL )
+               producer = create_producer( arg );
 
        // Build the tractor if we have a producer and it isn't already westley'd :-)
        if ( producer != NULL && mlt_properties_get( mlt_producer_properties( producer ), "westley" ) == NULL )
@@ -132,6 +136,7 @@ mlt_producer producer_fezzik_init( char *arg )
                        mlt_properties_set_data( properties, "producer", producer, 0, ( mlt_destructor )mlt_producer_close, NULL );
 
                        // Now attach normalising filters
+                       last = create_filter( tractor, last, "deinterlace" );
                        last = create_filter( tractor, last, "rescale" );
                        last = create_filter( tractor, last, "resize" );
                        last = create_filter( tractor, last, "resample" );
@@ -149,6 +154,9 @@ mlt_producer producer_fezzik_init( char *arg )
                        // and fezzik doesn't overdo it with throwing rocks...
                        mlt_properties_set( properties, "westley", "was here" );
 
+                       // We need to ensure that all further properties are mirrored in the producer
+                       mlt_properties_mirror( properties, mlt_producer_properties( producer ) );
+
                        // Now, we return the producer of the tractor
                        producer = mlt_tractor_producer( tractor );
                }