X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=mlt%2B%2B%2Fsrc%2FMltPlaylist.h;h=0cd17b0859b68c21fb55593cc3b863d16f1f8c2b;hb=55757b000043f6e370b9e963ce2e3542962c03c0;hp=c9adcaad446811417d09b6605cd8f848c96682eb;hpb=1e779c37ceeceadaeb9733966d6cdda6a5b11358;p=melted diff --git a/mlt++/src/MltPlaylist.h b/mlt++/src/MltPlaylist.h index c9adcaa..0cd17b0 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" @@ -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 ); }; }