]> git.sesse.net Git - mlt/blob - mlt++/src/MltRepository.cpp
Merge ../mlt++
[mlt] / mlt++ / src / MltRepository.cpp
1 /**
2  * MltRepository.cpp - MLT Wrapper
3  * Copyright (C) 2008 Dan Dennedy <dan@dennedy.org>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser General Public License as published
7  * by the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software Foundation,
17  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18  */
19
20 #include "MltRepository.h"
21 #include "MltProfile.h"
22 #include "MltProperties.h"
23 using namespace Mlt;
24
25 Repository::Repository( const char* directory ) :
26         instance( NULL )
27 {
28         instance = mlt_repository_init( directory );
29 }
30
31 Repository::Repository( mlt_repository repository ) :
32         instance( repository )
33 {
34 }
35
36 Repository::~Repository( )
37 {
38         if ( instance )
39                 mlt_repository_close( instance );
40         instance = NULL;
41 }
42
43 void Repository::register_service( mlt_service_type service_type, const char *service, mlt_register_callback symbol )
44 {
45         mlt_repository_register( instance, service_type, service, symbol );
46 }
47
48 void *Repository::create( Profile& profile, mlt_service_type type, const char *service, void *arg )
49 {
50         return mlt_repository_create( instance, profile.get_profile(), type, service, arg );
51 }
52
53 Properties *Repository::consumers( ) const
54 {
55         return new Properties( mlt_repository_consumers( instance ) );
56 }
57
58 Properties *Repository::filters( ) const
59 {
60         return new Properties( mlt_repository_filters( instance ) );
61 }
62
63 Properties *Repository::producers( ) const
64 {
65         return new Properties( mlt_repository_producers( instance ) );
66 }
67
68 Properties *Repository::transitions( ) const
69 {
70         return new Properties( mlt_repository_transitions( instance ) );
71 }
72
73 void Repository::register_metadata( mlt_service_type type, const char *service, mlt_metadata_callback callback, void *callback_data )
74 {
75         mlt_repository_register_metadata( instance, type, service, callback, callback_data );
76 }
77
78 Properties *Repository::metadata( mlt_service_type type, const char *service ) const
79 {
80         return new Properties( mlt_repository_metadata( instance, type, service ) );
81 }