]> git.sesse.net Git - mlt/commitdiff
refactor load_filenames in qimage
authorDan Dennedy <dan@dennedy.org>
Tue, 6 Mar 2012 06:35:44 +0000 (22:35 -0800)
committerDan Dennedy <dan@dennedy.org>
Tue, 6 Mar 2012 06:35:44 +0000 (22:35 -0800)
src/modules/qimage/producer_qimage.c

index 950c07ab3ca98dbd3d2530ca8ba21b7668e67b29..3a96dab71c88a673cec243a6914cbcbad515121e 100644 (file)
@@ -87,21 +87,28 @@ mlt_producer producer_qimage_init( mlt_profile profile, mlt_service_type type, c
        return NULL;
 }
 
-static void load_filenames( producer_qimage self, mlt_properties producer_properties )
+static int load_svg( producer_qimage self, mlt_properties properties, const char *filename )
 {
-       char *filename = mlt_properties_get( producer_properties, "resource" );
-       self->filenames = mlt_properties_new( );
+       int result = 0;
 
        // Read xml string
        if ( strstr( filename, "<svg" ) )
        {
                make_tempfile( self, filename );
+               result = 1;
        }
-       // Obtain filenames
-       else if ( strchr( filename, '%' ) != NULL )
+       return result;
+}
+
+static int load_sequence( producer_qimage self, mlt_properties properties, const char *filename )
+{
+       int result = 0;
+
+       // Obtain filenames with pattern
+       if ( strchr( filename, '%' ) != NULL )
        {
                // handle picture sequences
-               int i = mlt_properties_get_int( producer_properties, "begin" );
+               int i = mlt_properties_get_int( properties, "begin" );
                int gap = 0;
                char full[1024];
                int keyvalue = 0;
@@ -123,9 +130,20 @@ static void load_filenames( producer_qimage self, mlt_properties producer_proper
                        }
                }
                if ( mlt_properties_count( self->filenames ) > 0 )
-                       mlt_properties_set_int( producer_properties, "ttl", 1 );
+               {
+                       mlt_properties_set_int( properties, "ttl", 1 );
+                       result = 1;
+               }
        }
-       else if ( strstr( filename, "/.all." ) != NULL )
+       return result;
+}
+
+static int load_folder( producer_qimage self, mlt_properties properties, const char *filename )
+{
+       int result = 0;
+
+       // Obtain filenames within folder
+       if ( strstr( filename, "/.all." ) != NULL )
        {
                char wildcard[ 1024 ];
                char *dir_name = strdup( filename );
@@ -137,12 +155,22 @@ static void load_filenames( producer_qimage self, mlt_properties producer_proper
                mlt_properties_dir_list( self->filenames, dir_name, wildcard, 1 );
 
                free( dir_name );
+               result = 1;
        }
-       else
+       return result;
+}
+
+static void load_filenames( producer_qimage self, mlt_properties properties )
+{
+       char *filename = mlt_properties_get( properties, "resource" );
+       self->filenames = mlt_properties_new( );
+
+       if (!load_svg( self, properties, filename ) &&
+               !load_sequence( self, properties, filename ) &&
+               !load_folder( self, properties, filename ) )
        {
                mlt_properties_set( self->filenames, "0", filename );
        }
-
        self->count = mlt_properties_count( self->filenames );
 }