]> git.sesse.net Git - mlt/blob - src/valerie/valerie.h
miracle part 1
[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 /* Application header files */
28 #include "valerie_parser.h"
29 #include "valerie_status.h"
30 #include "valerie_notifier.h"
31
32 #ifdef __cplusplus
33 extern "C"
34 {
35 #endif
36
37 /** Client error conditions
38 */
39
40 typedef enum
41 {
42         valerie_ok = 0,
43         valerie_malloc_failed,
44         valerie_unknown_error,
45         valerie_no_response,
46         valerie_invalid_command,
47         valerie_server_timeout,
48         valerie_missing_argument,
49         valerie_server_unavailable,
50         valerie_unit_creation_failed,
51         valerie_unit_unavailable,
52         valerie_invalid_file,
53         valerie_invalid_position
54 }
55 valerie_error_code;
56
57 /** Clip index specification.
58 */
59
60 typedef enum
61 {
62         valerie_absolute = 0,
63         valerie_relative
64 }
65 valerie_clip_offset;
66
67 /** Client structure.
68 */
69
70 typedef struct
71 {
72         valerie_parser parser;
73         valerie_response last_response;
74 }
75 *valerie, valerie_t;
76
77 /** Client API.
78 */
79
80 extern valerie valerie_init( valerie_parser );
81
82 /* Connect to the valerie parser instance */
83 extern valerie_error_code valerie_connect( valerie );
84
85 /* Global functions */
86 extern valerie_error_code valerie_set( valerie, char *, char * );
87 extern valerie_error_code valerie_get( valerie, char *, char *, int );
88 extern valerie_error_code valerie_run( valerie, char * );
89
90 /* Unit functions */
91 extern valerie_error_code valerie_unit_add( valerie, char *, int * );
92 extern valerie_error_code valerie_unit_load( valerie, int, char * );
93 extern valerie_error_code valerie_unit_load_clipped( valerie, int, char *, double, double );
94 extern valerie_error_code valerie_unit_load_back( valerie, int, char * );
95 extern valerie_error_code valerie_unit_load_back_clipped( valerie, int, char *, double, double );
96 extern valerie_error_code valerie_unit_append( valerie, int, char *, double, double );
97 extern valerie_error_code valerie_unit_clean( valerie, int );
98 extern valerie_error_code valerie_unit_clip_move( valerie, int, valerie_clip_offset, int, valerie_clip_offset, int );
99 extern valerie_error_code valerie_unit_clip_remove( valerie, int, valerie_clip_offset, int );
100 extern valerie_error_code valerie_unit_remove_current_clip( valerie, int );
101 extern valerie_error_code valerie_unit_clip_insert( valerie, int, valerie_clip_offset, int, char *, double, double );
102 extern valerie_error_code valerie_unit_play( valerie, int );
103 extern valerie_error_code valerie_unit_play_at_speed( valerie, int, int );
104 extern valerie_error_code valerie_unit_stop( valerie, int );
105 extern valerie_error_code valerie_unit_pause( valerie, int );
106 extern valerie_error_code valerie_unit_rewind( valerie, int );
107 extern valerie_error_code valerie_unit_fast_forward( valerie, int );
108 extern valerie_error_code valerie_unit_step( valerie, int, double );
109 extern valerie_error_code valerie_unit_goto( valerie, int, double );
110 extern valerie_error_code valerie_unit_clip_goto( valerie, int, valerie_clip_offset, int, double );
111 extern valerie_error_code valerie_unit_clip_set_in( valerie, int, valerie_clip_offset, int, double );
112 extern valerie_error_code valerie_unit_clip_set_out( valerie, int, valerie_clip_offset, int, double );
113 extern valerie_error_code valerie_unit_set_in( valerie, int, double );
114 extern valerie_error_code valerie_unit_set_out( valerie, int, double );
115 extern valerie_error_code valerie_unit_clear_in( valerie, int );
116 extern valerie_error_code valerie_unit_clear_out( valerie, int );
117 extern valerie_error_code valerie_unit_clear_in_out( valerie, int );
118 extern valerie_error_code valerie_unit_set( valerie, int, char *, char * );
119 extern valerie_error_code valerie_unit_get( valerie, int, char * );
120 extern valerie_error_code valerie_unit_status( valerie, int, valerie_status );
121 extern valerie_error_code valerie_unit_transfer( valerie, int, int );
122
123 /* Notifier functionality. */
124 extern valerie_notifier valerie_get_notifier( valerie );
125
126 /** Structure for the directory.
127 */
128
129 typedef struct
130 {
131         char *directory;
132         valerie_response response;
133 }
134 *valerie_dir, valerie_dir_t;
135
136 /** Directory entry structure.
137 */
138
139 typedef struct
140 {
141         int dir;
142         char name[ NAME_MAX ];
143         char full[ PATH_MAX + NAME_MAX ];
144         unsigned long long size;
145 }
146 *valerie_dir_entry, valerie_dir_entry_t;
147
148 /* Directory reading. */
149 extern valerie_dir valerie_dir_init( valerie, char * );
150 extern valerie_error_code valerie_dir_get_error_code( valerie_dir );
151 extern valerie_error_code valerie_dir_get( valerie_dir, int, valerie_dir_entry );
152 extern int valerie_dir_count( valerie_dir );
153 extern void valerie_dir_close( valerie_dir );
154
155 /** Structure for the list.
156 */
157
158 typedef struct
159 {
160         int generation;
161         valerie_response response;
162 }
163 *valerie_list, valerie_list_t;
164
165 /** List entry structure.
166 */
167
168 typedef struct
169 {
170         int clip;
171         char full[ PATH_MAX + NAME_MAX ];
172         double in;
173         double out;
174         double max;
175         double size;
176         double fps;
177 }
178 *valerie_list_entry, valerie_list_entry_t;
179
180 /* List reading. */
181 extern valerie_list valerie_list_init( valerie, int );
182 extern valerie_error_code valerie_list_get_error_code( valerie_list );
183 extern valerie_error_code valerie_list_get( valerie_list, int, valerie_list_entry );
184 extern int valerie_list_count( valerie_list );
185 extern void valerie_list_close( valerie_list );
186
187 /** Structure for nodes.
188 */
189
190 typedef struct
191 {
192         valerie_response response;
193 }
194 *valerie_nodes, valerie_nodes_t;
195
196 /** Node entry structure.
197 */
198
199 typedef struct
200 {
201         int node;
202         char guid[ 17 ];
203         char name[ 1024 ];
204 }
205 *valerie_node_entry, valerie_node_entry_t;
206
207 /* Node reading. */
208 extern valerie_nodes valerie_nodes_init( valerie );
209 extern valerie_error_code valerie_nodes_get_error_code( valerie_nodes );
210 extern valerie_error_code valerie_nodes_get( valerie_nodes, int, valerie_node_entry );
211 extern int valerie_nodes_count( valerie_nodes );
212 extern void valerie_nodes_close( valerie_nodes );
213
214 /** Structure for units.
215 */
216
217 typedef struct
218 {
219         valerie_response response;
220 }
221 *valerie_units, valerie_units_t;
222
223 /** Unit entry structure.
224 */
225
226 typedef struct
227 {
228         int unit;
229         int node;
230         char guid[ 512 ];
231         int online;
232 }
233 *valerie_unit_entry, valerie_unit_entry_t;
234
235 /* Unit reading. */
236 extern valerie_units valerie_units_init( valerie );
237 extern valerie_error_code valerie_units_get_error_code( valerie_units );
238 extern valerie_error_code valerie_units_get( valerie_units, int, valerie_unit_entry );
239 extern int valerie_units_count( valerie_units );
240 extern void valerie_units_close( valerie_units );
241
242 /* Miscellaenous functions */
243 extern valerie_response valerie_get_last_response( valerie );
244 extern char *valerie_error_description( valerie_error_code );
245
246 /* Courtesy functions. */
247 extern valerie_error_code valerie_execute( valerie, size_t, char *, ... );
248
249 /* Close function. */
250 extern void valerie_close( valerie );
251
252 #ifdef __cplusplus
253 }
254 #endif
255
256 #endif