#ifndef _MLTPP_PRODUCER_H_
#define _MLTPP_PRODUCER_H_
+#include "config.h"
+
#include <framework/mlt.h>
#include "MltService.h"
namespace Mlt
{
- class Producer : public Service
+ class Service;
+ class Filter;
+ class Profile;
+ class Frame;
+
+ class MLTPP_DECLSPEC Producer : public Service
{
+ private:
+ mlt_producer instance;
+ Producer *parent_;
public:
- virtual mlt_producer get_producer( ) = 0;
+ Producer( );
+ Producer( Profile& profile, const char *id, const char *service = NULL );
+ Producer( Service &producer );
+ Producer( mlt_producer producer );
+ Producer( Producer &producer );
+ Producer( Producer *producer );
+ virtual ~Producer( );
+ virtual mlt_producer get_producer( );
+ Producer &parent( );
+ mlt_producer get_parent( );
mlt_service get_service( );
- int seek( mlt_position position );
- mlt_position position( );
- mlt_position frame( );
+ int seek( int position );
+ int position( );
+ int frame( );
int set_speed( double speed );
double get_speed( );
double get_fps( );
- int set_in_and_out( mlt_position in, mlt_position out );
- mlt_position get_in( );
- mlt_position get_out( );
- mlt_position get_length( );
- mlt_position get_playtime( );
- };
-
- class ProducerInstance : public Producer
- {
- private:
- bool destroy;
- mlt_producer instance;
- public:
- mlt_producer get_producer( );
- ProducerInstance( char *id, char *service = NULL );
- ProducerInstance( mlt_producer producer );
- ProducerInstance( Producer &producer );
- virtual ~ProducerInstance( );
+ int set_in_and_out( int in, int out );
+ int get_in( );
+ int get_out( );
+ int get_length( );
+ int get_playtime( );
+ Producer *cut( int in = 0, int out = -1 );
+ bool is_cut( );
+ bool is_blank( );
+ bool same_clip( Producer &that );
+ bool runs_into( Producer &that );
+ void optimise( );
};
}