VLC
2.1.0-git
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
src
libvlc.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* libvlc.h: Internal libvlc generic/misc declaration
3
*****************************************************************************
4
* Copyright (C) 1999, 2000, 2001, 2002 VLC authors and VideoLAN
5
* Copyright © 2006-2007 Rémi Denis-Courmont
6
* $Id: ebc68c98a2618c414db5dd045f74e837bc49f651 $
7
*
8
* Authors: Vincent Seguin <seguin@via.ecp.fr>
9
*
10
* This program is free software; you can redistribute it and/or modify it
11
* under the terms of the GNU Lesser General Public License as published by
12
* the Free Software Foundation; either version 2.1 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU Lesser General Public License for more details.
19
*
20
* You should have received a copy of the GNU Lesser General Public License
21
* along with this program; if not, write to the Free Software Foundation,
22
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23
*****************************************************************************/
24
25
#ifndef LIBVLC_LIBVLC_H
26
# define LIBVLC_LIBVLC_H 1
27
28
extern
const
char
psz_vlc_changeset
[];
29
30
typedef
struct
variable_t
variable_t
;
31
32
/* Actions (hot keys) */
33
struct
vlc_actions
;
34
struct
vlc_actions
*
vlc_InitActions
(
libvlc_int_t
*);
35
extern
void
vlc_DeinitActions
(
libvlc_int_t
*,
struct
vlc_actions
*);
36
37
size_t
vlc_towc
(
const
char
*str, uint32_t *restrict pwc);
38
39
/*
40
* OS-specific initialization
41
*/
42
void
system_Init
(
void
);
43
void
system_Configure
(
libvlc_int_t
*,
int
,
const
char
*
const
[] );
44
#if defined(WIN32) || defined(__OS2__)
45
void
system_End
(
void
);
46
#ifndef __OS2__
47
size_t
EnumClockSource
(
vlc_object_t
*,
const
char
*,
char
***,
char
*** );
48
#endif
49
#endif
50
void
vlc_CPU_init
(
void
);
51
void
vlc_CPU_dump
(
vlc_object_t
*);
52
53
/*
54
* Threads subsystem
55
*/
56
57
/* This cannot be used as is from plugins yet: */
58
int
vlc_clone_detach
(
vlc_thread_t
*,
void
*(*)(
void
*),
void
*,
int
);
59
60
int
vlc_object_waitpipe
(
vlc_object_t
*obj);
61
void
vlc_object_kill
(
vlc_object_t
*)
VLC_DEPRECATED
;
62
#define vlc_object_kill(o) vlc_object_kill(VLC_OBJECT(o))
63
64
int
vlc_set_priority
(
vlc_thread_t
,
int
);
65
66
void
vlc_threads_setup
(
libvlc_int_t
*);
67
68
void
vlc_trace
(
const
char
*fn,
const
char
*file,
unsigned
line);
69
#define vlc_backtrace() vlc_trace(__func__, __FILE__, __LINE__)
70
71
#if (defined (LIBVLC_USE_PTHREAD) || defined(__ANDROID__)) && !defined (NDEBUG)
72
void
vlc_assert_locked
(
vlc_mutex_t
*);
73
#else
74
# define vlc_assert_locked( m ) (void)m
75
#endif
76
77
/*
78
* LibVLC exit event handling
79
*/
80
typedef
struct
vlc_exit
81
{
82
vlc_mutex_t
lock
;
83
void (*
handler
) (
void
*);
84
void
*
opaque
;
85
}
vlc_exit_t
;
86
87
void
vlc_ExitInit
(
vlc_exit_t
* );
88
void
vlc_ExitDestroy
(
vlc_exit_t
* );
89
90
/*
91
* LibVLC objects stuff
92
*/
93
94
/**
95
* Creates a VLC object.
96
*
97
* Note that because the object name pointer must remain valid, potentially
98
* even after the destruction of the object (through the message queues), this
99
* function CANNOT be exported to plugins as is. In this case, the old
100
* vlc_object_create() must be used instead.
101
*
102
* @param p_this an existing VLC object
103
* @param i_size byte size of the object structure
104
* @param psz_type object type name
105
* @return the created object, or NULL.
106
*/
107
extern
void
*
108
vlc_custom_create
(
vlc_object_t
*p_this,
size_t
i_size,
const
char
*psz_type);
109
#define vlc_custom_create(o, s, n) \
110
vlc_custom_create(VLC_OBJECT(o), s, n)
111
112
/**
113
* Assign a name to an object for vlc_object_find_name().
114
*/
115
extern
int
vlc_object_set_name
(
vlc_object_t
*,
const
char
*);
116
#define vlc_object_set_name(o, n) vlc_object_set_name(VLC_OBJECT(o), n)
117
118
/* Types */
119
typedef
void (*
vlc_destructor_t
) (
struct
vlc_object_t
*);
120
void
vlc_object_set_destructor
(
vlc_object_t
*,
vlc_destructor_t
);
121
#define vlc_object_set_destructor(a,b) \
122
vlc_object_set_destructor (VLC_OBJECT(a), b)
123
124
/*
125
* To be cleaned-up module stuff:
126
*/
127
module_t
*
module_find_by_shortcut
(
const
char
*psz_shortcut);
128
129
#define ZOOM_SECTION N_("Zoom")
130
#define ZOOM_QUARTER_KEY_TEXT N_("1:4 Quarter")
131
#define ZOOM_HALF_KEY_TEXT N_("1:2 Half")
132
#define ZOOM_ORIGINAL_KEY_TEXT N_("1:1 Original")
133
#define ZOOM_DOUBLE_KEY_TEXT N_("2:1 Double")
134
135
typedef
struct
sap_handler_t
sap_handler_t
;
136
137
/**
138
* Private LibVLC instance data.
139
*/
140
typedef
struct
libvlc_priv_t
141
{
142
libvlc_int_t
public_data
;
143
144
/* Messages */
145
signed
char
i_verbose
;
///< info messages
146
bool
b_color
;
///< color messages?
147
bool
b_stats
;
///< Whether to collect stats
148
149
/* Singleton objects */
150
playlist_t
*
p_playlist
;
///< the playlist singleton
151
struct
media_library_t
*
p_ml
;
///< the ML singleton
152
vlc_mutex_t
ml_lock
;
///< Mutex for ML creation
153
vlm_t
*
p_vlm
;
///< the VLM singleton (or NULL)
154
vlc_object_t
*
p_dialog_provider
;
///< dialog provider
155
#ifdef ENABLE_SOUT
156
sap_handler_t
*p_sap;
///< SAP SDP advertiser
157
#endif
158
struct
vlc_actions
*
actions
;
///< Hotkeys handler
159
160
/* Interfaces */
161
struct
intf_thread_t
*
p_intf
;
///< Interfaces linked-list
162
163
/* Objects tree */
164
vlc_mutex_t
structure_lock
;
165
166
/* Exit callback */
167
vlc_exit_t
exit
;
168
}
libvlc_priv_t
;
169
170
static
inline
libvlc_priv_t
*
libvlc_priv
(
libvlc_int_t
*libvlc)
171
{
172
return
(
libvlc_priv_t
*)libvlc;
173
}
174
175
void
playlist_ServicesDiscoveryKillAll
(
playlist_t
*p_playlist );
176
void
intf_DestroyAll
(
libvlc_int_t
* );
177
178
#define libvlc_stats( o ) (libvlc_priv((VLC_OBJECT(o))->p_libvlc)->b_stats)
179
180
/*
181
* Variables stuff
182
*/
183
void
var_OptionParse
(
vlc_object_t
*,
const
char
*,
bool
trusted);
184
185
/*
186
* Stats stuff
187
*/
188
enum
189
{
190
STATS_COUNTER
,
191
STATS_DERIVATIVE
,
192
};
193
194
typedef
struct
counter_sample_t
195
{
196
uint64_t
value
;
197
mtime_t
date
;
198
}
counter_sample_t
;
199
200
typedef
struct
counter_t
201
{
202
int
i_compute_type
;
203
int
i_samples
;
204
counter_sample_t
**
pp_samples
;
205
206
mtime_t
last_update
;
207
}
counter_t
;
208
209
enum
210
{
211
STATS_INPUT_BITRATE
,
212
STATS_READ_BYTES
,
213
STATS_READ_PACKETS
,
214
STATS_DEMUX_READ
,
215
STATS_DEMUX_BITRATE
,
216
STATS_DEMUX_CORRUPTED
,
217
STATS_DEMUX_DISCONTINUITY
,
218
STATS_PLAYED_ABUFFERS
,
219
STATS_LOST_ABUFFERS
,
220
STATS_DECODED_AUDIO
,
221
STATS_DECODED_VIDEO
,
222
STATS_DECODED_SUB
,
223
STATS_CLIENT_CONNECTIONS
,
224
STATS_ACTIVE_CONNECTIONS
,
225
STATS_SOUT_SENT_PACKETS
,
226
STATS_SOUT_SENT_BYTES
,
227
STATS_SOUT_SEND_BITRATE
,
228
STATS_DISPLAYED_PICTURES
,
229
STATS_LOST_PICTURES
,
230
};
231
232
counter_t
*
stats_CounterCreate
(
int
);
233
void
stats_Update
(
counter_t
*, uint64_t, uint64_t *);
234
void
stats_CounterClean
(
counter_t
* );
235
236
void
stats_ComputeInputStats
(
input_thread_t
*,
input_stats_t
*);
237
void
stats_ReinitInputStats
(
input_stats_t
*);
238
239
#endif
Generated by
1.8.1.2