X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mlt%2B%2B%2Fsrc%2FMltPlaylist.h;h=0cd17b0859b68c21fb55593cc3b863d16f1f8c2b;hb=b1616107824f9c1b2e83c97d9a8d3b0cc700ef5f;hp=8aae7fb650c516e2fb20406e0acdf1e648f8aaeb;hpb=6d06b0de2cb66cf093bf24d9ed02fac18756105e;p=mlt diff --git a/mlt++/src/MltPlaylist.h b/mlt++/src/MltPlaylist.h index 8aae7fb6..0cd17b08 100644 --- a/mlt++/src/MltPlaylist.h +++ b/mlt++/src/MltPlaylist.h @@ -21,6 +21,8 @@ #ifndef _MLTPP_PLAYLIST_H_ #define _MLTPP_PLAYLIST_H_ +#include "config.h" + #include #include "MltProducer.h" @@ -32,11 +34,13 @@ namespace Mlt 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; Producer *cut; @@ -50,7 +54,7 @@ namespace Mlt int repeat; }; - class Playlist : public Producer + class MLTPP_DECLSPEC Playlist : public Producer { private: mlt_playlist instance; @@ -69,12 +73,14 @@ 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 ); @@ -83,6 +89,19 @@ namespace Mlt 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 ); }; }