#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 );
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");
plginfo(&info);
snprintf ( string, sizeof(string) , "%d.%d" , info.major_version , info.minor_version );
+ mlt_properties_set ( metadata, "schema_version" , "0.1" );
mlt_properties_set ( metadata, "title" , info.name );
mlt_properties_set ( metadata, "version", string );
mlt_properties_set ( metadata, "identifier" , service_name );
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