#include "MltFilter.h"
#include "MltProfile.h"
#include "MltEvent.h"
+#include "MltConsumer.h"
using namespace Mlt;
Producer::Producer( ) :
return mlt_producer_seek( get_producer( ), position );
}
+int Producer::seek( const char *time )
+{
+ return mlt_producer_seek_time( get_producer( ), time );
+}
+
int Producer::position( )
{
return mlt_producer_position( get_producer( ) );
return mlt_producer_frame( get_producer( ) );
}
+char* Producer::frame_time( mlt_time_format format )
+{
+ return mlt_producer_frame_time( get_producer(), format );
+}
+
int Producer::set_speed( double speed )
{
- double current = get_speed();
+ return mlt_producer_set_speed( get_producer( ), speed );
+}
+
+int Producer::pause()
+{
int result = 0;
- Service *consumer = this->consumer();
- Event *event = consumer->setup_wait_for( "consumer-sdl-paused" );
-
- if ( current != speed )
- result = mlt_producer_set_speed( get_producer( ), speed );
- if ( consumer->is_valid() && current != 0 && speed == 0 )
- consumer->wait_for( event );
- delete event;
+
+ if ( get_speed() != 0 )
+ {
+ Consumer consumer( ( mlt_consumer ) mlt_service_consumer( get_service( ) ) );
+ Event *event = consumer.setup_wait_for( "consumer-sdl-paused" );
+
+ result = mlt_producer_set_speed( get_producer( ), 0 );
+ if ( result == 0 && consumer.is_valid() && !consumer.is_stopped() )
+ consumer.wait_for( event );
+ delete event;
+ }
return result;
}
return mlt_producer_get_length( get_producer( ) );
}
+char* Producer::get_length_time( mlt_time_format format )
+{
+ return mlt_producer_get_length_time( get_producer( ), format );
+}
+
int Producer::get_playtime( )
{
return mlt_producer_get_playtime( get_producer( ) );