+ Win32 port - dev studio is required to avoid issues with C++ ABI compatibility
[melted] / mlt++ / src / MltPlaylist.h
index 1326ca7..0cd17b0 100644 (file)
 #ifndef _MLTPP_PLAYLIST_H_
 #define _MLTPP_PLAYLIST_H_
 
+#include "config.h"
+
 #include <framework/mlt.h>
 
 #include "MltProducer.h"
 
 namespace Mlt
 {
-       class Playlist : public Producer
+       class Producer;
+       class Service;
+       class Playlist;
+       class Transition;
+
+       class MLTPP_DECLSPEC ClipInfo
        {
                public:
-                       virtual mlt_playlist get_playlist( ) = 0;
-                       mlt_producer get_producer( );
-                       int count( );
-                       int clear( );
-                       int append( Producer &producer, mlt_position in = -1, mlt_position out = -1 );
-                       int blank( mlt_position length );
+                       ClipInfo( );
+                       ClipInfo( mlt_playlist_clip_info *info );
+                       ~ClipInfo( );
+                       void update( mlt_playlist_clip_info *info );
+                       int clip;
+                       Producer *producer;
+                       Producer *cut;
+                       int start;
+                       char *resource;
+                       int frame_in;
+                       int frame_out;
+                       int frame_count;
+                       int length;
+                       float fps;
+                       int repeat;
        };
-       
-       class PlaylistInstance : public Playlist
+
+       class MLTPP_DECLSPEC Playlist : public Producer
        {
                private:
-                       bool destroy;
                        mlt_playlist instance;
                public:
-                       mlt_playlist get_playlist( );
-                       PlaylistInstance( );
-                       PlaylistInstance( Playlist &playlist );
-                       PlaylistInstance( mlt_playlist playlist );
-                       virtual ~PlaylistInstance( );
+                       Playlist( );
+                       Playlist( Service &playlist );
+                       Playlist( Playlist &playlist );
+                       Playlist( mlt_playlist playlist );
+                       virtual ~Playlist( );
+                       virtual mlt_playlist get_playlist( );
+                       mlt_producer get_producer( );
+                       int count( );
+                       int clear( );
+                       int append( Producer &producer, int in = -1, int out = -1 );
+                       int blank( int length );
+                       int clip( mlt_whence whence, int index );
+                       int current_clip( );
+                       Producer *current( );
+                       ClipInfo *clip_info( int index, ClipInfo *info = NULL );
+                       static void delete_clip_info( ClipInfo *info );
+                       int insert( Producer &producer, int where, int in = -1, int out = -1 );
+                       int remove( int where );
+                       int move( int from, int to );
+                       int resize_clip( int clip, int in, int out );
+                       int split( int clip, int position );
+                       int split_at( int position, bool left = true );
+                       int join( int clip, int count = 1, int merge = 1 );
+                       int mix( int clip, int length, Transition *transition = NULL );
+                       int mix_add( int clip, Transition *transition );
+                       int repeat( int clip, int count );
+                       Producer *get_clip( int clip );
+                       Producer *get_clip_at( int position );
+                       int get_clip_index_at( int position );
+                       bool is_mix( int clip );
+                       bool is_blank( int clip );
+                       bool is_blank_at( int position );
+                       void consolidate_blanks( int keep_length = 0 );
+                       Producer *replace_with_blank( int clip );
+                       void insert_blank( int clip, int length );
+                       void pad_blanks( int position, int length, int find = 0 );
+                       int insert_at( int position, Producer *producer, int mode = 0 );
+                       int insert_at( int position, Producer &producer, int mode = 0 );
+                       int clip_start( int clip );
+                       int clip_length( int clip );
+                       int blanks_from( int clip, int bounded = 0 );
+                       int remove_region( int position, int length );
+                       int move_region( int position, int length, int new_position );
        };
 }