X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fframework%2Fmlt_profile.c;h=e9565ecfed9a9060f3528a699487f7cce32dab20;hb=9eb9a8df9b30d23c517eb7e5e999a2d34dd71c21;hp=607af04c686899f34fbc568d0c832d7ca690991c;hpb=90d959b0ae338fb5a50cd6a94f61bbc7106aab70;p=melted diff --git a/src/framework/mlt_profile.c b/src/framework/mlt_profile.c index 607af04..e9565ec 100644 --- a/src/framework/mlt_profile.c +++ b/src/framework/mlt_profile.c @@ -65,11 +65,16 @@ mlt_profile mlt_profile_select( const char *name ) { char *filename = NULL; const char *prefix = getenv( "MLT_PROFILES_PATH" ); + mlt_properties properties = mlt_properties_load( name ); - // Allow environment to override default behavior - if ( prefix == NULL ) + // Try to load from file specification + if ( properties && mlt_properties_get_int( properties, "width" ) ) + { + filename = calloc( 1, strlen( name ) + 1 ); + } + // Load from $prefix/share/mlt/profiles + else if ( prefix == NULL ) { - // default behavior is to use $prefix/share/mlt/profiles prefix = PREFIX; filename = calloc( 1, strlen( prefix ) + strlen( PROFILES_DIR ) + strlen( name ) + 2 ); strcpy( filename, prefix ); @@ -77,16 +82,24 @@ mlt_profile mlt_profile_select( const char *name ) filename[ strlen( filename ) ] = '/'; strcat( filename, PROFILES_DIR ); } + // Use environment variable instead else { - // just use environment variable filename = calloc( 1, strlen( prefix ) + strlen( name ) + 2 ); strcpy( filename, prefix ); if ( filename[ strlen( filename ) - 1 ] != '/' ) filename[ strlen( filename ) ] = '/'; } + + // Finish loading strcat( filename, name ); - return mlt_profile_load_file( filename ); + mlt_profile_load_file( filename ); + + // Cleanup + mlt_properties_close( properties ); + free( filename ); + + return profile; } /** Load a profile from specific file