From 1653a4a466e6289527be6de6cf42cac6907e1f89 Mon Sep 17 00:00:00 2001 From: lilo_booter Date: Mon, 6 Sep 2004 16:19:43 +0000 Subject: [PATCH] Service attach filters git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt++@410 d19143bc-622f-0410-bfdd-b5b2a6649095 --- mlt++/src/MltFilteredConsumer.cpp | 18 ++++++++++++++++++ mlt++/src/MltFilteredConsumer.h | 1 + mlt++/src/MltProducer.cpp | 14 -------------- mlt++/src/MltProducer.h | 3 --- mlt++/src/MltService.cpp | 17 +++++++++++++++++ mlt++/src/MltService.h | 4 ++++ mlt++/swig/mltpp.i | 1 + 7 files changed, 41 insertions(+), 17 deletions(-) diff --git a/mlt++/src/MltFilteredConsumer.cpp b/mlt++/src/MltFilteredConsumer.cpp index 2bcf6b4..d414da9 100644 --- a/mlt++/src/MltFilteredConsumer.cpp +++ b/mlt++/src/MltFilteredConsumer.cpp @@ -69,6 +69,24 @@ int FilteredConsumer::attach( Filter &filter ) return error; } +int FilteredConsumer::last( Filter &filter ) +{ + int error = 0; + if ( filter.is_valid( ) ) + { + Service *producer = this->producer( ); + error = filter.connect( *producer ); + if ( error == 0 ) + connect_producer( filter ); + delete producer; + } + else + { + error = 1; + } + return error; +} + int FilteredConsumer::detach( Filter &filter ) { if ( filter.is_valid( ) ) diff --git a/mlt++/src/MltFilteredConsumer.h b/mlt++/src/MltFilteredConsumer.h index 250c10d..1e48a36 100644 --- a/mlt++/src/MltFilteredConsumer.h +++ b/mlt++/src/MltFilteredConsumer.h @@ -41,6 +41,7 @@ namespace Mlt virtual ~FilteredConsumer( ); int connect( Service &service ); int attach( Filter &filter ); + int last( Filter &filter ); int detach( Filter &filter ); }; } diff --git a/mlt++/src/MltProducer.cpp b/mlt++/src/MltProducer.cpp index 96d9017..328d00c 100644 --- a/mlt++/src/MltProducer.cpp +++ b/mlt++/src/MltProducer.cpp @@ -130,17 +130,3 @@ int Producer::get_playtime( ) return mlt_producer_get_playtime( get_producer( ) ); } -int Producer::attach( Filter &filter ) -{ - return mlt_producer_attach( get_producer( ), filter.get_filter( ) ); -} - -int Producer::detach( Filter &filter ) -{ - return mlt_producer_detach( get_producer( ), filter.get_filter( ) ); -} - -Filter *Producer::filter( int index ) -{ - return new Filter( mlt_producer_filter( get_producer( ), index ) ); -} diff --git a/mlt++/src/MltProducer.h b/mlt++/src/MltProducer.h index d3b0f44..a37a8df 100644 --- a/mlt++/src/MltProducer.h +++ b/mlt++/src/MltProducer.h @@ -54,9 +54,6 @@ namespace Mlt int get_out( ); int get_length( ); int get_playtime( ); - int attach( Filter &filter ); - int detach( Filter &filter ); - Filter *filter( int index ); }; } diff --git a/mlt++/src/MltService.cpp b/mlt++/src/MltService.cpp index 3ffbb2d..6e06ed2 100644 --- a/mlt++/src/MltService.cpp +++ b/mlt++/src/MltService.cpp @@ -20,6 +20,7 @@ #include #include "MltService.h" +#include "MltFilter.h" using namespace Mlt; Service::Service( ) : @@ -112,3 +113,19 @@ service_type Service::type( ) } return type; } + +int Service::attach( Filter &filter ) +{ + return mlt_service_attach( get_service( ), filter.get_filter( ) ); +} + +int Service::detach( Filter &filter ) +{ + return mlt_service_detach( get_service( ), filter.get_filter( ) ); +} + +Filter *Service::filter( int index ) +{ + return new Filter( mlt_service_filter( get_service( ), index ) ); +} + diff --git a/mlt++/src/MltService.h b/mlt++/src/MltService.h index 9aef193..1e8a936 100644 --- a/mlt++/src/MltService.h +++ b/mlt++/src/MltService.h @@ -29,6 +29,7 @@ namespace Mlt { class Properties; + class Filter; class Frame; enum service_type @@ -61,6 +62,9 @@ namespace Mlt Service *producer( ); Frame *get_frame( int index = 0 ); service_type type( ); + int attach( Filter &filter ); + int detach( Filter &filter ); + Filter *filter( int index ); }; } diff --git a/mlt++/swig/mltpp.i b/mlt++/swig/mltpp.i index d388aa6..bdb0f39 100644 --- a/mlt++/swig/mltpp.i +++ b/mlt++/swig/mltpp.i @@ -37,6 +37,7 @@ namespace Mlt { %newobject Service::producer( ); %newobject Service::consumer( ); %newobject Service::get_frame( int ); +%newobject Service::filter( int ); %newobject Producer::filter( int ); %newobject Playlist::current( ); %newobject Playlist::clip_info( int ); -- 1.7.4.4