From: lilo_booter Date: Thu, 14 Oct 2004 22:09:46 +0000 (+0000) Subject: buffer fix and tractor handling X-Git-Url: http://research.m1stereo.tv/gitweb?a=commitdiff_plain;h=4b4a655a5a304f49319b038d9a4eca494d6ce523;p=melted buffer fix and tractor handling git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt++@478 d19143bc-622f-0410-bfdd-b5b2a6649095 --- diff --git a/mlt++/src/MltConsumer.cpp b/mlt++/src/MltConsumer.cpp index 657c816..0a0a402 100644 --- a/mlt++/src/MltConsumer.cpp +++ b/mlt++/src/MltConsumer.cpp @@ -21,12 +21,19 @@ #include #include #include "MltConsumer.h" +#include "MltEvent.h" using namespace Mlt; +Consumer::Consumer( ) : + instance( NULL ) +{ + instance = mlt_factory_consumer( NULL, NULL ); +} + Consumer::Consumer( char *id, char *arg ) : instance( NULL ) { - if ( arg != NULL ) + if ( id == NULL || arg != NULL ) { instance = mlt_factory_consumer( id, arg ); } @@ -109,3 +116,14 @@ bool Consumer::is_stopped( ) return mlt_consumer_is_stopped( get_consumer( ) ) != 0; } +int Consumer::run( ) +{ + int ret = start( ); + if ( !is_stopped( ) ) + { + Event *e = setup_wait_for( "consumer-stopped" ); + wait_for( e ); + delete e; + } + return ret; +} diff --git a/mlt++/src/MltConsumer.h b/mlt++/src/MltConsumer.h index 96d3c33..17eda60 100644 --- a/mlt++/src/MltConsumer.h +++ b/mlt++/src/MltConsumer.h @@ -34,7 +34,8 @@ namespace Mlt private: mlt_consumer instance; public: - Consumer( char *id, char *service = NULL ); + Consumer( ); + Consumer( char *id , char *service = NULL ); Consumer( Service &consumer ); Consumer( Consumer &consumer ); Consumer( mlt_consumer consumer ); @@ -42,6 +43,7 @@ namespace Mlt virtual mlt_consumer get_consumer( ); mlt_service get_service( ); virtual int connect( Service &service ); + int run( ); int start( ); void purge( ); int stop( ); diff --git a/mlt++/test/play.cpp b/mlt++/test/play.cpp index 6dfeb38..459875d 100644 --- a/mlt++/test/play.cpp +++ b/mlt++/test/play.cpp @@ -6,11 +6,9 @@ int main( int argc, char **argv ) { Factory::init( NULL ); Producer producer( argv[ 1 ] ); - Consumer consumer( "sdl" ); + Consumer consumer; consumer.set( "rescale", "none" ); consumer.connect( producer ); - Event *event = consumer.setup_wait_for( "consumer-stopped" ); - consumer.start( ); - consumer.wait_for( event, false ); + consumer.run( ); return 0; }