]> git.sesse.net Git - mlt/commitdiff
test frame services
authorlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Tue, 23 Dec 2003 14:01:41 +0000 (14:01 +0000)
committerlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Tue, 23 Dec 2003 14:01:41 +0000 (14:01 +0000)
git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@13 d19143bc-622f-0410-bfdd-b5b2a6649095

mlt/src/framework/mlt_frame.c
mlt/src/framework/mlt_frame.h
mlt/src/modules/Makefile
mlt/src/tests/charlie.c
mlt/src/tests/setenv [new file with mode: 0644]
src/framework/mlt_frame.c
src/framework/mlt_frame.h
src/modules/Makefile
src/tests/charlie.c
src/tests/setenv [new file with mode: 0644]

index abe88bacde6153f0dec85e87a0b01b2d04d4faa9..5eacb943030aa08a54ce7d389d54a99cd61d8063 100644 (file)
@@ -432,3 +432,197 @@ int mlt_frame_composite_yuv( mlt_frame this, mlt_frame that, int x, int y, float
        return ret;
 }
 
+/** A resizing function for yuv422 frames - this does not rescale, but simply
+       resizes. It assumes yuv422 images available on the frame so use with care.
+*/
+
+uint8_t *mlt_frame_resize_yuv422( mlt_frame this, int owidth, int oheight )
+{
+       // Get properties
+       mlt_properties properties = mlt_frame_properties( this );
+
+       // Get the input image, width and height
+       uint8_t *input = mlt_properties_get_data( properties, "image", NULL );
+       int iwidth = mlt_properties_get_int( properties, "width" );
+       int iheight = mlt_properties_get_int( properties, "height" );
+
+       // If width and height are correct, don't do anything
+       if ( iwidth != owidth || iheight != oheight )
+       {
+               // Create the output image
+               uint8_t *output = malloc( owidth * oheight * 2 );
+
+               // Calculate strides
+               int istride = iwidth * 2;
+               int ostride = owidth * 2;
+
+       // Coordinates (0,0 is middle of output)
+       int y, x;
+
+       // Calculate ranges
+       int out_x_range = owidth / 2;
+       int out_y_range = oheight / 2;
+       int in_x_range = iwidth / 2;
+       int in_y_range = iheight / 2;
+
+       // Output pointers
+       uint8_t *out_line = output;
+       uint8_t *out_ptr;
+
+       // Calculate a middle and possibly invalid pointer in the input
+       uint8_t *in_middle = input + istride * in_y_range + in_x_range * 2;
+       int in_line = - out_y_range * istride - out_x_range * 2;
+       int in_ptr;
+
+       // Loop for the entirety of our output height.
+       for ( y = - out_y_range; y < out_y_range ; y ++ )
+       {
+               // Start at the beginning of the line
+               out_ptr = out_line;
+       
+               // Point the start of the current input line (NB: can be out of range)
+               in_ptr = in_line;
+       
+               // Loop for the entirety of our output row.
+               for ( x = - out_x_range; x < out_x_range; x ++ )
+               {
+               // Check if x and y are in the valid input range.
+               if ( abs( x ) < in_x_range && abs( y ) < in_y_range  )
+               {
+                       // We're in the input range for this row.
+                       *out_ptr ++ = *( in_middle + in_ptr ++ );
+                       *out_ptr ++ = *( in_middle + in_ptr ++ );
+               }
+               else
+               {
+                       // We're not in the input range for this row.
+                       *out_ptr ++ = 16;
+                       *out_ptr ++ = 128;
+                       in_ptr += 2;
+               }
+               }
+
+               // Move to next output line
+               out_line += ostride;
+
+               // Move to next input line
+               in_line += istride;
+       }
+
+               // Now update the frame
+               mlt_properties_set_data( properties, "image", output, owidth * oheight * 2, free, NULL );
+               mlt_properties_set_int( properties, "width", owidth );
+               mlt_properties_set_int( properties, "height", oheight );
+
+               // Return the output
+               return output;
+       }
+
+       // No change, return input
+       return input;
+}
+
+/** A rescaling function for yuv422 frames - low quality, and provided for testing
+       only. It assumes yuv422 images available on the frame so use with care.
+*/
+
+uint8_t *mlt_frame_rescale_yuv422( mlt_frame this, int owidth, int oheight )
+{
+       // Get properties
+       mlt_properties properties = mlt_frame_properties( this );
+
+       // Get the input image, width and height
+       uint8_t *input = mlt_properties_get_data( properties, "image", NULL );
+       int iwidth = mlt_properties_get_int( properties, "width" );
+       int iheight = mlt_properties_get_int( properties, "height" );
+
+       // If width and height are correct, don't do anything
+       if ( iwidth != owidth || iheight != oheight )
+       {
+               // Create the output image
+               uint8_t *output = malloc( owidth * oheight * 2 );
+
+               // Calculate strides
+               int istride = iwidth * 2;
+               int ostride = owidth * 2;
+
+       // Coordinates (0,0 is middle of output)
+       int y, x;
+
+               // Derived coordinates
+               int dy, dx;
+
+       // Calculate ranges
+       int out_x_range = owidth / 2;
+       int out_y_range = oheight / 2;
+       int in_x_range = iwidth / 2;
+       int in_y_range = iheight / 2;
+
+       // Output pointers
+       uint8_t *out_line = output;
+       uint8_t *out_ptr;
+
+       // Calculate a middle pointer
+       uint8_t *in_middle = input + istride * in_y_range + in_x_range * 2;
+       uint8_t *in_line;
+               uint8_t *in_ptr;
+
+               // Generate the affine transform scaling values
+               float scale_width = ( float )iwidth / ( float )owidth;
+               float scale_height = ( float )iheight / ( float )oheight;
+
+       // Loop for the entirety of our output height.
+       for ( y = - out_y_range; y < out_y_range ; y ++ )
+       {
+                       // Calculate the derived y value
+                       dy = scale_height * y;
+
+               // Start at the beginning of the line
+               out_ptr = out_line;
+       
+               // Pointer to the middle of the input line
+               in_line = in_middle + dy * istride;
+       
+               // Loop for the entirety of our output row.
+               for ( x = - out_x_range; x < out_x_range; x += 2 )
+               {
+                               // Calculated the derived x
+                               dx = scale_width * x;
+
+               // Check if x and y are in the valid input range.
+               if ( abs( dx ) < in_x_range && abs( dy ) < in_y_range  )
+               {
+                       // We're in the input range for this row.
+                                       in_ptr = in_line + ( dx >> 1 ) * 4;
+                       *out_ptr ++ = *in_ptr ++;
+                       *out_ptr ++ = *in_ptr ++;
+                       *out_ptr ++ = *in_ptr ++;
+                       *out_ptr ++ = *in_ptr ++;
+               }
+               else
+               {
+                       // We're not in the input range for this row.
+                       *out_ptr ++ = 16;
+                       *out_ptr ++ = 128;
+                       *out_ptr ++ = 16;
+                       *out_ptr ++ = 128;
+               }
+               }
+
+               // Move to next output line
+               out_line += ostride;
+       }
+
+               // Now update the frame
+               mlt_properties_set_data( properties, "image", output, owidth * oheight * 2, free, NULL );
+               mlt_properties_set_int( properties, "width", owidth );
+               mlt_properties_set_int( properties, "height", oheight );
+
+               // Return the output
+               return output;
+       }
+
+       // No change, return input
+       return input;
+}
+
index e9bd69a38c7bae2b7f8360dd5fe9b1f149bde832..275935e8833a6fea26f22251f3271df3f89b751a 100644 (file)
@@ -87,6 +87,8 @@ extern void mlt_frame_close( mlt_frame this );
 extern int mlt_convert_rgb24a_to_yuv422( uint8_t *rgba, int width, int height, int stride, uint8_t *yuv, uint8_t *alpha );
 extern int mlt_convert_rgb24_to_yuv422( uint8_t *rgb, int width, int height, int stride, uint8_t *yuv );
 extern int mlt_frame_composite_yuv( mlt_frame this, mlt_frame that, int x, int y, float weight );
