X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=mlt%2B%2B%2Fsrc%2FMltPlaylist.cpp;fp=mlt%2B%2B%2Fsrc%2FMltPlaylist.cpp;h=54b79ba83751422ed90a7eee7287d534bb9862e8;hb=89819752a90cc7f75137c6d951081dcf31b50c0c;hp=1e3a1cd8e4a1067b219633922d86f019c465c448;hpb=4fdebb8f8dda879531b39139969016e446c6abb5;p=melted diff --git a/mlt++/src/MltPlaylist.cpp b/mlt++/src/MltPlaylist.cpp index 1e3a1cd..54b79ba 100644 --- a/mlt++/src/MltPlaylist.cpp +++ b/mlt++/src/MltPlaylist.cpp @@ -18,9 +18,62 @@ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include +#include #include "MltPlaylist.h" using namespace Mlt; +ClipInfo::ClipInfo( mlt_playlist_clip_info *info ) : + clip( info->clip ), + producer( new ProducerInstance( info->producer ) ), + service( new ServiceInstance( info->service ) ), + start( info->start ), + resource( strdup( info->resource ) ), + frame_in( info->frame_in ), + frame_out( info->frame_out ), + frame_count( info->frame_count ), + length( info->length ), + fps( info->fps ) +{ +} + +ClipInfo::~ClipInfo( ) +{ + delete producer; + delete service; + free( resource ); +} + +PlaylistInstance::PlaylistInstance( ) : + destroy( true ), + instance( NULL ) +{ + instance = mlt_playlist_init( ); +} + +PlaylistInstance::PlaylistInstance( Playlist &playlist ) : + destroy( false ), + instance( playlist.get_playlist( ) ) +{ +} + +PlaylistInstance::PlaylistInstance( mlt_playlist playlist ) : + destroy( false ), + instance( playlist ) +{ +} + +PlaylistInstance::~PlaylistInstance( ) +{ + if ( destroy ) + mlt_playlist_close( instance ); +} + +mlt_playlist PlaylistInstance::get_playlist( ) +{ + return instance; +} + mlt_producer Playlist::get_producer( ) { return mlt_playlist_producer( get_playlist( ) ); @@ -46,33 +99,46 @@ int Playlist::blank( mlt_position length ) return mlt_playlist_blank( get_playlist( ), length ); } -mlt_playlist PlaylistInstance::get_playlist( ) +mlt_position Playlist::clip( mlt_whence whence, int index ) { - return instance; + return mlt_playlist_clip( get_playlist( ), whence, index ); } -PlaylistInstance::PlaylistInstance( ) : - destroy( true ), - instance( NULL ) +int Playlist::current_clip( ) { - instance = mlt_playlist_init( ); + return mlt_playlist_current_clip( get_playlist( ) ); } -PlaylistInstance::PlaylistInstance( Playlist &playlist ) : - destroy( false ), - instance( playlist.get_playlist( ) ) +Producer *Playlist::current( ) { + return new ProducerInstance( mlt_playlist_current( get_playlist( ) ) ); } -PlaylistInstance::PlaylistInstance( mlt_playlist playlist ) : - destroy( false ), - instance( playlist ) +ClipInfo *Playlist::clip_info( int index ) { + mlt_playlist_clip_info info; + mlt_playlist_get_clip_info( get_playlist( ), &info, index ); + return new ClipInfo( &info ); } -PlaylistInstance::~PlaylistInstance( ) +int Playlist::insert( Producer &producer, int where, mlt_position in, mlt_position out ) { - if ( destroy ) - mlt_playlist_close( instance ); + return mlt_playlist_insert( get_playlist( ), producer.get_producer( ), where, in, out ); +} + +int Playlist::remove( int where ) +{ + return mlt_playlist_remove( get_playlist( ), where ); } +int Playlist::move( int from, int to ) +{ + return mlt_playlist_move( get_playlist( ), from, to ); +} + +int Playlist::resize_clip( int clip, mlt_position in, mlt_position out ) +{ + return mlt_playlist_resize_clip( get_playlist( ), clip, in, out ); +} + +