#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 );
}