+ Win32 port - dev studio is required to avoid issues with C++ ABI compatibility
[melted] / mlt++ / src / MltPlaylist.h
index c9adcaa..0cd17b0 100644 (file)
@@ -21,6 +21,8 @@
 #ifndef _MLTPP_PLAYLIST_H_
 #define _MLTPP_PLAYLIST_H_
 
+#include "config.h"
+
 #include <framework/mlt.h>
 
 #include "MltProducer.h"
@@ -30,15 +32,18 @@ namespace Mlt
        class Producer;
        class Service;
        class Playlist;
+       class Transition;
 
-       class ClipInfo
+       class MLTPP_DECLSPEC ClipInfo
        {
                public:
+                       ClipInfo( );
                        ClipInfo( mlt_playlist_clip_info *info );
                        ~ClipInfo( );
+                       void update( mlt_playlist_clip_info *info );
                        int clip;
                        Producer *producer;
-                       Service *service;
+                       Producer *cut;
                        int start;
                        char *resource;
                        int frame_in;
@@ -46,15 +51,16 @@ namespace Mlt
                        int frame_count;
                        int length;
                        float fps;
+                       int repeat;
        };
 
-       class Playlist : public Producer
+       class MLTPP_DECLSPEC Playlist : public Producer
        {
                private:
-                       bool destroy;
                        mlt_playlist instance;
                public:
                        Playlist( );
+                       Playlist( Service &playlist );
                        Playlist( Playlist &playlist );
                        Playlist( mlt_playlist playlist );
                        virtual ~Playlist( );
@@ -67,11 +73,35 @@ namespace Mlt
                        int clip( mlt_whence whence, int index );
                        int current_clip( );
                        Producer *current( );
-                       ClipInfo *clip_info( int index );
+                       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 );
        };
 }