1 /** 2 * MltPlaylist.h - MLT Wrapper 3 * Copyright (C) 2004-2015 Meltytech, LLC 4 * Author: Charles Yates <charles.yates@gmail.com> 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 21 #ifndef MLTPP_PLAYLIST_H 22 #define MLTPP_PLAYLIST_H 23 24 #include "MltConfig.h" 25 26 #include <framework/mlt.h> 27 28 #include "MltProducer.h" 29 30 namespace Mlt 31 { 32 class Producer; 33 class Service; 34 class Playlist; 35 class Transition; 36 class Profile; 37 38 class MLTPP_DECLSPEC ClipInfo 39 { 40 public: 41 ClipInfo( ); 42 ClipInfo( mlt_playlist_clip_info *info ); 43 ~ClipInfo( ); 44 void update( mlt_playlist_clip_info *info ); 45 int clip; 46 Producer *producer; 47 Producer *cut; 48 int start; 49 char *resource; 50 int frame_in; 51 int frame_out; 52 int frame_count; 53 int length; 54 float fps; 55 int repeat; 56 }; 57 58 class MLTPP_DECLSPEC Playlist : public Producer 59 { 60 private: 61 mlt_playlist instance; 62 public: 63 Playlist( ); 64 Playlist( Profile& profile ); 65 Playlist( Service &playlist ); 66 Playlist( Playlist &playlist ); 67 Playlist( mlt_playlist playlist ); 68 virtual ~Playlist( ); 69 virtual mlt_playlist get_playlist( ); 70 mlt_producer get_producer( ); 71 int count( ); 72 int clear( ); 73 int append( Producer &producer, int in = -1, int out = -1 ); 74 int blank( int out ); 75 int blank( const char *length ); 76 int clip( mlt_whence whence, int index ); 77 int current_clip( ); 78 Producer *current( ); 79 ClipInfo *clip_info( int index, ClipInfo *info = NULL ); 80 static void delete_clip_info( ClipInfo *info ); 81 int insert( Producer &producer, int where, int in = -1, int out = -1 ); 82 int remove( int where ); 83 int move( int from, int to ); 84 int reorder( const int *indices ); 85 int resize_clip( int clip, int in, int out ); 86 int split( int clip, int position ); 87 int split_at( int position, bool left = true ); 88 int join( int clip, int count = 1, int merge = 1 ); 89 int mix( int clip, int length, Transition *transition = NULL ); 90 int mix_in( int clip, int length ); 91 int mix_out( int clip, int length ); 92 int mix_add( int clip, Transition *transition ); 93 int repeat( int clip, int count ); 94 Producer *get_clip( int clip ); 95 Producer *get_clip_at( int position ); 96 int get_clip_index_at( int position ); 97 bool is_mix( int clip ); 98 bool is_blank( int clip ); 99 bool is_blank_at( int position ); 100 void consolidate_blanks( int keep_length = 0 ); 101 Producer *replace_with_blank( int clip ); 102 void insert_blank( int clip, int out ); 103 void pad_blanks( int position, int length, int find = 0 ); 104 int insert_at( int position, Producer *producer, int mode = 0 ); 105 int insert_at( int position, Producer &producer, int mode = 0 ); 106 int clip_start( int clip ); 107 int clip_length( int clip ); 108 int blanks_from( int clip, int bounded = 0 ); 109 int remove_region( int position, int length ); 110 }; 111 } 112 113 #endif 114