Producer filter extraction method
[melted] / mlt++ / src / MltService.cpp
index 03f8261..c7b11d5 100644 (file)
 #include "MltService.h"
 using namespace Mlt;
 
-mlt_properties Service::get_properties( )
+Service::Service( ) :
+       Properties( false ),
+       instance( NULL )
 {
-       return mlt_service_properties( get_service( ) );
 }
 
-int Service::connect_producer( Service &producer, int index )
+Service::Service( Service &service ) :
+       Properties( false ),
+       instance( service.get_service( ) )
 {
-       return mlt_service_connect_producer( get_service( ), producer.get_service( ), index );
+       inc_ref( );
 }
 
-Service *Service::producer( )
+Service::Service( mlt_service service ) :
+       Properties( false ),
+       instance( service )
 {
-       if ( get_service( ) != NULL )
-               return new ServiceInstance( mlt_service_producer( get_service( ) ) );
-       else
-               return NULL;
+       inc_ref( );
 }
 
-Service *Service::consumer( )
+Service::~Service( )
 {
-       if ( get_service( ) != NULL )
-               return new ServiceInstance( mlt_service_consumer( get_service( ) ) );
-       else
-               return NULL;
+       mlt_service_close( instance );
 }
 
-Frame *Service::get_frame( int index )
+mlt_service Service::get_service( )
 {
-       mlt_frame frame = NULL;
-       mlt_service_get_frame( get_service( ), &frame, index );
-       return new FrameInstance( frame );
+       return instance;
 }
 
-mlt_service ServiceInstance::get_service( )
+mlt_properties Service::get_properties( )
 {
-       return instance;
+       return mlt_service_properties( get_service( ) );
 }
 
-ServiceInstance::ServiceInstance( Service &service ) :
-       instance( service.get_service( ) )
+int Service::connect_producer( Service &producer, int index )
 {
+       return mlt_service_connect_producer( get_service( ), producer.get_service( ), index );
 }
 
-ServiceInstance::ServiceInstance( mlt_service service ) :
-       instance( service )
+Service *Service::producer( )
 {
+       return new Service( mlt_service_producer( get_service( ) ) );
+}
+
+Service *Service::consumer( )
+{
+       return new Service( mlt_service_consumer( get_service( ) ) );
+}
+
+Frame *Service::get_frame( int index )
+{
+       mlt_frame frame = NULL;
+       mlt_service_get_frame( get_service( ), &frame, index );
+       return new Frame( frame );
 }