forked from videolan/vlc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlibvlc.h
229 lines (192 loc) · 6.37 KB
/
libvlc.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
/*****************************************************************************
* libvlc.h: Internal libvlc generic/misc declaration
*****************************************************************************
* Copyright (C) 1999, 2000, 2001, 2002 VLC authors and VideoLAN
* Copyright © 2006-2007 Rémi Denis-Courmont
* $Id$
*
* Authors: Vincent Seguin <[email protected]>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef LIBVLC_LIBVLC_H
# define LIBVLC_LIBVLC_H 1
extern const char psz_vlc_changeset[];
typedef struct variable_t variable_t;
/* Actions (hot keys) */
struct vlc_actions;
struct vlc_actions *vlc_InitActions (libvlc_int_t *);
extern void vlc_DeinitActions (libvlc_int_t *, struct vlc_actions *);
/*
* OS-specific initialization
*/
void system_Init ( void );
void system_Configure ( libvlc_int_t *, int, const char *const [] );
#if defined(_WIN32) || defined(__OS2__)
void system_End(void);
#ifndef __OS2__
size_t EnumClockSource( vlc_object_t *, const char *, char ***, char *** );
#endif
#endif
void vlc_CPU_init(void);
void vlc_CPU_dump(vlc_object_t *);
/*
* Threads subsystem
*/
/* This cannot be used as is from plugins yet: */
int vlc_clone_detach (vlc_thread_t *, void *(*)(void *), void *, int);
int vlc_set_priority( vlc_thread_t, int );
void vlc_threads_setup (libvlc_int_t *);
void vlc_trace (const char *fn, const char *file, unsigned line);
#define vlc_backtrace() vlc_trace(__func__, __FILE__, __LINE__)
#if (defined (LIBVLC_USE_PTHREAD) || defined(__ANDROID__)) && !defined (NDEBUG)
void vlc_assert_locked (vlc_mutex_t *);
#else
# define vlc_assert_locked( m ) (void)m
#endif
/*
* Logging
*/
typedef struct vlc_logger_t vlc_logger_t;
int vlc_LogPreinit(libvlc_int_t *);
int vlc_LogInit(libvlc_int_t *);
void vlc_LogDeinit(libvlc_int_t *);
/*
* LibVLC exit event handling
*/
typedef struct vlc_exit
{
vlc_mutex_t lock;
void (*handler) (void *);
void *opaque;
} vlc_exit_t;
void vlc_ExitInit( vlc_exit_t * );
void vlc_ExitDestroy( vlc_exit_t * );
/*
* LibVLC objects stuff
*/
/**
* Creates a VLC object.
*
* Note that because the object name pointer must remain valid, potentially
* even after the destruction of the object (through the message queues), this
* function CANNOT be exported to plugins as is. In this case, the old
* vlc_object_create() must be used instead.
*
* @param p_this an existing VLC object
* @param i_size byte size of the object structure
* @param psz_type object type name
* @return the created object, or NULL.
*/
extern void *
vlc_custom_create (vlc_object_t *p_this, size_t i_size, const char *psz_type);
#define vlc_custom_create(o, s, n) \
vlc_custom_create(VLC_OBJECT(o), s, n)
/**
* Assign a name to an object for vlc_object_find_name().
*/
extern int vlc_object_set_name(vlc_object_t *, const char *);
#define vlc_object_set_name(o, n) vlc_object_set_name(VLC_OBJECT(o), n)
/* Types */
typedef void (*vlc_destructor_t) (struct vlc_object_t *);
void vlc_object_set_destructor (vlc_object_t *, vlc_destructor_t);
#define vlc_object_set_destructor(a,b) \
vlc_object_set_destructor (VLC_OBJECT(a), b)
#define ZOOM_SECTION N_("Zoom")
#define ZOOM_QUARTER_KEY_TEXT N_("1:4 Quarter")
#define ZOOM_HALF_KEY_TEXT N_("1:2 Half")
#define ZOOM_ORIGINAL_KEY_TEXT N_("1:1 Original")
#define ZOOM_DOUBLE_KEY_TEXT N_("2:1 Double")
/**
* Private LibVLC instance data.
*/
typedef struct vlc_dialog_provider vlc_dialog_provider;
typedef struct vlc_keystore vlc_keystore;
typedef struct libvlc_priv_t
{
libvlc_int_t public_data;
/* Logging */
bool b_stats; ///< Whether to collect stats
/* Singleton objects */
vlc_logger_t *logger;
vlm_t *p_vlm; ///< the VLM singleton (or NULL)
vlc_dialog_provider *p_dialog_provider; ///< dialog provider
vlc_keystore *p_memory_keystore; ///< memory keystore
struct playlist_t *playlist; ///< Playlist for interfaces
struct playlist_preparser_t *parser; ///< Input item meta data handler
struct vlc_actions *actions; ///< Hotkeys handler
/* Exit callback */
vlc_exit_t exit;
} libvlc_priv_t;
static inline libvlc_priv_t *libvlc_priv (libvlc_int_t *libvlc)
{
return (libvlc_priv_t *)libvlc;
}
void intf_InsertItem(libvlc_int_t *, const char *mrl, unsigned optc,
const char * const *optv, unsigned flags);
void intf_DestroyAll( libvlc_int_t * );
#define libvlc_stats( o ) (libvlc_priv((VLC_OBJECT(o))->obj.libvlc)->b_stats)
/*
* Variables stuff
*/
void var_OptionParse (vlc_object_t *, const char *, bool trusted);
/*
* Stats stuff
*/
enum
{
STATS_COUNTER,
STATS_DERIVATIVE,
};
typedef struct counter_sample_t
{
uint64_t value;
mtime_t date;
} counter_sample_t;
typedef struct counter_t
{
int i_compute_type;
int i_samples;
counter_sample_t ** pp_samples;
mtime_t last_update;
} counter_t;
enum
{
STATS_INPUT_BITRATE,
STATS_READ_BYTES,
STATS_READ_PACKETS,
STATS_DEMUX_READ,
STATS_DEMUX_BITRATE,
STATS_DEMUX_CORRUPTED,
STATS_DEMUX_DISCONTINUITY,
STATS_PLAYED_ABUFFERS,
STATS_LOST_ABUFFERS,
STATS_DECODED_AUDIO,
STATS_DECODED_VIDEO,
STATS_DECODED_SUB,
STATS_CLIENT_CONNECTIONS,
STATS_ACTIVE_CONNECTIONS,
STATS_SOUT_SENT_PACKETS,
STATS_SOUT_SENT_BYTES,
STATS_SOUT_SEND_BITRATE,
STATS_DISPLAYED_PICTURES,
STATS_LOST_PICTURES,
};
counter_t * stats_CounterCreate (int);
void stats_Update (counter_t *, uint64_t, uint64_t *);
void stats_CounterClean (counter_t * );
void stats_ComputeInputStats(input_thread_t*, input_stats_t*);
void stats_ReinitInputStats(input_stats_t *);
#endif