-    
+extern uint8_t *mlt_frame_resize_yuv422( mlt_frame this, int owidth, int oheight );
+extern uint8_t *mlt_frame_rescale_yuv422( mlt_frame this, int owidth, int oheight );
+
 #endif
 
index 7d512493fd4a6098575a0925bd5d586d29b0df81..31311012e31bbd90967abde2a923b07ab23152f0 100644 (file)
@@ -9,7 +9,7 @@ all clean depend install:
        done
 
 dist-clean:
-       rm -f consumers.dat filters.dat producers.dat transitions.dat *.so; \
+       rm -f consumers.dat filters.dat producers.dat transitions.dat; \
        list='$(SUBDIRS)'; \
        for subdir in $$list; do \
                if [ -f $$subdir/Makefile ] ; \
index 2d427345178134161846671a9a08e641f4dcaaa9..95935cb4b29901a41a98bb1890f4797532170ec2 100644 (file)
@@ -1,28 +1,90 @@
 #include <framework/mlt.h>
 #include <stdio.h>
+#include <string.h>
 
-int main( int argc, char **argv )
+mlt_producer create_producer( char *file )
 {
-       char temp[ 132 ];
-       char *file1 = NULL;
-       char *file2 = NULL;
-
-       mlt_factory_init( "../modules" );
+       mlt_producer result = NULL;
+
+       // 1st Line preferences
+       if ( strstr( file, ".mpg" ) )
+               result = mlt_factory_producer( "mcmpeg", file );
+       else if ( strstr( file, ".mpeg" ) )
+               result = mlt_factory_producer( "mcmpeg", file );
+       else if ( strstr( file, ".dv" ) )
+               result = mlt_factory_producer( "mcdv", file );
+       else if ( strstr( file, ".jpg" ) )
+               result = mlt_factory_producer( "pixbuf", file );
+       else if ( strstr( file, ".png" ) )
+               result = mlt_factory_producer( "pixbuf", file );
+
+       // 2nd Line fallbacks
+       if ( result == NULL && strstr( file, ".dv" ) )
+               result = mlt_factory_producer( "libdv", file );
+
+       return result;
+}
 
