filter_dust.yml: apply description fix patch from Mads Dydensborg.
[melted] / src / modules / frei0r / factory.c
index e51e258..4cd8485 100644 (file)
 
 #include <stddef.h>
 #include <stdio.h>
+#include <sys/stat.h>
 #include <sys/types.h>
 #include <dirent.h>
 #include <dlfcn.h>
 #include <stdlib.h>
+#include <limits.h>
 
 extern mlt_filter filter_frei0r_init( mlt_profile profile, mlt_service_type type, const char *id, char *arg );
 extern mlt_frame filter_process( mlt_filter this, mlt_frame frame );
@@ -36,6 +38,28 @@ extern mlt_frame transition_process( mlt_transition transition, mlt_frame a_fram
 
 static mlt_properties fill_param_info ( mlt_service_type type, const char *service_name, char *name )
 {
+       char file[ PATH_MAX ];
+       char servicetype[ 1024 ]="";
+       struct stat stat_buff;
+       
+       switch ( type ) {
+               case filter_type:
+                       strcpy ( servicetype , "filter" );
+                       break;
+               case transition_type:
+                       strcpy ( servicetype , "transition" ) ;
+                       break;
+               default:
+                       strcpy ( servicetype , "" );
+       };
+       
+       snprintf( file, PATH_MAX, "%s/frei0r/%s_%s.yml", mlt_environment( "MLT_DATA" ), servicetype, service_name );
+       stat(file,&stat_buff);
+
+       if (S_ISREG(stat_buff.st_mode)){
+               return mlt_properties_parse_yaml( file );
+       }
+               
        void* handle=dlopen(name,RTLD_LAZY);
        if (!handle) return NULL;
        void (*plginfo)(f0r_plugin_info_t*)=dlsym(handle,"f0r_get_plugin_info");
@@ -84,9 +108,9 @@ static mlt_properties fill_param_info ( mlt_service_type type, const char *servi
                mlt_properties_set ( pnum , "title" , paraminfo.name );
                mlt_properties_set ( pnum , "description" , paraminfo.explanation);
                if ( paraminfo.type == F0R_PARAM_DOUBLE ){
-                       mlt_properties_set ( pnum , "type" , "integer" );
+                       mlt_properties_set ( pnum , "type" , "float" );
                        mlt_properties_set ( pnum , "minimum" , "0" );
-                       mlt_properties_set ( pnum , "maximum" , "1000" );
+                       mlt_properties_set ( pnum , "maximum" , "1" );
                        mlt_properties_set ( pnum , "readonly" , "no" );
                        mlt_properties_set ( pnum , "widget" , "spinner" );
                }else