1#![allow(non_camel_case_types, non_upper_case_globals)]
6
7#[link(name = "vlc")]
8extern "C" {}
9
10use libc::{c_void, c_int, c_uint, c_char, c_float, uintptr_t, FILE};
11
12pub type c_bool = u8;
13
14pub type libvlc_event_type_t = c_int;
15
16pub enum libvlc_instance_t {}
18pub enum libvlc_log_iterator_t {}
19
20pub type libvlc_time_t = i64;
21
22#[repr(C)]
23#[derive(Clone, Copy)]
24pub struct libvlc_log_message_t {
25 pub i_severity: c_int,
26 pub psz_type: *const c_char,
27 pub psz_name: *const c_char,
28 pub psz_header: *const c_char,
29 pub psz_message: *const c_char,
30}
31
32pub enum libvlc_event_manager_t {}
34pub enum libvlc_log_t {}
35pub enum vlc_log_t {}
36
37pub type libvlc_callback_t = unsafe extern "C" fn(*const libvlc_event_t, *mut c_void);
38pub type va_list = *mut c_void;
39pub type libvlc_log_cb = unsafe extern "C" fn(*mut c_void, c_int, *const libvlc_log_t, *const c_char, va_list);
40
41pub use LogLevel as libvlc_log_level;
42
43#[repr(C)]
44#[derive(Clone, Copy)]
45pub struct libvlc_module_description_t
46{
47 pub psz_name: *const c_char,
48 pub psz_shortname: *const c_char,
49 pub psz_longname: *const c_char,
50 pub psz_help: *const c_char,
51 pub p_next: *mut libvlc_module_description_t,
52}
53
54extern "C" {
55 pub fn libvlc_errmsg() -> *const c_char;
56 pub fn libvlc_clearerr();
57 pub fn libvlc_new(argc: c_int, argv: *const *const c_char) -> *mut libvlc_instance_t;
58 pub fn libvlc_release(p_instance: *mut libvlc_instance_t);
59 pub fn libvlc_retain(p_instance: *mut libvlc_instance_t);
60 pub fn libvlc_add_intf(p_instance: *mut libvlc_instance_t, name: *const c_char) -> c_int;
61 pub fn libvlc_set_exit_handler(
62 p_instance: *mut libvlc_instance_t,
63 cb: extern "C" fn(*mut c_void), opaque: *mut c_void);
64 pub fn libvlc_wait(p_instance: *mut libvlc_instance_t);
65 pub fn libvlc_set_user_agent(
66 p_instance: *mut libvlc_instance_t, name: *const c_char, http: *const c_char);
67 pub fn libvlc_set_app_id(
68 p_instance: *mut libvlc_instance_t, id: *const c_char, version: *const c_char,
69 icon: *const c_char);
70 pub fn libvlc_get_version() -> *const c_char;
71 pub fn libvlc_get_compiler() -> *const c_char;
72 pub fn libvlc_get_changeset() -> *const c_char;
73 pub fn libvlc_free(ptr: *mut c_void);
74 pub fn libvlc_event_attach(
75 p_event_manager: *mut libvlc_event_manager_t, i_event_type: libvlc_event_type_t,
76 f_callback: libvlc_callback_t, user_data: *mut c_void) -> c_int;
77 pub fn libvlc_event_type_name(event_type: libvlc_event_type_t) -> *const c_char;
78 pub fn libvlc_log_get_context(
79 ctx: *const libvlc_log_t, module: *const *const c_char, file: *const *const c_char,
80 line: *mut c_uint);
81 pub fn libvlc_log_get_object(
82 ctx: *const libvlc_log_t, name: *const *const c_char,
83 header: *const *const c_char, id: *mut uintptr_t);
84 pub fn libvlc_log_unset(_: *mut libvlc_instance_t);
85 pub fn libvlc_log_set(instance: *mut libvlc_instance_t, cb: libvlc_log_cb, data: *mut c_void);
86 pub fn libvlc_log_set_file(_: *mut libvlc_instance_t, stream: *mut FILE);
87 pub fn libvlc_module_description_list_release(p_list: *mut libvlc_module_description_t);
88 pub fn libvlc_audio_filter_list_get(
89 p_instance: *mut libvlc_instance_t) -> *mut libvlc_module_description_t;
90 pub fn libvlc_video_filter_list_get(
91 p_instance: *mut libvlc_instance_t) -> *mut libvlc_module_description_t;
92 pub fn libvlc_clock() -> i64;
93}
94
95pub unsafe fn libvlc_delay(pts: i64) -> i64 {
96 pts - libvlc_clock()
97}
98
99pub enum libvlc_media_t {}
101
102pub use Meta as libvlc_meta_t;
103pub use State as libvlc_state_t;
104
105pub const libvlc_media_option_trusted: u32 = 0x2;
106pub const libvlc_media_option_unique: u32 = 0x100;
107
108pub use TrackType as libvlc_track_type_t;
109
110#[repr(C)]
111#[derive(Clone, Copy)]
112pub struct libvlc_media_stats_t {
113 pub i_read_bytes: c_int,
115 pub f_input_bitrate: c_float,
116 pub i_demux_read_bytes: c_int,
118 pub f_demux_bitrate: c_float,
119 pub i_demux_corrupted: c_int,
120 pub i_demux_discontinuity: c_int,
121 pub i_decoded_video: c_int,
123 pub i_decoded_audio: c_int,
124 pub i_displayed_pictures: c_int,
126 pub i_lost_pictures: c_int,
127 pub i_played_abuffers: c_int,
129 pub i_lost_abuffers: c_int,
130 pub i_sent_packets: c_int,
132 pub i_sent_bytes: c_int,
133 pub f_send_bitrate: c_float,
134}
135
136#[repr(C)]
137#[derive(Clone, Copy)]
138pub struct libvlc_media_track_info_t {
139 pub i_codec: u32,
141 pub i_id: c_int,
142 pub i_type: libvlc_track_type_t,
143 pub i_profile: c_int,
145 pub i_level: c_int,
146
147 pub u: libvlc_media_track_info_t_types::u,
148}
149
150pub mod libvlc_media_track_info_t_types {
151 use libc::c_uint;
152 #[repr(C)]
153 #[derive(Clone, Copy)]
154 pub union u {
155 pub audio: audio,
156 pub video: video,
157 }
158
159 #[repr(C)]
160 #[derive(Clone, Copy)]
161 pub struct audio {
162 pub i_channels: c_uint,
163 pub i_rate: c_uint,
164 }
165
166 #[repr(C)]
167 #[derive(Clone, Copy)]
168 pub struct video {
169 pub i_height: c_uint,
170 pub i_width: c_uint,
171 }
172}
173
174#[repr(C)]
175#[derive(Clone, Copy)]
176pub struct libvlc_audio_track_t
177{
178 pub i_channels: c_uint,
179 pub i_rate: c_uint,
180}
181
182#[derive(Clone, Copy)]
183#[repr(C)]
184pub struct libvlc_video_track_t
185{
186 pub i_height: c_uint,
187 pub i_width: c_uint,
188 pub i_sar_num: c_uint,
189 pub i_sar_den: c_uint,
190 pub i_frame_rate_num: c_uint,
191 pub i_frame_rate_den: c_uint,
192}
193
194#[repr(C)]
195#[derive(Clone, Copy)]
196pub struct libvlc_subtitle_track_t {
197 pub psz_encoding: *const c_char,
198}
199
200#[repr(C)]
201#[derive(Clone, Copy)]
202pub struct libvlc_media_track_t {
203 pub i_codec: u32,
204 pub i_original_fourcc: u32,
205 pub i_id: c_int,
206 pub i_type: libvlc_track_type_t,
207 pub i_profile: c_int,
208 pub i_level: c_int,
209 pub u: libvlc_media_track_t_types::u,
210 pub i_bitrate: c_uint,
211 pub psz_language: *mut c_char,
212 pub psz_description: *mut c_char,
213}
214
215pub mod libvlc_media_track_t_types {
216 use super::*;
217 #[repr(C)]
218 #[derive(Clone, Copy)]
219 pub union u {
220 pub audio: *mut libvlc_audio_track_t,
221 pub video: *mut libvlc_video_track_t,
222 pub subtitle: *mut libvlc_subtitle_track_t,
223 }
224}
225
226impl libvlc_media_track_t {
227 pub unsafe fn audio(&self) -> *mut libvlc_audio_track_t {
228 self.u.audio
229 }
230 pub unsafe fn video(&self) -> *mut libvlc_video_track_t {
231 self.u.video
232 }
233 pub unsafe fn subtitle(&self) -> *mut libvlc_subtitle_track_t {
234 self.u.subtitle
235 }
236}
237
238extern "C" {
239 pub fn libvlc_media_new_location(p_instance: *mut libvlc_instance_t, psz_mrl: *const c_char)
240 -> *mut libvlc_media_t;
241 pub fn libvlc_media_new_path(p_instance: *mut libvlc_instance_t, path: *const c_char)
242 -> *mut libvlc_media_t;
243 pub fn libvlc_media_new_fd(p_instance: *mut libvlc_instance_t, fd: c_int)
244 -> *mut libvlc_media_t;
245 pub fn libvlc_media_as_node(p_instance: *mut libvlc_instance_t, psz_name: *const c_char)
246 -> *mut libvlc_media_t;
247 pub fn libvlc_media_add_option(p_md: *mut libvlc_media_t, psz_options: *const c_char);
248 pub fn libvlc_media_add_option_flag(
249 p_md: *mut libvlc_media_t, psz_options: *const c_char, i_flags: c_uint);
250 pub fn libvlc_media_retain(p_md: *mut libvlc_media_t);
251 pub fn libvlc_media_release(p_md: *mut libvlc_media_t);
252 pub fn libvlc_media_get_mrl(p_md: *mut libvlc_media_t) -> *mut c_char;
253 pub fn libvlc_media_duplicate(p_md: *mut libvlc_media_t) -> *mut libvlc_media_t;
254 pub fn libvlc_media_get_meta(p_md: *mut libvlc_media_t, e_meta: libvlc_meta_t) -> *mut c_char;
255 pub fn libvlc_media_set_meta(p_md: *mut libvlc_media_t, e_meta: libvlc_meta_t,
256 psz_value: *const c_char);
257 pub fn libvlc_media_save_meta(p_md: *mut libvlc_media_t) -> c_int;
258 pub fn libvlc_media_get_state(p_md: *mut libvlc_media_t) -> libvlc_state_t;
259 pub fn libvlc_media_get_stats(p_md: *mut libvlc_media_t, p_stats: *mut libvlc_media_stats_t)
260 -> c_int;
261 pub fn libvlc_media_subitems(p_md: *mut libvlc_media_t)
262 -> *mut libvlc_media_list_t;
263 pub fn libvlc_media_event_manager(p_md: *mut libvlc_media_t)
264 -> *mut libvlc_event_manager_t;
265 pub fn libvlc_media_get_duration(p_md: *mut libvlc_media_t)
266 -> libvlc_time_t;
267 pub fn libvlc_media_parse(p_md: *mut libvlc_media_t);
268 pub fn libvlc_media_parse_async(p_md: *mut libvlc_media_t);
269 pub fn libvlc_media_is_parsed(p_md: *mut libvlc_media_t) -> c_int;
270 pub fn libvlc_media_set_user_data(p_md: *mut libvlc_media_t,
271 p_new_user_data: *mut c_void);
272 pub fn libvlc_media_get_user_data(p_md: *mut libvlc_media_t) -> *mut c_void;
273 pub fn libvlc_media_tracks_get(p_md: *mut libvlc_media_t,
274 tracks: *mut *mut *mut libvlc_media_track_t) -> c_uint;
275 pub fn libvlc_media_tracks_release(p_tracks: *mut *mut libvlc_media_track_t, i_count: c_uint);
276}
277
278pub enum libvlc_media_player_t {}
281pub enum libvlc_equalizer_t {}
282
283#[repr(C)]
284#[derive(Clone, Copy, Debug)]
285pub struct libvlc_track_description_t {
286 pub i_id: c_int,
287 pub psz_name: *mut c_char,
288 pub p_next: *mut libvlc_track_description_t,
289}
290
291#[repr(C)]
292#[derive(Clone, Copy)]
293pub struct libvlc_audio_output_t {
294 pub psz_name: *mut c_char,
295 pub psz_description: *mut c_char,
296 pub p_next: *mut libvlc_audio_output_t,
297}
298
299#[repr(C)]
300#[derive(Clone, Copy)]
301pub struct libvlc_audio_output_device_t {
302 pub p_next: *mut libvlc_audio_output_device_t,
303 pub psz_device: *mut c_char,
304 pub psz_description: *mut c_char,
305}
306
307#[repr(C)]
308#[derive(Clone, Copy, Debug)]
309pub struct libvlc_rectangle_t {
310 pub top: c_int, pub left: c_int, pub bottom: c_int, pub right: c_int,
311}
312
313#[repr(C)]
314#[derive(Clone, Copy, Debug)]
315pub enum libvlc_video_marquee_option_t {
316 libvlc_marquee_Enable = 0,
317 libvlc_marquee_Text,
318 libvlc_marquee_Color,
319 libvlc_marquee_Opacity,
320 libvlc_marquee_Position,
321 libvlc_marquee_Refresh,
322 libvlc_marquee_Size,
323 libvlc_marquee_Timeout,
324 libvlc_marquee_X,
325 libvlc_marquee_Y,
326}
327
328#[repr(C)]
329#[derive(Clone, Copy, Debug)]
330pub enum libvlc_navigate_mode_t {
331 libvlc_navigate_activate = 0,
332 libvlc_navigate_up,
333 libvlc_navigate_down,
334 libvlc_navigate_left,
335 libvlc_navigate_right,
336}
337
338pub use Position as libvlc_position_t;
339pub use VideoAdjustOption as libvlc_video_adjust_option;
340
341#[repr(C)]
342#[derive(Clone, Copy, Debug)]
343pub enum libvlc_video_logo_option_t {
344 libvlc_logo_enable,
345 libvlc_logo_file,
346 libvlc_logo_x,
347 libvlc_logo_y,
348 libvlc_logo_delay,
349 libvlc_logo_repeat,
350 libvlc_logo_opacity,
351 libvlc_logo_position
352}
353
354#[repr(C)]
355#[derive(Clone, Copy, Debug)]
356pub enum libvlc_audio_output_device_types_t {
357 libvlc_AudioOutputDevice_Error = -1,
358 libvlc_AudioOutputDevice_Mono = 1,
359 libvlc_AudioOutputDevice_Stereo = 2,
360 libvlc_AudioOutputDevice_2F2R = 4,
361 libvlc_AudioOutputDevice_3F2R = 5,
362 libvlc_AudioOutputDevice_5_1 = 6,
363 libvlc_AudioOutputDevice_6_1 = 7,
364 libvlc_AudioOutputDevice_7_1 = 8,
365 libvlc_AudioOutputDevice_SPDIF = 10
366}
367
368#[repr(C)]
369#[derive(Clone, Copy, Debug)]
370pub enum libvlc_audio_output_channel_t {
371 libvlc_AudioChannel_Error = -1,
372 libvlc_AudioChannel_Stereo = 1,
373 libvlc_AudioChannel_RStereo = 2,
374 libvlc_AudioChannel_Left = 3,
375 libvlc_AudioChannel_Right = 4,
376 libvlc_AudioChannel_Dolbys = 5
377}
378
379pub type libvlc_video_lock_cb = Option<unsafe extern "C" fn(*mut c_void, *mut c_void) -> *mut c_void>;
380pub type libvlc_video_unlock_cb = Option<unsafe extern "C" fn(
381 *mut c_void, *mut c_void, *const *mut c_void)>;
382pub type libvlc_video_display_cb = Option<unsafe extern "C" fn(*mut c_void, *mut c_void)>;
383pub type libvlc_video_format_cb = Option<unsafe extern "C" fn(
384 *mut *mut c_void, *mut c_char, *mut c_uint, *mut c_uint, *mut c_uint, *mut c_uint)>;
385pub type libvlc_video_cleanup_cb = Option<unsafe extern "C" fn(*mut c_void)>;
386pub type libvlc_audio_play_cb = Option<unsafe extern "C" fn(*mut c_void, *const c_void, c_uint, i64)>;
387pub type libvlc_audio_pause_cb = Option<unsafe extern "C" fn(*mut c_void, i64)>;
388pub type libvlc_audio_resume_cb = Option<unsafe extern "C" fn(*mut c_void, i64)>;
389pub type libvlc_audio_flush_cb = Option<unsafe extern "C" fn(*mut c_void, i64)>;
390pub type libvlc_audio_drain_cb = Option<unsafe extern "C" fn(*mut c_void)>;
391pub type libvlc_audio_set_volume_cb = Option<unsafe extern "C" fn(*mut c_void, c_float, c_bool)>;
392pub type libvlc_audio_setup_cb = Option<unsafe extern "C" fn(
393 *mut *mut c_void, *mut c_char, *mut c_uint, *mut c_uint)>;
394pub type libvlc_audio_cleanup_cb = Option<unsafe extern "C" fn(*mut c_void)>;
395
396extern "C" {
397 pub fn libvlc_media_player_new(p_libvlc_instance: *mut libvlc_instance_t)
398 -> *mut libvlc_media_player_t;
399 pub fn libvlc_media_player_new_from_media(p_md: *mut libvlc_media_t)
400 -> *mut libvlc_media_player_t;
401 pub fn libvlc_media_player_release(p_mi: *mut libvlc_media_player_t);
402 pub fn libvlc_media_player_retain(p_mi: *mut libvlc_media_player_t);
403 pub fn libvlc_media_player_set_media(p_mi: *mut libvlc_media_player_t,
404 p_md: *mut libvlc_media_t);
405 pub fn libvlc_media_player_get_media(p_mi: *mut libvlc_media_player_t) -> *mut libvlc_media_t;
406 pub fn libvlc_media_player_event_manager(p_mi: *mut libvlc_media_player_t)
407 -> *mut libvlc_event_manager_t;
408 pub fn libvlc_media_player_is_playing(p_mi: *mut libvlc_media_player_t) -> c_int;
409 pub fn libvlc_media_player_play(p_mi: *mut libvlc_media_player_t) -> c_int;
410 pub fn libvlc_media_player_set_pause(mp: *mut libvlc_media_player_t, do_pause: c_int);
411 pub fn libvlc_media_player_pause(p_mi: *mut libvlc_media_player_t);
412 pub fn libvlc_media_player_stop(p_mi: *mut libvlc_media_player_t);
413 pub fn libvlc_video_set_callbacks(
414 mp: *mut libvlc_media_player_t, lock: libvlc_video_lock_cb,
415 unlock: libvlc_video_unlock_cb, display: libvlc_video_display_cb,
416 opaque: *mut c_void);
417 pub fn libvlc_video_set_format(
418 mp: *mut libvlc_media_player_t, chroma: *const c_char, width: c_uint, height: c_uint,
419 pitch: c_uint);
420 pub fn libvlc_video_set_format_callbacks(
421 mp: *mut libvlc_media_player_t, setup: libvlc_video_format_cb,
422 cleanup: libvlc_video_cleanup_cb);
423 pub fn libvlc_media_player_set_nsobject(
424 p_mi: *mut libvlc_media_player_t, drawable: *mut c_void);
425 pub fn libvlc_media_player_get_nsobject(p_mi: *mut libvlc_media_player_t) -> *mut c_void;
426 pub fn libvlc_media_player_set_xwindow(
427 p_mi: *mut libvlc_media_player_t, drawable: u32);
428 pub fn libvlc_media_player_get_xwindow(p_mi: *mut libvlc_media_player_t) -> u32;
429 pub fn libvlc_media_player_set_hwnd(
430 p_mi: *mut libvlc_media_player_t, drawable: *mut c_void);
431 pub fn libvlc_media_player_get_hwnd(p_mi: *mut libvlc_media_player_t) -> *mut c_void;
432 pub fn libvlc_audio_set_callbacks(
433 mp: *mut libvlc_media_player_t, play: libvlc_audio_play_cb, pause: libvlc_audio_pause_cb,
434 resume: libvlc_audio_resume_cb, flush: libvlc_audio_flush_cb,
435 drain: libvlc_audio_drain_cb, opaque: *mut c_void);
436 pub fn libvlc_audio_set_volume_callback(
437 mp: *mut libvlc_media_player_t, set_volume: libvlc_audio_set_volume_cb);
438 pub fn libvlc_audio_set_format_callbacks(
439 mp: *mut libvlc_media_player_t, setup: libvlc_audio_setup_cb,
440 cleanup: libvlc_audio_cleanup_cb);
441 pub fn libvlc_audio_set_format(
442 mp: *mut libvlc_media_player_t, format: *const c_char, rate: c_uint, channels: c_uint);
443 pub fn libvlc_media_player_get_length(p_mi: *mut libvlc_media_player_t) -> libvlc_time_t;
444 pub fn libvlc_media_player_get_time(p_mi: *mut libvlc_media_player_t) -> libvlc_time_t;
445 pub fn libvlc_media_player_set_time(
446 p_mi: *mut libvlc_media_player_t, i_time: libvlc_time_t);
447 pub fn libvlc_media_player_get_position(p_mi: *mut libvlc_media_player_t) -> c_float;
448 pub fn libvlc_media_player_set_position(p_mi: *mut libvlc_media_player_t, f_pos: c_float);
449 pub fn libvlc_media_player_set_chapter(p_mi: *mut libvlc_media_player_t, i_chapter: c_int);
450 pub fn libvlc_media_player_get_chapter(p_mi: *mut libvlc_media_player_t) -> c_int;
451 pub fn libvlc_media_player_get_chapter_count(p_mi: *mut libvlc_media_player_t) -> c_int;
452 pub fn libvlc_media_player_will_play(p_mi: *mut libvlc_media_player_t) -> c_int;
453 pub fn libvlc_media_player_set_title(p_mi: *mut libvlc_media_player_t, i_title: c_int);
454 pub fn libvlc_media_player_get_chapter_count_for_title(
455 p_mi: *mut libvlc_media_player_t, i_title: c_int) -> c_int;
456 pub fn libvlc_media_player_get_title(p_mi: *mut libvlc_media_player_t) -> c_int;
457 pub fn libvlc_media_player_get_title_count(p_mi: *mut libvlc_media_player_t) -> c_int;
458 pub fn libvlc_media_player_previous_chapter(p_mi: *mut libvlc_media_player_t);
459 pub fn libvlc_media_player_next_chapter(p_mi: *mut libvlc_media_player_t);
460 pub fn libvlc_media_player_get_rate(p_mi: *mut libvlc_media_player_t) -> c_float;
461 pub fn libvlc_media_player_set_rate(p_mi: *mut libvlc_media_player_t, rate: c_float) -> c_int;
462 pub fn libvlc_media_player_get_state(p_mi: *mut libvlc_media_player_t) -> libvlc_state_t;
463 pub fn libvlc_media_player_get_fps(p_mi: *mut libvlc_media_player_t) -> c_float;
464 pub fn libvlc_media_player_has_vout(p_mi: *mut libvlc_media_player_t) -> c_uint;
465 pub fn libvlc_media_player_is_seekable(p_mi: *mut libvlc_media_player_t) -> c_int;
466 pub fn libvlc_media_player_can_pause(p_mi: *mut libvlc_media_player_t) -> c_int;
467 pub fn libvlc_media_player_program_scrambled(p_mi: *mut libvlc_media_player_t) -> c_int;
468 pub fn libvlc_media_player_next_frame(p_mi: *mut libvlc_media_player_t);
469 pub fn libvlc_media_player_navigate(p_mi: *mut libvlc_media_player_t, navigate: c_uint);
470 pub fn libvlc_media_player_set_video_title_display(
471 p_mi: *mut libvlc_media_player_t, position: libvlc_position_t, timeout: c_uint);
472 pub fn libvlc_track_description_list_release(p_track_description: *mut libvlc_track_description_t);
473 pub fn libvlc_toggle_fullscreen(p_mi: *mut libvlc_media_player_t);
474 pub fn libvlc_set_fullscreen(p_mi: *mut libvlc_media_player_t, b_fullscreen: c_int);
475 pub fn libvlc_get_fullscreen(p_mi: *mut libvlc_media_player_t) -> c_int;
476 pub fn libvlc_video_set_key_input(p_mi: *mut libvlc_media_player_t, on: c_uint);
477 pub fn libvlc_video_set_mouse_input(p_mi: *mut libvlc_media_player_t, on: c_uint);
478 pub fn libvlc_video_get_size(
479 p_mi: *mut libvlc_media_player_t, num: c_uint, px: *mut c_uint, py: *mut c_uint) -> c_int;
480 pub fn libvlc_video_get_cursor(
481 p_mi: *mut libvlc_media_player_t, num: c_uint, px: *mut c_int, py: *mut c_int) -> c_int;
482 pub fn libvlc_video_get_scale(p_mi: *mut libvlc_media_player_t) -> c_float;
483 pub fn libvlc_video_set_scale(p_mi: *mut libvlc_media_player_t, f_factor: c_float);
484 pub fn libvlc_video_get_aspect_ratio(p_mi: *mut libvlc_media_player_t) -> *mut c_char;
485 pub fn libvlc_video_set_aspect_ratio(p_mi: *mut libvlc_media_player_t, psz_aspect: *const c_char);
486 pub fn libvlc_video_get_spu(p_mi: *mut libvlc_media_player_t) -> c_int;
487 pub fn libvlc_video_get_spu_count(p_mi: *mut libvlc_media_player_t) -> c_int;
488 pub fn libvlc_video_get_spu_description(p_mi: *mut libvlc_media_player_t)
489 -> *mut libvlc_track_description_t;
490 pub fn libvlc_video_set_spu(p_mi: *mut libvlc_media_player_t, i_spu: c_int) -> c_int;
491 pub fn libvlc_video_set_subtitle_file(
492 p_mi: *mut libvlc_media_player_t, psz_subtitle: *const c_char) -> c_int;
493 pub fn libvlc_video_get_spu_delay(p_mi: *mut libvlc_media_player_t) -> i64;
494 pub fn libvlc_video_set_spu_delay(
495 p_mi: *mut libvlc_media_player_t, i_delay: i64) -> c_int;
496 pub fn libvlc_video_get_title_description(
497 p_mi: *mut libvlc_media_player_t) -> *mut libvlc_track_description_t;
498 pub fn libvlc_video_get_chapter_description(
499 p_mi: *mut libvlc_media_player_t, i_title: c_int) -> *mut libvlc_track_description_t;
500 pub fn libvlc_video_get_crop_geometry(p_mi: *mut libvlc_media_player_t) -> *mut c_char;
501 pub fn libvlc_video_set_crop_geometry(
502 p_mi: *mut libvlc_media_player_t, psz_geometry: *const c_char);
503 pub fn libvlc_video_get_teletext(p_mi: *mut libvlc_media_player_t) -> c_int;
504 pub fn libvlc_video_set_teletext(p_mi: *mut libvlc_media_player_t, i_page: c_int);
505 pub fn libvlc_toggle_teletext(p_mi: *mut libvlc_media_player_t);
506 pub fn libvlc_video_get_track_count(p_mi: *mut libvlc_media_player_t) -> c_int;
507 pub fn libvlc_video_get_track_description(
508 p_mi: *mut libvlc_media_player_t) -> *mut libvlc_track_description_t;
509 pub fn libvlc_video_get_track(p_mi: *mut libvlc_media_player_t) -> c_int;
510 pub fn libvlc_video_set_track(p_mi: *mut libvlc_media_player_t, i_track: c_int) -> c_int;
511 pub fn libvlc_video_take_snapshot(
512 p_mi: *mut libvlc_media_player_t, num: c_uint, psz_filepath: *const c_char,
513 i_width: c_uint, i_height: c_uint) -> c_int;
514 pub fn libvlc_video_set_deinterlace(p_mi: *mut libvlc_media_player_t, psz_mode: *const c_char);
515 pub fn libvlc_video_get_marquee_int(p_mi: *mut libvlc_media_player_t, option: c_uint) -> c_int;
516 pub fn libvlc_video_get_marquee_string(
517 p_mi: *mut libvlc_media_player_t, option: c_uint) -> *mut c_char;
518 pub fn libvlc_video_set_marquee_int(
519 p_mi: *mut libvlc_media_player_t, option: c_uint, i_val: c_int);
520 pub fn libvlc_video_set_marquee_string(
521 p_mi: *mut libvlc_media_player_t, option: c_uint, psz_text: *const c_char);
522 pub fn libvlc_video_get_logo_int(p_mi: *mut libvlc_media_player_t, option: c_uint) -> c_int;
523 pub fn libvlc_video_set_logo_int(p_mi: *mut libvlc_media_player_t, option: c_uint, value: c_int);
524 pub fn libvlc_video_set_logo_string(
525 p_mi: *mut libvlc_media_player_t, option: c_uint, psz_value: *const c_char);
526 pub fn libvlc_video_get_adjust_int(
527 p_mi: *mut libvlc_media_player_t, option: c_uint) -> c_int;
528 pub fn libvlc_video_set_adjust_int(
529 p_mi: *mut libvlc_media_player_t, option: c_uint, value: c_int);
530 pub fn libvlc_video_get_adjust_float(
531 p_mi: *mut libvlc_media_player_t, option: c_uint) -> c_float;
532 pub fn libvlc_video_set_adjust_float(
533 p_mi: *mut libvlc_media_player_t, option: c_uint, value: c_float);
534 pub fn libvlc_audio_output_list_get(p_instance: *mut libvlc_instance_t)
535 -> *mut libvlc_audio_output_t;
536 pub fn libvlc_audio_output_list_release(p_list: *mut libvlc_audio_output_t);
537 pub fn libvlc_audio_output_set(p_mi: *mut libvlc_media_player_t, psz_name: *const c_char) -> c_int;
538 pub fn libvlc_audio_output_device_enum(
539 mp: *mut libvlc_media_player_t) -> *mut libvlc_audio_output_device_t;
540 pub fn libvlc_audio_output_device_list_get(
541 p_instance: *mut libvlc_instance_t, aout: *const c_char) -> *mut libvlc_audio_output_device_t;
542 pub fn libvlc_audio_output_device_list_release(p_list: *mut libvlc_audio_output_device_t);
543 pub fn libvlc_audio_output_device_set(
544 mp: *mut libvlc_media_player_t, module: *const c_char, device_id: *const c_char);
545 pub fn libvlc_audio_toggle_mute(p_mi: *mut libvlc_media_player_t);
546 pub fn libvlc_audio_get_mute(p_mi: *mut libvlc_media_player_t) -> c_int;
547 pub fn libvlc_audio_set_mute(p_mi: *mut libvlc_media_player_t, status: c_int);
548 pub fn libvlc_audio_get_volume(p_mi: *mut libvlc_media_player_t) -> c_int;
549 pub fn libvlc_audio_set_volume(p_mi: *mut libvlc_media_player_t, i_volume: c_int) -> c_int;
550 pub fn libvlc_audio_get_track_count(p_mi: *mut libvlc_media_player_t) -> c_int;
551 pub fn libvlc_audio_get_track_description(
552 p_mi: *mut libvlc_media_player_t) -> *mut libvlc_track_description_t;
553 pub fn libvlc_audio_get_track(p_mi: *mut libvlc_media_player_t) -> c_int;
554 pub fn libvlc_audio_set_track(p_mi: *mut libvlc_media_player_t, i_track: c_int) -> c_int;
555 pub fn libvlc_audio_get_channel(p_mi: *mut libvlc_media_player_t) -> c_int;
556 pub fn libvlc_audio_set_channel(p_mi: *mut libvlc_media_player_t, channel: c_int) -> c_int;
557 pub fn libvlc_audio_get_delay(p_mi: *mut libvlc_media_player_t) -> i64;
558 pub fn libvlc_audio_set_delay(p_mi: *mut libvlc_media_player_t, i_delay: i64) -> c_int;
559 pub fn libvlc_audio_equalizer_get_preset_count() -> c_uint;
560 pub fn libvlc_audio_equalizer_get_preset_name(u_index: c_uint) -> *const c_char;
561 pub fn libvlc_audio_equalizer_get_band_count() -> c_uint;
562 pub fn libvlc_audio_equalizer_get_band_frequency(u_index: c_uint) -> c_float;
563 pub fn libvlc_audio_equalizer_new() -> *mut libvlc_equalizer_t;
564 pub fn libvlc_audio_equalizer_new_from_preset(u_index: c_uint) -> *mut libvlc_equalizer_t;
565 pub fn libvlc_audio_equalizer_release(p_equalizer: *mut libvlc_equalizer_t);
566 pub fn libvlc_audio_equalizer_set_preamp(
567 p_equalizer: *mut libvlc_equalizer_t, f_preamp: c_float) -> c_int;
568 pub fn libvlc_audio_equalizer_get_preamp(p_equalizer: *mut libvlc_equalizer_t) -> c_float;
569 pub fn libvlc_audio_equalizer_set_amp_at_index(
570 p_equalizer: *mut libvlc_equalizer_t, f_amp: c_float, u_band: c_uint) -> c_int;
571 pub fn libvlc_audio_equalizer_get_amp_at_index(
572 p_equalizer: *mut libvlc_equalizer_t, u_band: c_uint) -> c_float;
573 pub fn libvlc_media_player_set_equalizer(
574 p_mi: *mut libvlc_media_player_t, p_equalizer: *mut libvlc_equalizer_t) -> c_int;
575}
576
577pub use EventType as libvlc_event_e;
579
580#[repr(C)]
581#[derive(Clone, Copy)]
582pub struct libvlc_event_t {
583 pub _type: c_int,
584 pub p_obj: *mut c_void,
585 pub u: libvlc_event_t_types::u,
586}
587
588pub mod libvlc_event_t_types {
589 use super::*;
590 use libc::{c_int, c_char, c_float};
591 #[repr(C)]
592 #[derive(Clone, Copy)]
593 pub union u {
594 pub media_meta_changed: media_meta_changed,
595 pub media_subitem_added: media_subitem_added,
596 pub media_duration_changed: media_duration_changed,
597 pub media_parsed_changed: media_parsed_changed,
598 pub media_freed: media_freed,
599 pub media_state_changed: media_state_changed,
600 pub media_subitemtree_added: media_subitemtree_added,
601 pub media_player_buffering: media_player_buffering,
602 pub media_player_position_changed: media_player_position_changed,
603 pub media_player_time_changed: media_player_time_changed,
604 pub media_player_title_changed: media_player_title_changed,
605 pub media_player_seekable_changed: media_player_seekable_changed,
606 pub media_player_pausable_changed: media_player_pausable_changed,
607 pub media_player_scrambled_changed: media_player_scrambled_changed,
608 pub media_player_vout: media_player_vout,
609 pub media_list_item_added: media_list_item_added,
610 pub media_list_will_add_item: media_list_will_add_item,
611 pub media_list_item_deleted: media_list_item_deleted,
612 pub media_list_will_delete_item: media_list_will_delete_item,
613 pub media_list_player_next_item_set: media_list_player_next_item_set,
614 pub media_player_snapshot_taken: media_player_snapshot_taken,
615 pub media_player_length_changed: media_player_length_changed,
616 pub vlm_media_event: vlm_media_event,
617 pub media_player_media_changed: media_player_media_changed,
618 }
619 #[repr(C)]
620 #[derive(Clone, Copy)]
621 pub struct media_meta_changed {
622 pub meta_type: libvlc_meta_t,
623 }
624 #[repr(C)]
625 #[derive(Clone, Copy)]
626 pub struct media_subitem_added {
627 pub new_child: *mut libvlc_media_t,
628 }
629 #[repr(C)]
630 #[derive(Clone, Copy)]
631 pub struct media_duration_changed {
632 pub new_duration: i64,
633 }
634 #[repr(C)]
635 #[derive(Clone, Copy)]
636 pub struct media_parsed_changed {
637 pub new_status: c_int,
638 }
639 #[repr(C)]
640 #[derive(Clone, Copy)]
641 pub struct media_freed {
642 pub md: *mut libvlc_media_t,
643 }
644 #[repr(C)]
645 #[derive(Clone, Copy)]
646 pub struct media_state_changed {
647 pub new_state: libvlc_state_t,
648 }
649 #[repr(C)]
650 #[derive(Clone, Copy)]
651 pub struct media_subitemtree_added {
652 pub item: *mut libvlc_media_t,
653 }
654 #[repr(C)]
655 #[derive(Clone, Copy)]
656 pub struct media_player_buffering {
657 pub new_cache: c_float,
658 }
659 #[repr(C)]
660 #[derive(Clone, Copy)]
661 pub struct media_player_position_changed {
662 pub new_position: c_float,
663 }
664 #[repr(C)]
665 #[derive(Clone, Copy)]
666 pub struct media_player_time_changed {
667 pub new_time: libvlc_time_t,
668 }
669 #[repr(C)]
670 #[derive(Clone, Copy)]
671 pub struct media_player_title_changed {
672 pub new_titie: c_int,
673 }
674 #[repr(C)]
675 #[derive(Clone, Copy)]
676 pub struct media_player_seekable_changed {
677 pub new_seekable: c_int,
678 }
679 #[repr(C)]
680 #[derive(Clone, Copy)]
681 pub struct media_player_pausable_changed {
682 pub new_pausable: c_int,
683 }
684 #[repr(C)]
685 #[derive(Clone, Copy)]
686 pub struct media_player_scrambled_changed {
687 pub new_scrambled: c_int,
688 }
689 #[repr(C)]
690 #[derive(Clone, Copy)]
691 pub struct media_player_vout {
692 pub new_count: c_int,
693 }
694 #[repr(C)]
695 #[derive(Clone, Copy)]
696 pub struct media_list_item_added {
697 pub item: *mut libvlc_media_t,
698 pub index: c_int,
699 }
700 #[repr(C)]
701 #[derive(Clone, Copy)]
702 pub struct media_list_will_add_item {
703 pub item: *mut libvlc_media_t,
704 pub index: c_int,
705 }
706 #[repr(C)]
707 #[derive(Clone, Copy)]
708 pub struct media_list_item_deleted {
709 pub item: *mut libvlc_media_t,
710 pub index: c_int,
711 }
712 #[repr(C)]
713 #[derive(Clone, Copy)]
714 pub struct media_list_will_delete_item {
715 pub item: *mut libvlc_media_t,
716 pub index: c_int,
717 }
718 #[repr(C)]
719 #[derive(Clone, Copy)]
720 pub struct media_list_player_next_item_set {
721 pub item: *mut libvlc_media_t,
722 }
723 #[repr(C)]
724 #[derive(Clone, Copy)]
725 pub struct media_player_snapshot_taken {
726 pub psz_filename: *mut c_char,
727 }
728 #[repr(C)]
729 #[derive(Clone, Copy)]
730 pub struct media_player_length_changed {
731 pub new_length: libvlc_time_t,
732 }
733 #[repr(C)]
734 #[derive(Clone, Copy)]
735 pub struct vlm_media_event {
736 pub psz_media_name: *mut c_char,
737 pub psz_instance_name: *mut c_char,
738 }
739 #[repr(C)]
740 #[derive(Clone, Copy)]
741 pub struct media_player_media_changed {
742 pub new_media: *mut libvlc_media_t,
743 }
744}
745
746pub enum libvlc_media_list_t {}
749
750extern "C" {
751 pub fn libvlc_media_list_new(p_instance: *mut libvlc_instance_t) -> *mut libvlc_media_list_t;
752 pub fn libvlc_media_list_release(p_ml: *mut libvlc_media_list_t);
753 pub fn libvlc_media_list_retain(p_ml: *mut libvlc_media_list_t);
754 pub fn libvlc_media_list_set_media(p_ml: *mut libvlc_media_list_t, p_md: *mut libvlc_media_t);
755 pub fn libvlc_media_list_media(p_ml: *mut libvlc_media_list_t) -> *mut libvlc_media_t;
756 pub fn libvlc_media_list_add_media(
757 p_ml: *mut libvlc_media_list_t, p_md: *mut libvlc_media_t) -> c_int;
758 pub fn libvlc_media_list_insert_media(
759 p_ml: *mut libvlc_media_list_t, p_md: *mut libvlc_media_t, i_pos: c_int) -> c_int;
760 pub fn libvlc_media_list_remove_index(p_ml: *mut libvlc_media_list_t, i_pos: c_int) -> c_int;
761 pub fn libvlc_media_list_count(p_ml: *mut libvlc_media_list_t) -> c_int;
762 pub fn libvlc_media_list_item_at_index(
763 p_ml: *mut libvlc_media_list_t, i_pos: c_int) -> *mut libvlc_media_t;
764 pub fn libvlc_media_list_index_of_item(
765 p_ml: *mut libvlc_media_list_t, p_md: *mut libvlc_media_t) -> c_int;
766 pub fn libvlc_media_list_is_readonly(p_ml: *mut libvlc_media_list_t) -> c_int;
767 pub fn libvlc_media_list_lock(p_ml: *mut libvlc_media_list_t);
768 pub fn libvlc_media_list_unlock(p_ml: *mut libvlc_media_list_t);
769 pub fn libvlc_media_list_event_manager(
770 p_ml: *mut libvlc_media_list_t) -> *mut libvlc_event_manager_t;
771}
772
773pub enum libvlc_media_library_t {}
776
777extern "C" {
778 pub fn libvlc_media_library_new(p_instance: *mut libvlc_instance_t) -> *mut libvlc_media_library_t;
779 pub fn libvlc_media_library_release(p_mlib: *mut libvlc_media_library_t);
780 pub fn libvlc_media_library_retain(p_mlib: *mut libvlc_media_library_t);
781 pub fn libvlc_media_library_load(p_mlib: *mut libvlc_media_library_t) -> c_int;
782 pub fn libvlc_media_library_media_list(
783 p_mlib: *mut libvlc_media_library_t) -> *mut libvlc_media_list_t;
784}
785
786pub enum libvlc_media_discoverer_t {}
789
790extern "C" {
791 pub fn libvlc_media_discoverer_new_from_name(
792 p_inst: *mut libvlc_instance_t, psz_name: *const c_char) -> *mut libvlc_media_discoverer_t;
793 pub fn libvlc_media_discoverer_release(p_mdis: *mut libvlc_media_discoverer_t);
794 pub fn libvlc_media_discoverer_localized_name(
795 p_mdis: *mut libvlc_media_discoverer_t) -> *mut c_char;
796 pub fn libvlc_media_discoverer_media_list(
797 p_mdis: *mut libvlc_media_discoverer_t) -> *mut libvlc_media_list_t;
798 pub fn libvlc_media_discoverer_event_manager(
799 p_mdis: *mut libvlc_media_discoverer_t) -> *mut libvlc_event_manager_t;
800 pub fn libvlc_media_discoverer_is_running(p_mdis: *mut libvlc_media_discoverer_t) -> c_int;
801}
802
803extern "C" {
806 pub fn libvlc_vlm_release(p_instance: *mut libvlc_instance_t);
807 pub fn libvlc_vlm_add_broadcast(
808 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, psz_input: *const c_char,
809 psz_output: *const c_char, i_options: c_int, ppsz_options: *const *const c_char,
810 b_enabled: c_int, b_loop: c_int) -> c_int;
811 pub fn libvlc_vlm_add_vod(
812 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, psz_input: *const c_char,
813 i_options: c_int, ppsz_options: *const *const c_char, b_enabled: c_int,
814 psz_mux: *const c_char) -> c_int;
815 pub fn libvlc_vlm_del_media(
816 p_instance: *mut libvlc_instance_t, psz_name: *const c_char) -> c_int;
817 pub fn libvlc_vlm_set_enabled(
818 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, b_enabled: c_int) -> c_int;
819 pub fn libvlc_vlm_set_output(
820 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, psz_output: *const c_char) -> c_int;
821 pub fn libvlc_vlm_set_input(
822 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, psz_input: *const c_char) -> c_int;
823 pub fn libvlc_vlm_add_input(
824 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, psz_input: *const c_char) -> c_int;
825 pub fn libvlc_vlm_set_loop(
826 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, b_loop: c_int) -> c_int;
827 pub fn libvlc_vlm_set_mux(
828 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, psz_mux: *const c_char) -> c_int;
829 pub fn libvlc_vlm_change_media(
830 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, psz_input: *const c_char,
831 psz_output: *const c_char, i_options: c_int, ppsz_options: *const *const c_char,
832 b_enabled: c_int, b_loop: c_int) -> c_int;
833 pub fn libvlc_vlm_play_media(
834 p_instance: *mut libvlc_instance_t, psz_name: *const c_char) -> c_int;
835 pub fn libvlc_vlm_stop_media(
836 p_instance: *mut libvlc_instance_t, psz_name: *const c_char) -> c_int;
837 pub fn libvlc_vlm_pause_media(
838 p_instance: *mut libvlc_instance_t, psz_name: *const c_char) -> c_int;
839 pub fn libvlc_vlm_seek_media(
840 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, f_percentage: c_float) -> c_int;
841 pub fn libvlc_vlm_show_media(
842 p_instance: *mut libvlc_instance_t, psz_name: *const c_char) -> *const c_char;
843 pub fn libvlc_vlm_get_media_instance_position(
844 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, i_instance: c_int) -> c_float;
845 pub fn libvlc_vlm_get_media_instance_time(
846 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, i_instance: c_int) -> c_int;
847 pub fn libvlc_vlm_get_media_instance_length(
848 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, i_instance: c_int) -> c_int;
849 pub fn libvlc_vlm_get_media_instance_rate(
850 p_instance: *mut libvlc_instance_t, psz_name: *const c_char, i_instance: c_int) -> c_int;
851 pub fn libvlc_vlm_get_event_manager(
852 p_instance: *mut libvlc_instance_t) -> *mut libvlc_event_manager_t;
853}