-       if ( argc >= 2 )
-               file1 = argv[ 1 ];
-       if ( argc >= 3 )
-               file2 = argv[ 2 ];
+mlt_consumer create_consumer( char *id )
+{
+       return mlt_factory_consumer( id, NULL );
+}
 
-       // Start the consumer...
-       mlt_consumer sdl_out = mlt_factory_consumer( "sdl", NULL );
+void set_properties( mlt_service service, char *namevalue )
+{
+       mlt_properties properties = mlt_service_properties( service );
+       mlt_properties_parse( properties, namevalue );
+}
 
+void transport( mlt_producer producer )
+{
+       char temp[ 132 ];
        fprintf( stderr, "Press return to continue\n" );
        fgets( temp, 132, stdin );
+}
+
+int main( int argc, char **argv )
+{
+       int i;
+       mlt_service  service = NULL;
+       mlt_consumer consumer = NULL;
+       mlt_producer producer = NULL;
 
+       mlt_factory_init( "../modules" );
+
+       // Parse the arguments
+       for ( i = 1; i < argc; i ++ )
+       {
+               if ( !strcmp( argv[ i ], "-vo" ) )
+               {
+                       consumer = create_consumer( argv[ ++ i ] );
+                       service = mlt_consumer_service( consumer );
+               }
+               else if ( strstr( argv[ i ], "=" ) )
+               {
+                       set_properties( service, argv[ i ] );
+               }
+               else
+               {
+                       producer = create_producer( argv[ i ] );
+                       service = mlt_producer_service( producer );
+               }
+       }
+
+       // If we have no consumer, default to sdl
+       if ( consumer == NULL )
+               consumer= mlt_factory_consumer( "sdl", NULL );
+
+       // Connect producer to consumer
+       mlt_consumer_connect( consumer, mlt_producer_service( producer ) );
+
+       // Transport functionality
+       transport( producer );
+
+/*
        // Create the producer(s)
-       mlt_producer dv1 = mlt_factory_producer( "libdv", file1 );
-       mlt_producer dv2 = mlt_factory_producer( "libdv", file2 );
+       mlt_producer dv1 = mlt_factory_producer( "mcmpeg", file1 );
+       mlt_producer dv2 = mlt_factory_producer( "mcmpeg", file2 );
        //mlt_producer dv1 = producer_ppm_init( NULL );
        //mlt_producer dv2 = producer_ppm_init( NULL );
 
@@ -55,8 +117,6 @@ int main( int argc, char **argv )
        mlt_consumer_connect( sdl_out, mlt_tractor_service( tractor ) );
 
        // Do stuff until we're told otherwise...
-       fprintf( stderr, "Press return to continue\n" );
-       fgets( temp, 132, stdin );
 
        // Close everything...
        //mlt_consumer_close( sdl_out );
@@ -66,6 +126,7 @@ int main( int argc, char **argv )
        //mlt_multitrack_close( multitrack );
        //mlt_producer_close( dv1 );
        //mlt_producer_close( dv2 );
+*/
 
        mlt_factory_close( );
 
diff --git a/mlt/src/tests/setenv b/mlt/src/tests/setenv
new file mode 100644 (file)
index 0000000..875bc04
--- /dev/null
@@ -0,0 +1,5 @@
+export LD_LIBRARY_PATH=`pwd`/../framework:\
+`pwd`/../modules/bluefish:\
+`pwd`/../../../bluefish/lib:\
+`pwd`/../../../mpeg_sdk_demo/bin:\
+`pwd`/../../../dv_sdk
index abe88bacde6153f0dec85e87a0b01b2d04d4faa9..5eacb943030aa08a54ce7d389d54a99cd61d8063 100644 (file)
@@ -432,3 +432,197 @@ int mlt_frame_composite_yuv( mlt_frame this, mlt_frame that, int x, int y, float
        return ret;
 }
 
+/** A resizing function for yuv422 frames - this does not rescale, but simply
+       resizes. It assumes yuv422 images available on the frame so use with care.
+*/
+
+uint8_t *mlt_frame_resize_yuv422( mlt_frame this, int owidth, int oheight )
+{
+       // Get properties
+       mlt_properties properties = mlt_frame_properties( this );
+
+       // Get the input image, width and height
+       uint8_t *input = mlt_properties_get_data( properties, "image", NULL );
+       int iwidth = mlt_properties_get_int( properties, "width" );
+       int iheight = mlt_properties_get_int( properties, "height" );
+
+       // If width and height are correct, don't do anything
+       if ( iwidth != owidth || iheight != oheight )
+       {
+               // Create the output image
+               uint8_t *output = malloc( owidth * oheight * 2 );
+
+               // Calculate strides
+               int istride = iwidth * 2;
+               int ostride = owidth * 2;
+
+       // Coordinates (0,0 is middle of output)
+       int y, x;
+
+       // Calculate ranges
+       int out_x_range = owidth / 2;
+       int out_y_range = oheight / 2;
+       int in_x_range = iwidth / 2;
+       int in_y_range = iheight / 2;
+
+       // Output pointers
+       uint8_t *out_line = output;
+       uint8_t *out_ptr;
+
+       // Calculate a middle and possibly invalid pointer in the input
+       uint8_t *in_middle = input + istride * in_y_range + in_x_range * 2;
+       int in_line = - out_y_range * istride - out_x_range * 2;
+       int in_ptr;
+
+       // Loop for the entirety of our output height.
+       for ( y = - out_y_range; y < out_y_range ; y ++ )
+       {
+               // Start at the beginning of the line
+               out_ptr = out_line;
+       
+               // Point the start of the current input line (NB: can be out of range)
+               in_ptr = in_line;
+       
+               // Loop for the entirety of our output row.
+               for ( x = - out_x_range; x < out_x_range; x ++ )
+               {
+               // Check if x and y are in the valid input range.
+               if ( abs( x ) < in_x_range && abs( y ) < in_y_range  )
+               {
+                       // We're in the input range for this row.
+                       *out_ptr ++ = *( in_middle + in_ptr ++ );
+                       *out_ptr ++ = *( in_middle + in_ptr ++ );
+               }
+               else
+               {
+                       // We're not in the input range for this row.
+                       *out_ptr ++ = 16;
+                       *out_ptr ++ = 128;
+                       in_ptr += 2;
+               }
+               }
+
+               // Move to next output line
+               out_line += ostride;
+
+               // Move to next input line
+               in_line += istride;
+       }
+
+               // Now update the frame
+               mlt_properties_set_data( properties, "image", output, owidth * oheight * 2, free, NULL );
+               mlt_properties_set_int( properties, "width", owidth );
+               mlt_properties_set_int( properties, "height", oheight );
+
+               // Return the output
+               return output;
+       }
+
+       // No change, return input
+       return input;
+}
+
+/** A rescaling function for yuv422 frames - low quality, and provided for testing
+       only. It assumes yuv422 images available on the frame so use with care.
+*/
+
+uint8_t *mlt_frame_rescale_yuv422( mlt_frame this, int owidth, int oheight )
+{
+       // Get properties
+       mlt_properties properties = mlt_frame_properties( this );
+
+       // Get the input image, width and height
+       uint8_t *input = mlt_properties_get_data( properties, "image", NULL );
+       int iwidth = mlt_properties_get_int( properties, "width" );
+       int iheight = mlt_properties_get_int( properties, "height" );
+
+       // If width and height are correct, don't do anything
+       if ( iwidth != owidth || iheight != oheight )
+       {
+               // Create the output image
+               uint8_t *output = malloc( owidth * oheight * 2 );
+
+               // Calculate strides
+               int istride = iwidth * 2;
+               int ostride = owidth * 2;
+
+       // Coordinates (0,0 is middle of output)
+       int y, x;
+
+               // Derived coordinates
+               int dy, dx;
+
+       // Calculate ranges
+       int out_x_range = owidth / 2;
+       int out_y_range = oheight / 2;
+       int in_x_range = iwidth / 2;
+       int in_y_range = iheight / 2;
+
+       // Output pointers
+       uint8_t *out_line = output;
+       uint8_t *out_ptr;
+
+       // Calculate a middle pointer
+       uint8_t *in_middle = input + istride * in_y_range + in_x_range * 2;
+       uint8_t *in_line;
+               uint8_t *in_ptr;
+
+               // Generate the affine transform scaling values
+               float scale_width = ( float )iwidth / ( float )owidth;
+               float scale_height = ( float )iheight / ( float )oheight;
+
+       // Loop for the entirety of our output height.
+       for ( y = - out_y_range; y < out_y_range ; y ++ )
+       {
+                       // Calculate the derived y value
+                       dy = scale_height * y;
+
+               // Start at the beginning of the line
+               out_ptr = out_line;
+       
+               // Pointer to the middle of the input line
+               in_line = in_middle + dy * istride;
+       
+               // Loop for the entirety of our output row.
+               for ( x = - out_x_range; x < out_x_range; x += 2 )
+               {
+                               // Calculated the derived x
+                               dx = scale_width * x;
+
+               // Check if x and y are in the valid input range.
+               if ( abs( dx ) < in_x_range && abs( dy ) < in_y_range  )
+               {
+                       // We're in the input range for this row.
+                                       in_ptr = in_line + ( dx >> 1 ) * 4;
+                       *out_ptr ++ = *in_ptr ++;
+                       *out_ptr ++ = *in_ptr ++;
+                       *out_ptr ++ = *in_ptr ++;
+                       *out_ptr ++ = *in_ptr ++;
+               }
+               else
+               {
+                       // We're not in the input range for this row.
+                       *out_ptr ++ = 16;
+                       *out_ptr ++ = 128;
+                       *out_ptr ++ = 16;
+                       *out_ptr ++ = 128;
+               }
+               }
+
+               // Move to next output line
+               out_line += ostride;
+       }
+
+               // Now update the frame
+               mlt_properties_set_data( properties, "image", output, owidth * oheight * 2, free, NULL );
+               mlt_properties_set_int( properties, "width", owidth );
+               mlt_properties_set_int( properties, "height", oheight );
+
+               // Return the output
+               return output;
+       }
+
+       // No change, return input
+       return input;
+}
+
index e9bd69a38c7bae2b7f8360dd5fe9b1f149bde832..275935e8833a6fea26f22251f3271df3f89b751a 100644 (file)
@@ -87,6 +87,8 @@ extern void mlt_frame_close( mlt_frame this );
 extern int mlt_convert_rgb24a_to_yuv422( uint8_t *rgba, int width, int height, int stride, uint8_t *yuv, uint8_t *alpha );
 extern int mlt_convert_rgb24_to_yuv422( uint8_t *rgb, int width, int height, int stride, uint8_t *yuv );
 extern int mlt_frame_composite_yuv( mlt_frame this, mlt_frame that, int x, int y, float weight );
-    
+extern uint8_t *mlt_frame_resize_yuv422( mlt_frame this, int owidth, int oheight );
+extern uint8_t *mlt_frame_rescale_yuv422( mlt_frame this, int owidth, int oheight );
+
 #endif
 
index 7d512493fd4a6098575a0925bd5d586d29b0df81..31311012e31bbd90967abde2a923b07ab23152f0 100644 (file)
@@ -9,7 +9,7 @@ all clean depend install:
        done
 
 dist-clean:
-       rm -f consumers.dat filters.dat producers.dat transitions.dat *.so; \
+       rm -f consumers.dat filters.dat producers.dat transitions.dat; \
        list='$(SUBDIRS)'; \
        for subdir in $$list; do \
                if [ -f $$subdir/Makefile ] ; \
index 2d427345178134161846671a9a08e641f4dcaaa9..95935cb4b29901a41a98bb1890f4797532170ec2 100644 (file)
@@ -1,28 +1,90 @@
 #include <framework/mlt.h>
 #include <stdio.h>
+#include <string.h>
 
-int main( int argc, char **argv )
+mlt_producer create_producer( char *file )
 {
-       char temp[ 132 ];
-       char *file1 = NULL;
-       char *file2 = NULL;
-
-       mlt_factory_init( "../modules" );
+       mlt_producer result = NULL;
+
+       // 1st Line preferences
+       if ( strstr( file, ".mpg" ) )
+               result = mlt_factory_producer( "mcmpeg", file );
+       else if ( strstr( file, ".mpeg" ) )
+               result = mlt_factory_producer( "mcmpeg", file );
+       else if ( strstr( file, ".dv" ) )
+               result = mlt_factory_producer( "mcdv", file );
+       else if ( strstr( file, ".jpg" ) )
+               result = mlt_factory_producer( "pixbuf", file );
+       else if ( strstr( file, ".png" ) )
+               result = mlt_factory_producer( "pixbuf", file );
+
+       // 2nd Line fallbacks
+       if ( result == NULL && strstr( file, ".dv" ) )
+               result = mlt_factory_producer( "libdv", file );
+
+       return result;
+}
 
-       if ( argc >= 2 )
-               file1 = argv[ 1 ];
-       if ( argc >= 3 )
-               file2 = argv[ 2 ];
+mlt_consumer create_consumer( char *id )
+{
+       return mlt_factory_consumer( id, NULL );
+}
 
-       // Start the consumer...
-       mlt_consumer sdl_out = mlt_factory_consumer( "sdl", NULL );
+void set_properties( mlt_service service, char *namevalue )
+{
+       mlt_properties properties = mlt_service_properties( service );
+       mlt_properties_parse( properties, namevalue );
+}
 
+void transport( mlt_producer producer )
+{
+       char temp[ 132 ];
        fprintf( stderr, "Press return to continue\n" );
        fgets( temp, 132, stdin );
+}
+
+int main( int argc, char **argv )
+{
+       int i;
+       mlt_service  service = NULL;
+       mlt_consumer consumer = NULL;
+       mlt_producer producer = NULL;
 
+       mlt_factory_init( "../modules" );
+
+       // Parse the arguments
+       for ( i = 1; i < argc; i ++ )
+       {
+               if ( !strcmp( argv[ i ], "-vo" ) )
+               {
+                       consumer = create_consumer( argv[ ++ i ] );
+                       service = mlt_consumer_service( consumer );
+               }
+               else if ( strstr( argv[ i ], "=" ) )
+               {
+                       set_properties( service, argv[ i ] );
+               }
+               else
+               {
+                       producer = create_producer( argv[ i ] );
+                       service = mlt_producer_service( producer );
+               }
+       }
+
+       // If we have no consumer, default to sdl
+       if ( consumer == NULL )
+               consumer= mlt_factory_consumer( "sdl", NULL );
+
+       // Connect producer to consumer
+       mlt_consumer_connect( consumer, mlt_producer_service( producer ) );
+
+       // Transport functionality
+       transport( producer );
+
+/*
        // Create the producer(s)
-       mlt_producer dv1 = mlt_factory_producer( "libdv", file1 );
-       mlt_producer dv2 = mlt_factory_producer( "libdv", file2 );
+       mlt_producer dv1 = mlt_factory_producer( "mcmpeg", file1 );
+       mlt_producer dv2 = mlt_factory_producer( "mcmpeg", file2 );
        //mlt_producer dv1 = producer_ppm_init( NULL );
        //mlt_producer dv2 = producer_ppm_init( NULL );
 
@@ -55,8 +117,6 @@ int main( int argc, char **argv )
        mlt_consumer_connect( sdl_out, mlt_tractor_service( tractor ) );
 
        // Do stuff until we're told otherwise...
-       fprintf( stderr, "Press return to continue\n" );
-       fgets( temp, 132, stdin );
 
        // Close everything...
        //mlt_consumer_close( sdl_out );
@@ -66,6 +126,7 @@ int main( int argc, char **argv )
        //mlt_multitrack_close( multitrack );
        //mlt_producer_close( dv1 );
        //mlt_producer_close( dv2 );
+*/
 
        mlt_factory_close( );
 
diff --git a/src/tests/setenv b/src/tests/setenv
new file mode 100644 (file)
index 0000000..875bc04
--- /dev/null
@@ -0,0 +1,5 @@
+export LD_LIBRARY_PATH=`pwd`/../framework:\
+`pwd`/../modules/bluefish:\
+`pwd`/../../../bluefish/lib:\
+`pwd`/../../../mpeg_sdk_demo/bin:\
+`pwd`/../../../dv_sdk