libvlc.h 13.3 KB
Newer Older
zorglub's avatar
zorglub committed
1
2
3
4
5
6
/*****************************************************************************
 * libvlc.h:  libvlc_* new external API
 *****************************************************************************
 * Copyright (C) 1998-2005 the VideoLAN team
 * $Id: vlc.h 13701 2005-12-12 17:58:56Z zorglub $
 *
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
7
 * Authors: Clément Stenac <zorglub@videolan.org>
zorglub's avatar
zorglub committed
8
9
10
11
12
13
14
15
16
17
18
19
20
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
dionoea's avatar
dionoea committed
21
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
zorglub's avatar
zorglub committed
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 *****************************************************************************/

/**
 * \defgroup libvlc Libvlc
 * This is libvlc, the base library of the VLC program.
 *
 * @{
 */


#ifndef _LIBVLC_H
#define _LIBVLC_H 1

#include <vlc/vlc.h>

# ifdef __cplusplus
extern "C" {
# endif

/*****************************************************************************
 * Exception handling
 *****************************************************************************/
/** defgroup libvlc_exception Exceptions
 * \ingroup libvlc
 * LibVLC Exceptions handling
 * @{
 */

struct libvlc_exception_t
{
    int b_raised;
    char *psz_message;
};
typedef struct libvlc_exception_t libvlc_exception_t;

/**
 * Initialize an exception structure. This can be called several times to reuse
 * an exception structure.
 * \param p_exception the exception to initialize
 */
void libvlc_exception_init( libvlc_exception_t *p_exception );

/**
 * Has an exception been raised ?
 * \param p_exception the exception to query
 * \return 0 if no exception raised, 1 else
 */
int libvlc_exception_raised( libvlc_exception_t *p_exception );
zorglub's avatar
zorglub committed
70
71
72
73
74
75

/**
 * Raise an exception
 * \param p_exception the exception to raise
 * \param psz_message the exception message
 */
zorglub's avatar
zorglub committed
76
void libvlc_exception_raise( libvlc_exception_t *p_exception, char *psz_format, ... );
zorglub's avatar
zorglub committed
77

zorglub's avatar
zorglub committed
78
79
80
81
82
83
84
/**
 * Clear an exception object so it can be reused.
 * The exception object must be initialized
 * \param p_exception the exception to clear
 */
void libvlc_exception_clear( libvlc_exception_t * );

zorglub's avatar
zorglub committed
85
86
87
88
89
90
91
92
/**
 * Get exception message
 * \param p_exception the exception to query
 * \return the exception message or NULL if not applicable (exception not raised
 * for example)
 */
char* libvlc_exception_get_message( libvlc_exception_t *p_exception );

zorglub's avatar
zorglub committed
93
/**@} */
zorglub's avatar
zorglub committed
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136

/*****************************************************************************
 * Core handling
 *****************************************************************************/

/** defgroup libvlc_core Core
 * \ingroup libvlc
 * LibVLC Core
 * @{
 */

/** This structure is opaque. It represents a libvlc instance */
typedef struct libvlc_instance_t libvlc_instance_t;

/**
 * Create an initialized libvlc instance
 * \param argc the number of arguments
 * \param argv command-line-type arguments
 * \param exception an initialized exception pointer
 */
libvlc_instance_t * libvlc_new( int , char **, libvlc_exception_t *);

/**
 * Destroy a libvlc instance
 * \param p_instance the instance to destroy
 */
void libvlc_destroy( libvlc_instance_t *);

/** @}*/

/*****************************************************************************
 * Playlist
 *****************************************************************************/
/** defgroup libvlc_playlist Playlist
 * \ingroup libvlc
 * LibVLC Playlist handling
 * @{
 */

/**
 * Start playing. You can give some additionnal playlist item options
 * that will be added to the item before playing it.
 * \param p_instance the instance
zorglub's avatar
zorglub committed
137
138
 * \param i_id the item to play. If this is a negative number, the next
 * item will be selected. Else, the item with the given ID will be played
zorglub's avatar
zorglub committed
139
140
141
142
 * \param i_options the number of options to add to the item
 * \param ppsz_options the options to add to the item
 * \param p_exception an initialized exception
 */
zorglub's avatar
zorglub committed
143
void libvlc_playlist_play( libvlc_instance_t*, int, int, char **,
zorglub's avatar
zorglub committed
144
145
                           libvlc_exception_t * );

zorglub's avatar
zorglub committed
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/**
 * Pause a running playlist, resume if it was stopped
 * \param p_instance the instance to pause
 * \param p_exception an initialized exception
 */
void libvlc_playlist_pause( libvlc_instance_t *, libvlc_exception_t * );

/**
 * Checks if the playlist is running
 * \param p_instance the instance
 * \param p_exception an initialized exception
 * \return 0 if the playlist is stopped or paused, 1 if it is running
 */
int libvlc_playlist_isplaying( libvlc_instance_t *, libvlc_exception_t * );

/**
 * Get the number of items in the playlist
 * \param p_instance the instance
 * \param p_exception an initialized exception
 * \return the number of items
 */
int libvlc_playlist_items_count( libvlc_instance_t *, libvlc_exception_t * );

zorglub's avatar
zorglub committed
169
170
171
172
173
174
175
176
/**
 * Stop playing
 * \param p_instance the instance to stop
 * \param p_exception an initialized exception
 */
void libvlc_playlist_stop( libvlc_instance_t *, libvlc_exception_t * );

/**
zorglub's avatar
zorglub committed
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
 * Go to next playlist item (starts playback if it was stopped)
 * \param p_instance the instance to use
 * \param p_exception an initialized exception
 */
void libvlc_playlist_next( libvlc_instance_t *, libvlc_exception_t * );

/**
 * Go to previous playlist item (starts playback if it was stopped)
 * \param p_instance the instance to use
 * \param p_exception an initialized exception
 */
void libvlc_playlist_prev( libvlc_instance_t *, libvlc_exception_t * );

/**
 * Remove all playlist items
zorglub's avatar
zorglub committed
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
 * \param p_instance the instance
 * \param p_exception an initialized exception
 */
void libvlc_playlist_clear( libvlc_instance_t *, libvlc_exception_t * );

/**
 * Go to next playlist item
 * \param p_instance the instance
 * \param p_exception an initialized exception
 */
void libvlc_playlist_next( libvlc_instance_t *, libvlc_exception_t * );

/**
 * Go to Previous playlist item
 * \param p_instance the instance
 * \param p_exception an initialized exception
 */
void libvlc_playlist_prev( libvlc_instance_t *, libvlc_exception_t * );

zorglub's avatar
zorglub committed
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
/**
 * Add an item at the end of the playlist
 * If you need more advanced options, \see libvlc_playlist_add_extended
 * \param p_instance the instance
 * \param psz_uri the URI to open, using VLC format
 * \param psz_name a name that you might want to give or NULL
 * \return the identifier of the new item
 */
int libvlc_playlist_add( libvlc_instance_t *, const char *, const char *,
                         libvlc_exception_t * );

/**
 * Add an item at the end of the playlist, with additional input options
 * \param p_instance the instance
 * \param psz_uri the URI to open, using VLC format
 * \param psz_name a name that you might want to give or NULL
 * \param i_options the number of options to add
 * \param ppsz_options strings representing the options to add
 * \return the identifier of the new item
 */
int libvlc_playlist_add_extended( libvlc_instance_t *, const char *,
                                  const char *, int, const char **,
                                  libvlc_exception_t * );
zorglub's avatar
zorglub committed
234
235


236
237
238
int libvlc_playlist_delete_item( libvlc_instance_t *, int,
                                 libvlc_exception_t * );
    
zorglub's avatar
zorglub committed
239
240
typedef struct libvlc_input_t libvlc_input_t;

zorglub's avatar
zorglub committed
241
242
243
244
245
/* Get the input that is currently being played by the playlist
 * \param p_instance the instance to use
 * \param p_exception an initialized excecption
 * \return an input object
 */
zorglub's avatar
zorglub committed
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
libvlc_input_t *libvlc_playlist_get_input( libvlc_instance_t *,
                                           libvlc_exception_t * );



/** @}*/

/*****************************************************************************
 * Input
 *****************************************************************************/
/** defgroup libvlc_input Input
 * \ingroup libvlc
 * LibVLC Input handling
 * @{
 */

/** Free an input object
 * \param p_input the input to free
 */
void libvlc_input_free( libvlc_input_t * );

/// \bug This might go away ... to be replaced by a broader system
vlc_int64_t libvlc_input_get_length( libvlc_input_t *, libvlc_exception_t *);
vlc_int64_t libvlc_input_get_time( libvlc_input_t *, libvlc_exception_t *);
float libvlc_input_get_position( libvlc_input_t *, libvlc_exception_t *);

zorglub's avatar
zorglub committed
272

zorglub's avatar
zorglub committed
273
274
275
276
277
278
279
280
281
282
283
284
285
/** @} */

/** defgroup libvlc_video Video
 * \ingroup libvlc
 * LibVLC Video handling
 * @{
 */

/**
 * Toggle fullscreen status on video output
 * \param p_input the input
 * \param p_exception an initialized exception
 */
zorglub's avatar
zorglub committed
286
287
void libvlc_toggle_fullscreen( libvlc_input_t *, libvlc_exception_t * );

zorglub's avatar
zorglub committed
288
289
290
291
292
293
294
/**
 * Enable or disable fullscreen on a video output
 * \param p_input the input
 * \param b_fullscreen boolean for fullscreen status
 * \param p_exception an initialized exception
 */
void libvlc_set_fullscreen( libvlc_input_t *, int, libvlc_exception_t * );
zorglub's avatar
zorglub committed
295

zorglub's avatar
zorglub committed
296
297
298
299
300
301
302
303
/**
 * Get current fullscreen status
 * \param p_input the input
 * \param p_exception an initialized exception
 * \return the fullscreen status (boolean)
 */
int libvlc_get_fullscreen( libvlc_input_t *, libvlc_exception_t * );

zorglub's avatar
zorglub committed
304
305
306
/** @} */

/**
zorglub's avatar
zorglub committed
307
308
309
310
311
312
 * defgroup libvlc_vlm VLM
 * \ingroup libvlc
 * LibVLC VLM handling
 * @{
 */

313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
/** defgroup libvlc_audio Audio
 * \ingroup libvlc
 * LibVLC Audio handling
 * @{
 */

/**
 * Get current mute status
 * \param p_instance libvlc instance
 * \param p_exception an initialized exception
 * \return the mute status (boolean)
 */
vlc_bool_t libvlc_audio_get_mute( libvlc_instance_t *, libvlc_exception_t * );

/**
 * Set mute status
 * \param p_instance libvlc instance
 * \param status If status is VLC_TRUE then mute, otherwise unmute
 * \param p_exception an initialized exception
 * \return void
 */
void libvlc_audio_set_mute( libvlc_instance_t *, vlc_bool_t , libvlc_exception_t * );


/**
 * Get current audio level
 * \param p_instance libvlc instance
 * \param p_exception an initialized exception
 * \return the audio level (int)
 */
zorglub's avatar
zorglub committed
343
int libvlc_audio_get_volume( libvlc_instance_t *, libvlc_exception_t * );
344
345
346
347
348
349
350
351
352


/**
 * Set current audio level
 * \param p_instance libvlc instance
 * \param i_volume the volume (int)
 * \param p_exception an initialized exception
 * \return void
 */
zorglub's avatar
zorglub committed
353
354
void libvlc_audio_set_volume( libvlc_instance_t *, int , libvlc_exception_t *);

355
356
/** @} */

zorglub's avatar
zorglub committed
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389

/**
 * Add a broadcast, with one input
 * \param p_instance the instance
 * \param psz_name the name of the new broadcast
 * \param psz_input the input MRL
 * \param psz_output the output MRL (the parameter to the "sout" variable)
 * \param i_options number of additional options
 * \param ppsz_options additional options
 * \param b_enabled boolean for enabling the new broadcast
 * \param b_loop Should this broadcast be played in loop ?
 * \param p_exception an initialized exception
 */
void libvlc_vlm_add_broadcast( libvlc_instance_t *, char *, char *, char* ,
                               int, char **, int, int, libvlc_exception_t * );

/**
 * Delete a media (vod or broadcast)
 * \param p_instance the instance
 * \param psz_name the media to delete
 * \param p_exception an initialized exception
 */
void libvlc_vlm_del_media( libvlc_instance_t *, char *, libvlc_exception_t * );

/**
 * Enable or disable a media (vod or broadcast)
 * \param p_instance the instance
 * \param psz_name the media to work on
 * \param b_enabled the new status
 * \param p_exception an initialized exception
 */
void libvlc_vlm_set_enabled( libvlc_instance_t *, char *, int,
                             libvlc_exception_t *);
zorglub's avatar
zorglub committed
390

zorglub's avatar
zorglub committed
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
/**
 * Set the output for a media
 * \param p_instance the instance
 * \param psz_name the media to work on
 * \param psz_output the output MRL (the parameter to the "sout" variable)
 * \param p_exception an initialized exception
 */
void libvlc_vlm_set_output( libvlc_instance_t *, char *, char*,
                            libvlc_exception_t *);

/**
 * Set a media's input MRL. This will delete all existing inputs and
 * add the specified one.
 * \param p_instance the instance
 * \param psz_name the media to work on
 * \param psz_input the input MRL
 * \param p_exception an initialized exception
 */
void libvlc_vlm_set_input( libvlc_instance_t *, char *, char*,
                           libvlc_exception_t *);



/**
 * Set output for a media
 * \param p_instance the instance
 * \param psz_name the media to work on
 * \param b_loop the new status
 * \param p_exception an initialized exception
 */
void libvlc_vlm_set_loop( libvlc_instance_t *, char *, int,
                          libvlc_exception_t *);




zorglub's avatar
zorglub committed
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
/**
 * Edit the parameters of a media. This will delete all existing inputs and
 * add the specified one.
 * \param p_instance the instance
 * \param psz_name the name of the new broadcast
 * \param psz_input the input MRL
 * \param psz_output the output MRL (the parameter to the "sout" variable)
 * \param i_options number of additional options
 * \param ppsz_options additional options
 * \param b_enabled boolean for enabling the new broadcast
 * \param b_loop Should this broadcast be played in loop ?
 * \param p_exception an initialized exception
 */
void libvlc_vlm_change_media( libvlc_instance_t *, char *, char *, char* ,
                              int, char **, int, int, libvlc_exception_t * );
zorglub's avatar
zorglub committed
442
443


zorglub's avatar
zorglub committed
444
/** @} */
zorglub's avatar
zorglub committed
445
446
/** @} */

zorglub's avatar
zorglub committed
447
448
449
450
# ifdef __cplusplus
}
# endif

zorglub's avatar
zorglub committed
451
#endif /* <vlc/libvlc.h> */