1 #include <framework/mlt.h>
5 mlt_producer
create_producer( char *file
)
7 mlt_producer result
= NULL
;
9 // 1st Line preferences
10 if ( strstr( file
, ".mpg" ) )
11 result
= mlt_factory_producer( "mcmpeg", file
);
12 else if ( strstr( file
, ".mpeg" ) )
13 result
= mlt_factory_producer( "mcmpeg", file
);
14 else if ( strstr( file
, ".dv" ) )
15 result
= mlt_factory_producer( "mcdv", file
);
16 else if ( strstr( file
, ".jpg" ) )
17 result
= mlt_factory_producer( "pixbuf", file
);
18 else if ( strstr( file
, ".png" ) )
19 result
= mlt_factory_producer( "pixbuf", file
);
22 if ( result
== NULL
&& strstr( file
, ".dv" ) )
23 result
= mlt_factory_producer( "libdv", file
);
28 mlt_consumer
create_consumer( char *id
)
30 return mlt_factory_consumer( id
, NULL
);
33 void set_properties( mlt_service service
, char *namevalue
)
35 mlt_properties properties
= mlt_service_properties( service
);
36 mlt_properties_parse( properties
, namevalue
);
39 void transport( mlt_producer producer
)
42 fprintf( stderr
, "Press return to continue\n" );
43 fgets( temp
, 132, stdin
);
46 int main( int argc
, char **argv
)
49 mlt_service service
= NULL
;
50 mlt_consumer consumer
= NULL
;
51 mlt_producer producer
= NULL
;
53 mlt_factory_init( "../modules" );
55 // Parse the arguments
56 for ( i
= 1; i
< argc
; i
++ )
58 if ( !strcmp( argv
[ i
], "-vo" ) )
60 consumer
= create_consumer( argv
[ ++ i
] );
61 service
= mlt_consumer_service( consumer
);
63 else if ( strstr( argv
[ i
], "=" ) )
65 set_properties( service
, argv
[ i
] );
69 producer
= create_producer( argv
[ i
] );
70 service
= mlt_producer_service( producer
);
74 // If we have no consumer, default to sdl
75 if ( consumer
== NULL
)
76 consumer
= mlt_factory_consumer( "sdl", NULL
);
78 // Connect producer to consumer
79 mlt_consumer_connect( consumer
, mlt_producer_service( producer
) );
81 // Transport functionality
82 transport( producer
);
85 mlt_consumer_close( consumer
);
86 mlt_producer_close( producer
);
89 // Create the producer(s)
90 mlt_producer dv1 = mlt_factory_producer( "mcmpeg", file1 );
91 mlt_producer dv2 = mlt_factory_producer( "mcmpeg", file2 );
92 //mlt_producer dv1 = producer_ppm_init( NULL );
93 //mlt_producer dv2 = producer_ppm_init( NULL );
95 // Connect a producer to our sdl consumer
96 mlt_consumer_connect( sdl_out, mlt_producer_service( dv1 ) );
98 fprintf( stderr, "Press return to continue\n" );
99 fgets( temp, 132, stdin );
101 // Register producers(s) with a multitrack object
102 mlt_multitrack multitrack = mlt_multitrack_init( );
103 mlt_multitrack_connect( multitrack, dv1, 0 );
104 mlt_multitrack_connect( multitrack, dv2, 1 );
106 // Create a filter and associate it to track 0
107 mlt_filter filter = mlt_factory_filter( "deinterlace", NULL );
108 mlt_filter_connect( filter, mlt_multitrack_service( multitrack ), 0 );
109 mlt_filter_set_in_and_out( filter, 0, 5 );
112 mlt_filter greyscale = mlt_factory_filter( "greyscale", NULL );
113 mlt_filter_connect( greyscale, mlt_filter_service( filter ), 0 );
114 mlt_filter_set_in_and_out( greyscale, 0, 10 );
116 // Buy a tractor and connect it to the filter
117 mlt_tractor tractor = mlt_tractor_init( );
118 mlt_tractor_connect( tractor, mlt_filter_service( greyscale ) );
120 // Connect the tractor to the consumer
121 mlt_consumer_connect( sdl_out, mlt_tractor_service( tractor ) );
123 // Do stuff until we're told otherwise...
125 // Close everything...
126 //mlt_consumer_close( sdl_out );
127 //mlt_tractor_close( tractor );
128 //mlt_filter_close( filter );
129 //mlt_filter_close( greyscale );
130 //mlt_multitrack_close( multitrack );
131 //mlt_producer_close( dv1 );
132 //mlt_producer_close( dv2 );
135 mlt_factory_close( );