]> git.sesse.net Git - mlt/blob - src/valerie/valerie.h
29d4fd328325699603629061a708908f733773cf
[mlt] / src / valerie / valerie.h
1 /*
2  * valerie.h -- High Level Client API for miracle
3  * Copyright (C) 2002-2003 Ushodaya Enterprises Limited
4  * Author: Charles Yates <charles.yates@pandora.be>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19  */
20
21 #ifndef _VALERIE_H_
22 #define _VALERIE_H_
23
24 /* System header files */
25 #include <limits.h>
26
27 /* MLT Header files. */
28 #include <framework/mlt.h>
29
30 /* Application header files */
31 #include "valerie_parser.h"
32 #include "valerie_status.h"
33 #include "valerie_notifier.h"
34
35 #ifdef __cplusplus
36 extern "C"
37 {
38 #endif
39
40 /** Client error conditions
41 */
42
43 typedef enum
44 {
45         valerie_ok = 0,
46         valerie_malloc_failed,
47         valerie_unknown_error,
48         valerie_no_response,
49         valerie_invalid_command,
50         valerie_server_timeout,
51         valerie_missing_argument,
52         valerie_server_unavailable,
53         valerie_unit_creation_failed,
54         valerie_unit_unavailable,
55         valerie_invalid_file,
56         valerie_invalid_position
57 }
58 valerie_error_code;
59
60 /** Clip index specification.
61 */
62
63 typedef enum
64 {
65         valerie_absolute = 0,
66         valerie_relative
67 }
68 valerie_clip_offset;
69
70 /** Client structure.
71 */
72
73 typedef struct
74 {
75         valerie_parser parser;
76         valerie_response last_response;
77 }
78 *valerie, valerie_t;
79
80 /** Client API.
81 */
82
83 extern valerie valerie_init( valerie_parser );
84
85 /* Connect to the valerie parser instance */
86 extern valerie_error_code valerie_connect( valerie );
87
88 /* Global functions */
89 extern valerie_error_code valerie_set( valerie, char *, char * );
90 extern valerie_error_code valerie_get( valerie, char *, char *, int );
91 extern valerie_error_code valerie_run( valerie, char * );
92
93 /* Unit functions */
94 extern valerie_error_code valerie_unit_add( valerie, char *, int * );
95 extern valerie_error_code valerie_unit_load( valerie, int, char * );
96 extern valerie_error_code valerie_unit_load_clipped( valerie, int, char *, int32_t, int32_t );
97 extern valerie_error_code valerie_unit_load_back( valerie, int, char * );
98 extern valerie_error_code valerie_unit_load_back_clipped( valerie, int, char *, int32_t, int32_t );
99 extern valerie_error_code valerie_unit_append( valerie, int, char *, int32_t, int32_t );
100 extern valerie_error_code valerie_unit_receive( valerie, int, char *, char * );
101 extern valerie_error_code valerie_unit_push( valerie, int, char *, mlt_service );
102 extern valerie_error_code valerie_unit_clean( valerie, int );
103 extern valerie_error_code valerie_unit_clear( valerie, int );
104 extern valerie_error_code valerie_unit_clip_move( valerie, int, valerie_clip_offset, int, valerie_clip_offset, int );
105 extern valerie_error_code valerie_unit_clip_remove( valerie, int, valerie_clip_offset, int );
106 extern valerie_error_code valerie_unit_remove_current_clip( valerie, int );
107 extern valerie_error_code valerie_unit_clip_insert( valerie, int, valerie_clip_offset, int, char *, int32_t, int32_t );
108 extern valerie_error_code valerie_unit_play( valerie, int );
109 extern valerie_error_code valerie_unit_play_at_speed( valerie, int, int );
110 extern valerie_error_code valerie_unit_stop( valerie, int );
111 extern valerie_error_code valerie_unit_pause( valerie, int );
112 extern valerie_error_code valerie_unit_rewind( valerie, int );
113 extern valerie_error_code valerie_unit_fast_forward( valerie, int );
114 extern valerie_error_code valerie_unit_step( valerie, int, int32_t );
115 extern valerie_error_code valerie_unit_goto( valerie, int, int32_t );
116 extern valerie_error_code valerie_unit_clip_goto( valerie, int, valerie_clip_offset, int, int32_t );
117 extern valerie_error_code valerie_unit_clip_set_in( valerie, int, valerie_clip_offset, int, int32_t );
118 extern valerie_error_code valerie_unit_clip_set_out( valerie, int, valerie_clip_offset, int, int32_t );
119 extern valerie_error_code valerie_unit_set_in( valerie, int, int32_t );
120 extern valerie_error_code valerie_unit_set_out( valerie, int, int32_t );
121 extern valerie_error_code valerie_unit_clear_in( valerie, int );
122 extern valerie_error_code valerie_unit_clear_out( valerie, int );
123 extern valerie_error_code valerie_unit_clear_in_out( valerie, int );
124 extern valerie_error_code valerie_unit_set( valerie, int, char *, char * );
125 extern valerie_error_code valerie_unit_get( valerie, int, char * );
126 extern valerie_error_code valerie_unit_status( valerie, int, valerie_status );
127 extern valerie_error_code valerie_unit_transfer( valerie, int, int );
128
129 /* Notifier functionality. */
130 extern valerie_notifier valerie_get_notifier( valerie );
131
132 /** Structure for the directory.
133 */
134
135 typedef struct
136 {
137         char *directory;
138         valerie_response response;
139 }
140 *valerie_dir, valerie_dir_t;
141
142 /** Directory entry structure.
143 */
144
145 typedef struct
146 {
147         int dir;
148         char name[ NAME_MAX ];
149         char full[ PATH_MAX + NAME_MAX ];
150         unsigned long long size;
151 }
152 *valerie_dir_entry, valerie_dir_entry_t;
153
154 /* Directory reading. */
155 extern valerie_dir valerie_dir_init( valerie, char * );
156 extern valerie_error_code valerie_dir_get_error_code( valerie_dir );
157 extern valerie_error_code valerie_dir_get( valerie_dir, int, valerie_dir_entry );
158 extern int valerie_dir_count( valerie_dir );
159 extern void valerie_dir_close( valerie_dir );
160
161 /** Structure for the list.
162 */
163
164 typedef struct
165 {
166         int generation;
167         valerie_response response;
168 }
169 *valerie_list, valerie_list_t;
170
171 /** List entry structure.
172 */
173
174 typedef struct
175 {
176         int clip;
177         char full[ PATH_MAX + NAME_MAX ];
178         int32_t in;
179         int32_t out;
180         int32_t max;
181         int32_t size;
182         int32_t fps;
183 }
184 *valerie_list_entry, valerie_list_entry_t;
185
186 /* List reading. */
187 extern valerie_list valerie_list_init( valerie, int );
188 extern valerie_error_code valerie_list_get_error_code( valerie_list );
189 extern valerie_error_code valerie_list_get( valerie_list, int, valerie_list_entry );
190 extern int valerie_list_count( valerie_list );
191 extern void valerie_list_close( valerie_list );
192
193 /** Structure for nodes.
194 */
195
196 typedef struct
197 {
198         valerie_response response;
199 }
200 *valerie_nodes, valerie_nodes_t;
201
202 /** Node entry structure.
203 */
204
205 typedef struct
206 {
207         int node;
208         char guid[ 17 ];
209         char name[ 1024 ];
210 }
211 *valerie_node_entry, valerie_node_entry_t;
212
213 /* Node reading. */
214 extern valerie_nodes valerie_nodes_init( valerie );
215 extern valerie_error_code valerie_nodes_get_error_code( valerie_nodes );
216 extern valerie_error_code valerie_nodes_get( valerie_nodes, int, valerie_node_entry );
217 extern int valerie_nodes_count( valerie_nodes );
218 extern void valerie_nodes_close( valerie_nodes );
219
220 /** Structure for units.
221 */
222
223 typedef struct
224 {
225         valerie_response response;
226 }
227 *valerie_units, valerie_units_t;
228
229 /** Unit entry structure.
230 */
231
232 typedef struct
233 {
234         int unit;
235         int node;
236         char guid[ 512 ];
237         int online;
238 }
239 *valerie_unit_entry, valerie_unit_entry_t;
240
241 /* Unit reading. */
242 extern valerie_units valerie_units_init( valerie );
243 extern valerie_error_code valerie_units_get_error_code( valerie_units );
244 extern valerie_error_code valerie_units_get( valerie_units, int, valerie_unit_entry );
245 extern int valerie_units_count( valerie_units );
246 extern void valerie_units_close( valerie_units );
247
248 /* Miscellaenous functions */
249 extern valerie_response valerie_get_last_response( valerie );
250 extern char *valerie_error_description( valerie_error_code );
251
252 /* Courtesy functions. */
253 extern valerie_error_code valerie_execute( valerie, size_t, char *, ... );
254 extern valerie_error_code valerie_push( valerie, mlt_service, size_t, char *, ... );
255
256 /* Close function. */
257 extern void valerie_close( valerie );
258
259 #ifdef __cplusplus
260 }
261 #endif
262
263 #endif