#include "mlt.h"
#include "mlt_repository.h"
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
*/
static char *mlt_prefix = NULL;
+static mlt_properties global_properties = NULL;
static mlt_properties object_list = NULL;
static mlt_repository producers = NULL;
static mlt_repository filters = NULL;
static mlt_repository transitions = NULL;
static mlt_repository consumers = NULL;
+static int unique_id = 0;
/** Construct the factories.
*/
// Store the prefix for later retrieval
mlt_prefix = strdup( prefix );
+ // Initialise the pool
+ mlt_pool_init( );
+
+ // Create the global properties
+ global_properties = mlt_properties_new( );
+ mlt_properties_set( global_properties, "MLT_NORMALISATION", getenv( "MLT_NORMALISATION" ) );
+
// Create the object list.
- object_list = calloc( sizeof( struct mlt_properties_s ), 1 );
- mlt_properties_init( object_list, NULL );
+ object_list = mlt_properties_new( );
// Create a repository for each service type
producers = mlt_repository_init( object_list, prefix, "producers.dat", "mlt_create_producer" );
return mlt_prefix;
}
+/** Get a value from the environment.
+*/
+
+char *mlt_environment( char *name )
+{
+ return mlt_properties_get( global_properties, name );
+}
+
/** Fetch a producer from the repository.
*/
if ( obj != NULL )
{
mlt_properties properties = mlt_producer_properties( obj );
+ mlt_properties_set_int( properties, "_unique_id", ++ unique_id );
mlt_properties_set( properties, "mlt_type", "producer" );
- mlt_properties_set( properties, "mlt_service", service );
+ if ( mlt_properties_get_int( properties, "_mlt_service_hidden" ) == 0 )
+ mlt_properties_set( properties, "mlt_service", service );
}
return obj;
}
if ( obj != NULL )
{
mlt_properties properties = mlt_filter_properties( obj );
+ mlt_properties_set_int( properties, "_unique_id", ++ unique_id );
mlt_properties_set( properties, "mlt_type", "filter" );
mlt_properties_set( properties, "mlt_service", service );
}
if ( obj != NULL )
{
mlt_properties properties = mlt_transition_properties( obj );
+ mlt_properties_set_int( properties, "_unique_id", ++ unique_id );
mlt_properties_set( properties, "mlt_type", "transition" );
mlt_properties_set( properties, "mlt_service", service );
}
if ( obj != NULL )
{
mlt_properties properties = mlt_consumer_properties( obj );
+ mlt_properties_set_int( properties, "_unique_id", ++ unique_id );
mlt_properties_set( properties, "mlt_type", "consumer" );
mlt_properties_set( properties, "mlt_service", service );
}
mlt_repository_close( transitions );
mlt_repository_close( consumers );
mlt_properties_close( object_list );
+ mlt_properties_close( global_properties );
free( mlt_prefix );
mlt_prefix = NULL;
+ mlt_pool_close( );
}
}