X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=mlt%2B%2B%2Fsrc%2FMltPlaylist.h;h=0cd17b0859b68c21fb55593cc3b863d16f1f8c2b;hb=47fb1506a99bae1c9cb90f313176f9dab58d5854;hp=2bab9785e6ad119916d58664dff6b3721dbe02c0;hpb=8283ca2eb4e3b523e04a46578a19a985d3b2af3c;p=melted diff --git a/mlt++/src/MltPlaylist.h b/mlt++/src/MltPlaylist.h index 2bab978..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,14 +51,16 @@ namespace Mlt int frame_count; int length; float fps; + int repeat; }; - class Playlist : public Producer + class MLTPP_DECLSPEC Playlist : public Producer { private: mlt_playlist instance; public: Playlist( ); + Playlist( Service &playlist ); Playlist( Playlist &playlist ); Playlist( mlt_playlist playlist ); virtual ~Playlist( ); @@ -66,13 +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 ); }; }