Service attach filters
authorlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Mon, 6 Sep 2004 16:19:43 +0000 (16:19 +0000)
committerlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Mon, 6 Sep 2004 16:19:43 +0000 (16:19 +0000)
git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt++@410 d19143bc-622f-0410-bfdd-b5b2a6649095

mlt++/src/MltFilteredConsumer.cpp
mlt++/src/MltFilteredConsumer.h
mlt++/src/MltProducer.cpp
mlt++/src/MltProducer.h
mlt++/src/MltService.cpp
mlt++/src/MltService.h
mlt++/swig/mltpp.i

index 2bcf6b4..d414da9 100644 (file)
@@ -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( ) )
index 250c10d..1e48a36 100644 (file)
@@ -41,6 +41,7 @@ namespace Mlt
                        virtual ~FilteredConsumer( );
                        int connect( Service &service );
                        int attach( Filter &filter );
+                       int last( Filter &filter );
                        int detach( Filter &filter );
        };
 }
index 96d9017..328d00c 100644 (file)
@@ -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 ) );
-}
index d3b0f44..a37a8df 100644 (file)
@@ -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 );
        };
 }
 
index 3ffbb2d..6e06ed2 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <string.h>
 #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 ) );
+}
+
index 9aef193..1e8a936 100644 (file)
@@ -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 );
        };
 }
 
index d388aa6..bdb0f39 100644 (file)
@@ -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 );