1 /*****************************************************************************
2 * LibVlc.java: VLC Java Bindings JNA Glue
3 *****************************************************************************
4 * Copyright (C) 1998-2008 the VideoLAN team
6 * Authors: Filippo Carone <filippo@carone.org>
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
24 *****************************************************************************/
26 package org.videolan.jvlc.internal;
28 import com.sun.jna.Callback;
29 import com.sun.jna.Library;
30 import com.sun.jna.Native;
31 import com.sun.jna.NativeLong;
32 import com.sun.jna.Pointer;
33 import com.sun.jna.PointerType;
34 import com.sun.jna.Structure;
35 import com.sun.jna.Union;
38 public interface LibVlc extends Library
41 LibVlc INSTANCE = (LibVlc) Native.loadLibrary("vlc-control", LibVlc.class);
43 LibVlc SYNC_INSTANCE = (LibVlc) Native.synchronizedLibrary(INSTANCE);
45 public static class libvlc_exception_t extends Structure
52 public String message;
55 public static class libvlc_event_t extends Structure
62 public event_type_specific event_type_specific;
66 public class media_meta_changed extends Structure
69 public Pointer meta_type;
72 public class media_subitem_added extends Structure
75 public LibVlcMediaDescriptor new_child;
78 public class media_duration_changed extends Structure
81 public NativeLong new_duration;
84 public class media_preparsed_changed extends Structure
87 public int new_status;
90 public class media_freed extends Structure
93 public LibVlcMediaDescriptor md;
96 public class media_state_changed extends Structure
99 // @todo: check this one
100 public int new_state;
105 public class media_player_position_changed extends Structure
108 public float new_position;
111 public class media_player_time_changed extends Structure
114 // @todo: check this one
115 public long new_time;
119 public class media_list_item_added extends Structure
122 public LibVlcMediaDescriptor item;
127 public class media_list_will_add_item extends Structure
130 public LibVlcMediaDescriptor item;
135 public class media_list_item_deleted extends Structure
138 public LibVlcMediaDescriptor item;
143 public class media_list_will_delete_item extends Structure
146 public LibVlcMediaDescriptor item;
151 /* media list view */
152 public class media_list_view_item_added extends Structure
155 public LibVlcMediaDescriptor item;
160 public class media_list_view_will_add_item extends Structure
163 public LibVlcMediaDescriptor item;
168 public class media_list_view_item_deleted extends Structure
171 public LibVlcMediaDescriptor item;
176 public class media_list_view_will_delete_item extends Structure
179 public LibVlcMediaDescriptor item;
184 /* media discoverer */
185 public class media_media_discoverer_started extends Structure
188 public Pointer unused;
191 public class media_media_discoverer_ended extends Structure
194 public Pointer unused;
197 public class event_type_specific extends Union
200 public media_meta_changed media_meta_changed;
202 public media_subitem_added media_subitem_added;
204 public media_duration_changed media_duration_changed;
206 public media_preparsed_changed media_preparsed_changed;
208 public media_freed media_freed;
210 public media_state_changed media_state_changed;
212 public media_player_position_changed media_player_position_changed;
214 public media_player_time_changed media_player_time_changed;
216 public media_list_item_added media_list_item_added;
218 public media_list_will_add_item media_list_will_add_item;
220 public media_list_item_deleted media_list_item_deleted;
222 public media_list_will_delete_item media_list_will_delete_item;
224 public media_list_view_item_added media_list_view_item_added;
226 public media_list_view_will_add_item media_list_view_will_add_item;
228 public media_list_view_item_deleted media_list_view_item_deleted;
230 public media_list_view_will_delete_item media_list_view_will_delete_item;
233 public class LibVlcInstance extends PointerType
237 public class LibVlcMediaDescriptor extends PointerType
241 public class LibVlcMediaInstance extends PointerType
245 public class LibVlcMediaList extends PointerType
249 public class LibVlcMediaListPlayer extends PointerType
253 public class LibVlcEventManager extends PointerType
257 // exception handling
258 void libvlc_exception_init(libvlc_exception_t exception);
260 int libvlc_exception_raised(final libvlc_exception_t exception);
262 void libvlc_exception_raise(libvlc_exception_t exception, String format, Object... args);
264 void libvlc_exception_clear(libvlc_exception_t exception);
266 String libvlc_exception_get_message(libvlc_exception_t exception);
269 LibVlcInstance libvlc_new(int argc, String[] argv, libvlc_exception_t exception);
271 void libvlc_release(LibVlcInstance libvlc_instance_t);
275 void libvlc_video_set_parent(LibVlcInstance libvlc_instance, long drawable, libvlc_exception_t exception);
277 void libvlc_toggle_fullscreen(LibVlcMediaInstance libvlc_instance);
279 void libvlc_set_fullscreen(LibVlcMediaInstance instance, int fullscreen, libvlc_exception_t exception);
281 int libvlc_get_fullscreen(LibVlcMediaInstance instance, libvlc_exception_t exception);
283 int libvlc_video_get_height(LibVlcMediaInstance instance, libvlc_exception_t exception);
285 int libvlc_video_get_width(LibVlcMediaInstance instance, libvlc_exception_t exception);
287 String libvlc_video_get_aspect_ration(LibVlcMediaInstance instance, libvlc_exception_t exception);
289 void libvlc_video_set_aspect_ration(LibVlcMediaInstance instance, String ratio, libvlc_exception_t exception);
291 int libvlc_video_get_spu(LibVlcMediaInstance instance, libvlc_exception_t exception);
293 int libvlc_video_set_spu(LibVlcMediaInstance instance, int spu, libvlc_exception_t exception);
295 String libvlc_video_get_crop_geometry(LibVlcMediaInstance instance, libvlc_exception_t exception);
297 void libvlc_video_set_crop_geometry(LibVlcMediaInstance instance, String geometry, libvlc_exception_t exception);
299 void libvlc_video_take_snapshot(LibVlcMediaInstance instance, String filename, int width, int height,
300 libvlc_exception_t exception);
302 void libvlc_video_destroy(LibVlcMediaInstance instance, libvlc_exception_t exception);
304 void libvlc_video_resize(LibVlcMediaInstance instance, int width, int height, libvlc_exception_t exception);
306 void libvlc_video_reparent(LibVlcMediaInstance instance, long drawable, libvlc_exception_t exception);
308 void libvlc_video_set_size(LibVlcInstance instance, int width, int height, libvlc_exception_t exception);
312 void libvlc_audio_toggle_mute(LibVlcInstance instance, libvlc_exception_t exception);
314 void libvlc_audio_set_mute(LibVlcInstance instance, int mute, libvlc_exception_t exception);
316 int libvlc_audio_get_mute(LibVlcInstance instance, libvlc_exception_t exception);
318 int libvlc_audio_get_volume(LibVlcInstance instance, libvlc_exception_t exception);
320 int libvlc_audio_set_volume(LibVlcInstance instance, int volume, libvlc_exception_t exception);
322 int libvlc_audio_get_track_count(LibVlcMediaInstance mediaInstance, libvlc_exception_t exception);
324 int libvlc_audio_get_track(LibVlcMediaInstance mediaInstance, libvlc_exception_t exception);
326 void libvlc_audio_set_track(LibVlcMediaInstance mediaInstance, int channel, libvlc_exception_t exception);
328 int libvlc_audio_get_channel(LibVlcInstance instance, libvlc_exception_t exception);
330 void libvlc_audio_set_channel(LibVlcInstance instance, int channel, libvlc_exception_t exception);
334 void libvlc_playlist_loop(LibVlcInstance instance, int loop, libvlc_exception_t exception);
336 void libvlc_playlist_play(LibVlcInstance instance, int itemIndex, int optionsCount, String[] options,
337 libvlc_exception_t exception);
339 void libvlc_playlist_pause(LibVlcInstance instance, libvlc_exception_t exception);
341 void libvlc_playlist_stop(LibVlcInstance instance, libvlc_exception_t exception);
343 int libvlc_playlist_isplaying(LibVlcInstance instance, libvlc_exception_t exception);
345 int libvlc_playlist_items_count(LibVlcInstance instance, libvlc_exception_t exception);
347 void libvlc_playlist_next(LibVlcInstance instance, libvlc_exception_t exception);
349 void libvlc_playlist_prev(LibVlcInstance instance, libvlc_exception_t exception);
351 void libvlc_playlist_clear(LibVlcInstance instance, libvlc_exception_t exception);
353 int libvlc_playlist_add(LibVlcInstance instance, String uri, String name, libvlc_exception_t exception);
355 int libvlc_playlist_delete_item(LibVlcInstance instance, int itemIndex, libvlc_exception_t exception);
357 LibVlcMediaInstance libvlc_playlist_get_media_player(LibVlcInstance instance, libvlc_exception_t exception);
359 int libvlc_media_player_is_seekable(LibVlcMediaInstance instance, libvlc_exception_t exception);
361 int libvlc_media_player_can_pause(LibVlcMediaInstance instance, libvlc_exception_t exception);
365 LibVlcMediaDescriptor libvlc_media_new(LibVlcInstance libvlc_instance, String mrl, libvlc_exception_t exception);
367 void libvlc_media_add_option(LibVlcMediaDescriptor media, String option, libvlc_exception_t exception);
369 String libvlc_media_get_mrl(LibVlcMediaDescriptor media);
371 void libvlc_media_release(LibVlcMediaDescriptor media);
373 LibVlcEventManager libvlc_media_event_manager(LibVlcMediaDescriptor media, libvlc_exception_t exception);
377 LibVlcMediaInstance libvlc_media_player_new(LibVlcInstance instance, libvlc_exception_t exception);
379 LibVlcMediaInstance libvlc_media_player_new_from_media(LibVlcMediaDescriptor media, libvlc_exception_t exception);
381 void libvlc_media_player_play(LibVlcMediaInstance media_player, libvlc_exception_t exception);
383 void libvlc_media_player_pause(LibVlcMediaInstance media_player, libvlc_exception_t exception);
385 void libvlc_media_player_stop(LibVlcMediaInstance media_player, libvlc_exception_t exception);
387 void libvlc_media_player_set_drawable(LibVlcMediaInstance libvlc_media_player, long drawable,
388 libvlc_exception_t exception);
390 long libvlc_media_player_get_length(LibVlcMediaInstance instance, libvlc_exception_t exception);
392 long libvlc_media_player_get_time(LibVlcMediaInstance instance, libvlc_exception_t exception);
394 void libvlc_media_player_set_time(LibVlcMediaInstance instance, long time, libvlc_exception_t exception);
396 float libvlc_media_player_get_position(LibVlcMediaInstance instance, libvlc_exception_t exception);
398 void libvlc_media_player_set_position(LibVlcMediaInstance instance, float position, libvlc_exception_t exception);
400 int libvlc_media_player_will_play(LibVlcMediaInstance instance, libvlc_exception_t exception);
402 void libvlc_media_player_set_rate(LibVlcMediaInstance instance, float rate, libvlc_exception_t exception);
404 float libvlc_media_player_get_rate(LibVlcMediaInstance instance, libvlc_exception_t exception);
406 int libvlc_media_player_has_vout(LibVlcMediaInstance instance2, libvlc_exception_t exception);
408 float libvlc_media_player_get_fps(LibVlcMediaInstance instance2, libvlc_exception_t exception);
410 void libvlc_media_player_release(LibVlcMediaInstance instance);
412 LibVlcEventManager libvlc_media_player_event_manager(LibVlcMediaInstance media_player, libvlc_exception_t exception);
416 LibVlcMediaList libvlc_media_list_new(LibVlcInstance libvlc_instance, libvlc_exception_t exception);
418 void libvlc_media_list_release(LibVlcMediaList libVlcMediaList);
420 void libvlc_media_list_add_file_content(LibVlcMediaList libvlc_media_list, String fileName,
421 libvlc_exception_t exception);
423 void libvlc_media_list_set_media(LibVlcMediaList libvlc_media_list, LibVlcMediaDescriptor libvlc_media,
424 libvlc_exception_t exception);
426 LibVlcMediaDescriptor libvlc_media_list_media(LibVlcMediaList libvlc_media_list, libvlc_exception_t exception);
428 void libvlc_media_list_add_media(LibVlcMediaList libvlc_media_list, LibVlcMediaDescriptor libvlc_media,
429 libvlc_exception_t exception);
431 void libvlc_media_list_insert_media(LibVlcMediaList libvlc_media_list, LibVlcMediaDescriptor libvlc_media,
432 int position, libvlc_exception_t exception);
434 void libvlc_media_list_remove_index(LibVlcMediaList libvlc_media_list, int position, libvlc_exception_t exception);
436 int libvlc_media_list_count(LibVlcMediaList libvlc_media_list, libvlc_exception_t exception);
438 LibVlcMediaDescriptor libvlc_media_list_item_at_index(LibVlcMediaList libvlc_media_list, int position,
439 libvlc_exception_t exception);
441 int libvlc_media_list_index_of_item(LibVlcMediaList libvlc_media_list, LibVlcMediaDescriptor libvlc_media,
442 libvlc_exception_t exception);
444 int libvlc_media_list_is_readonly(LibVlcMediaList libvlc_media_list);
446 LibVlcEventManager libvlc_media_list_event_manager(LibVlcMediaList libvlc_media_list, libvlc_exception_t exception);
448 // libvlc_media_list_player
450 LibVlcMediaListPlayer libvlc_media_list_player_new(LibVlcInstance libvlc_media_player, libvlc_exception_t exception);
452 void libvlc_media_list_player_release(LibVlcMediaListPlayer libvlc_media_list_player);
454 void libvlc_media_list_player_set_media_player(LibVlcMediaListPlayer libvlc_media_list_player,
455 LibVlcMediaInstance libvlc_media_player, libvlc_exception_t exception);
457 void libvlc_media_list_player_set_media_list(LibVlcMediaListPlayer libvlc_media_list_player,
458 LibVlcMediaList libvlc_media_list, libvlc_exception_t exception);
460 void libvlc_media_list_player_play(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
462 void libvlc_media_list_player_pause(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
464 int libvlc_media_list_player_is_playing(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
466 int libvlc_media_list_player_get_state(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
468 void libvlc_media_list_player_play_item_at_index(LibVlcMediaListPlayer libvlc_media_list_player, int position,
469 libvlc_exception_t exception);
471 void libvlc_media_list_player_play_item(LibVlcMediaListPlayer libvlc_media_list_player,
472 LibVlcMediaDescriptor libvlc_media, libvlc_exception_t exception);
474 void libvlc_media_list_player_stop(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
476 void libvlc_media_list_player_next(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
480 void libvlc_vlm_add_broadcast(LibVlcInstance p_instance, String psz_name, String psz_input, String psz_output,
481 int i_options, String[] ppsz_options, int b_enabled, int b_loop, libvlc_exception_t p_e);
483 void libvlc_vlm_del_media(LibVlcInstance p_instance, String psz_name, libvlc_exception_t p_e);
485 void libvlc_vlm_set_enabled(LibVlcInstance p_instance, String psz_name, int b_enabled, libvlc_exception_t p_e);
487 void libvlc_vlm_set_output(LibVlcInstance p_instance, String psz_name, String psz_output, libvlc_exception_t p_e);
489 void libvlc_vlm_set_input(LibVlcInstance p_instance, String psz_name, String psz_input, libvlc_exception_t p_e);
491 void libvlc_vlm_add_input(LibVlcInstance p_instance, String psz_name, String psz_input, libvlc_exception_t p_e);
493 void libvlc_vlm_set_loop(LibVlcInstance p_instance, String psz_name, int b_loop, libvlc_exception_t p_e);
495 void libvlc_vlm_change_media(LibVlcInstance p_instance, String psz_name, String psz_input, String psz_output,
496 int i_options, String[] ppsz_options, int b_enabled, int b_loop, libvlc_exception_t p_e);
498 void libvlc_vlm_play_media(LibVlcInstance p_instance, String psz_name, libvlc_exception_t p_e);
500 void libvlc_vlm_stop_media(LibVlcInstance p_instance, String psz_name, libvlc_exception_t p_e);
502 void libvlc_vlm_pause_media(LibVlcInstance p_instance, String psz_name, libvlc_exception_t p_e);
504 void libvlc_vlm_seek_media(LibVlcInstance p_instance, String psz_name, float f_percentage, libvlc_exception_t p_e);
506 String libvlc_vlm_show_media(LibVlcInstance p_instance, String psz_name, libvlc_exception_t p_e);
510 public static interface LibVlcCallback extends Callback
513 void callback(libvlc_event_t libvlc_event, Pointer userData);
516 void libvlc_event_attach(LibVlcEventManager event_manager, int event_type, LibVlcCallback callback,
517 Pointer userData, libvlc_exception_t exception);
519 void libvlc_event_detach(LibVlcEventManager event_manager, int event_type, LibVlcCallback callback,
520 Pointer userData, libvlc_exception_t excecption);
522 void libvlc_toggle_fullscreen(LibVlcMediaInstance instance, libvlc_exception_t exception);