#include <stdlib.h>
#include <string.h>
#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 );
}
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;
+}
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 );
virtual mlt_consumer get_consumer( );
mlt_service get_service( );
virtual int connect( Service &service );
+ int run( );
int start( );
void purge( );
int stop( );
{
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;
}