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("libvlc-control", LibVlc.class);
42 LibVlc SYNC_INSTANCE = (LibVlc) Native.synchronizedLibrary(INSTANCE);
44 public static class libvlc_exception_t extends Structure
51 public String message;
54 public static class libvlc_event_t extends Structure
61 public event_type_specific event_type_specific;
65 public class media_descriptor_meta_changed extends Structure
68 public Pointer meta_type;
71 public class media_descriptor_subitem_added extends Structure
74 public LibVlcMediaDescriptor new_child;
77 public class media_descriptor_duration_changed extends Structure
80 public NativeLong new_duration;
83 public class media_descriptor_preparsed_changed extends Structure
86 public int new_status;
89 public class media_descriptor_freed extends Structure
92 public LibVlcMediaDescriptor md;
95 public class media_descriptor_state_changed extends Structure
98 // @todo: check this one
104 public class media_instance_position_changed extends Structure
107 public float new_position;
110 public class media_instance_time_changed extends Structure
113 // @todo: check this one
114 public long new_time;
118 public class media_list_item_added extends Structure
121 public LibVlcMediaDescriptor item;
126 public class media_list_will_add_item extends Structure
129 public LibVlcMediaDescriptor item;
134 public class media_list_item_deleted extends Structure
137 public LibVlcMediaDescriptor item;
142 public class media_list_will_delete_item extends Structure
145 public LibVlcMediaDescriptor item;
150 /* media list view */
151 public class media_list_view_item_added extends Structure
154 public LibVlcMediaDescriptor item;
159 public class media_list_view_will_add_item extends Structure
162 public LibVlcMediaDescriptor item;
167 public class media_list_view_item_deleted extends Structure
170 public LibVlcMediaDescriptor item;
175 public class media_list_view_will_delete_item extends Structure
178 public LibVlcMediaDescriptor item;
183 /* media discoverer */
184 public class media_media_discoverer_started extends Structure
187 public Pointer unused;
190 public class media_media_discoverer_ended extends Structure
193 public Pointer unused;
196 public class event_type_specific extends Union
198 public media_descriptor_meta_changed media_descriptor_meta_changed;
199 public media_descriptor_subitem_added media_descriptor_subitem_added;
200 public media_descriptor_duration_changed media_descriptor_duration_changed;
201 public media_descriptor_preparsed_changed media_descriptor_preparsed_changed;
202 public media_descriptor_freed media_descriptor_freed;
203 public media_descriptor_state_changed media_descriptor_state_changed;
204 public media_instance_position_changed media_instance_position_changed;
205 public media_instance_time_changed media_instance_time_changed;
206 public media_list_item_added media_list_item_added;
207 public media_list_will_add_item media_list_will_add_item;
208 public media_list_item_deleted media_list_item_deleted;
209 public media_list_will_delete_item media_list_will_delete_item;
210 public media_list_view_item_added media_list_view_item_added;
211 public media_list_view_will_add_item media_list_view_will_add_item;
212 public media_list_view_item_deleted media_list_view_item_deleted;
213 public media_list_view_will_delete_item media_list_view_will_delete_item;
216 public class LibVlcInstance extends PointerType
220 public class LibVlcMediaDescriptor extends PointerType
224 public class LibVlcMediaInstance extends PointerType
228 public class LibVlcMediaList extends PointerType
232 public class LibVlcMediaListPlayer extends PointerType
236 public class LibVlcEventManager extends PointerType
240 // exception handling
241 void libvlc_exception_init(libvlc_exception_t exception);
243 int libvlc_exception_raised(final libvlc_exception_t exception);
245 void libvlc_exception_raise(libvlc_exception_t exception, String format, Object... args);
247 void libvlc_exception_clear(libvlc_exception_t exception);
249 String libvlc_exception_get_message(libvlc_exception_t exception);
252 LibVlcInstance libvlc_new(int argc, String[] argv, libvlc_exception_t exception);
254 void libvlc_release(LibVlcInstance libvlc_instance_t);
258 void libvlc_video_set_parent(LibVlcInstance libvlc_instance, long drawable, libvlc_exception_t exception);
260 void libvlc_toggle_fullscreen(LibVlcMediaInstance libvlc_instance);
262 void libvlc_set_fullscreen(LibVlcMediaInstance instance, int fullscreen, libvlc_exception_t exception);
264 int libvlc_get_fullscreen(LibVlcMediaInstance instance, libvlc_exception_t exception);
266 int libvlc_video_get_height(LibVlcMediaInstance instance, libvlc_exception_t exception);
268 int libvlc_video_get_width(LibVlcMediaInstance instance, libvlc_exception_t exception);
270 String libvlc_video_get_aspect_ration(LibVlcMediaInstance instance, libvlc_exception_t exception);
272 void libvlc_video_set_aspect_ration(LibVlcMediaInstance instance, String ratio, libvlc_exception_t exception);
274 int libvlc_video_get_spu(LibVlcMediaInstance instance, libvlc_exception_t exception);
276 int libvlc_video_set_spu(LibVlcMediaInstance instance, int spu, libvlc_exception_t exception);
278 String libvlc_video_get_crop_geometry(LibVlcMediaInstance instance, libvlc_exception_t exception);
280 void libvlc_video_set_crop_geometry(LibVlcMediaInstance instance, String geometry, libvlc_exception_t exception);
282 void libvlc_video_take_snapshot(LibVlcMediaInstance instance, String filename, int width, int height,
283 libvlc_exception_t exception);
285 void libvlc_video_destroy(LibVlcMediaInstance instance, libvlc_exception_t exception);
287 void libvlc_video_resize(LibVlcMediaInstance instance, int width, int height, libvlc_exception_t exception);
289 void libvlc_video_reparent(LibVlcMediaInstance instance, long drawable, libvlc_exception_t exception);
291 void libvlc_video_set_size(LibVlcInstance instance, int width, int height, libvlc_exception_t exception);
295 void libvlc_audio_toggle_mute(LibVlcInstance instance, libvlc_exception_t exception);
297 void libvlc_audio_set_mute(LibVlcInstance instance, int mute, libvlc_exception_t exception);
299 int libvlc_audio_get_mute(LibVlcInstance instance, libvlc_exception_t exception);
301 int libvlc_audio_get_volume(LibVlcInstance instance, libvlc_exception_t exception);
303 int libvlc_audio_set_volume(LibVlcInstance instance, int volume, libvlc_exception_t exception);
307 void libvlc_playlist_loop(LibVlcInstance instance, int loop, libvlc_exception_t exception);
309 void libvlc_playlist_play(LibVlcInstance instance, int itemIndex, int optionsCount, String[] options,
310 libvlc_exception_t exception);
312 void libvlc_playlist_pause(LibVlcInstance instance, libvlc_exception_t exception);
314 void libvlc_playlist_stop(LibVlcInstance instance, libvlc_exception_t exception);
316 int libvlc_playlist_isplaying(LibVlcInstance instance, libvlc_exception_t exception);
318 int libvlc_playlist_items_count(LibVlcInstance instance, libvlc_exception_t exception);
320 void libvlc_playlist_next(LibVlcInstance instance, libvlc_exception_t exception);
322 void libvlc_playlist_prev(LibVlcInstance instance, libvlc_exception_t exception);
324 void libvlc_playlist_clear(LibVlcInstance instance, libvlc_exception_t exception);
326 int libvlc_playlist_add(LibVlcInstance instance, String uri, String name, libvlc_exception_t exception);
328 int libvlc_playlist_delete_item(LibVlcInstance instance, int itemIndex, libvlc_exception_t exception);
330 LibVlcMediaInstance libvlc_playlist_get_media_instance(LibVlcInstance instance, libvlc_exception_t exception);
332 int libvlc_media_instance_is_seekable(LibVlcMediaInstance instance, libvlc_exception_t exception);
334 int libvlc_media_instance_can_pause(LibVlcMediaInstance instance, libvlc_exception_t exception);
338 LibVlcMediaDescriptor libvlc_media_descriptor_new(LibVlcInstance libvlc_instance, String mrl,
339 libvlc_exception_t exception);
341 void libvlc_media_descriptor_add_option(LibVlcMediaDescriptor media_descriptor, String option,
342 libvlc_exception_t exception);
344 String libvlc_media_descriptor_get_mrl(LibVlcMediaDescriptor media_descriptor);
346 void libvlc_media_descriptor_release(LibVlcMediaDescriptor media_descriptor);
348 LibVlcEventManager libvlc_media_descriptor_event_manager(LibVlcMediaDescriptor media_descriptor,
349 libvlc_exception_t exception);
353 LibVlcMediaInstance libvlc_media_instance_new(LibVlcInstance instance, libvlc_exception_t exception);
355 LibVlcMediaInstance libvlc_media_instance_new_from_media_descriptor(LibVlcMediaDescriptor media_descriptor,
356 libvlc_exception_t exception);
358 void libvlc_media_instance_play(LibVlcMediaInstance media_instance, libvlc_exception_t exception);
360 void libvlc_media_instance_pause(LibVlcMediaInstance media_instance, libvlc_exception_t exception);
362 void libvlc_media_instance_stop(LibVlcMediaInstance media_instance, libvlc_exception_t exception);
364 void libvlc_media_instance_set_drawable(LibVlcMediaInstance libvlc_media_instance, long drawable,
365 libvlc_exception_t exception);
367 long libvlc_media_instance_get_length(LibVlcMediaInstance instance, libvlc_exception_t exception);
369 long libvlc_media_instance_get_time(LibVlcMediaInstance instance, libvlc_exception_t exception);
371 void libvlc_media_instance_set_time(LibVlcMediaInstance instance, long time, libvlc_exception_t exception);
373 float libvlc_media_instance_get_position(LibVlcMediaInstance instance, libvlc_exception_t exception);
375 void libvlc_media_instance_set_position(LibVlcMediaInstance instance, float position, libvlc_exception_t exception);
377 int libvlc_media_instance_will_play(LibVlcMediaInstance instance, libvlc_exception_t exception);
379 void libvlc_media_instance_set_rate(LibVlcMediaInstance instance, float rate, libvlc_exception_t exception);
381 float libvlc_media_instance_get_rate(LibVlcMediaInstance instance, libvlc_exception_t exception);
383 int libvlc_media_instance_has_vout(LibVlcMediaInstance instance2, libvlc_exception_t exception);
385 float libvlc_media_instance_get_fps(LibVlcMediaInstance instance2, libvlc_exception_t exception);
387 void libvlc_media_instance_release(LibVlcMediaInstance instance);
389 LibVlcEventManager libvlc_media_instance_event_manager(LibVlcMediaInstance media_instance,
390 libvlc_exception_t exception);
394 LibVlcMediaList libvlc_media_list_new(LibVlcInstance libvlc_instance, libvlc_exception_t exception);
396 void libvlc_media_list_release(LibVlcMediaList libVlcMediaList);
398 void libvlc_media_list_add_file_content(LibVlcMediaList libvlc_media_list, String fileName,
399 libvlc_exception_t exception);
401 void libvlc_media_list_set_media_descriptor(LibVlcMediaList libvlc_media_list,
402 LibVlcMediaDescriptor libvlc_media_descriptor, libvlc_exception_t exception);
404 LibVlcMediaDescriptor libvlc_media_list_media_descriptor(LibVlcMediaList libvlc_media_list,
405 libvlc_exception_t exception);
407 void libvlc_media_list_add_media_descriptor(LibVlcMediaList libvlc_media_list,
408 LibVlcMediaDescriptor libvlc_media_descriptor, libvlc_exception_t exception);
410 void libvlc_media_list_insert_media_descriptor(LibVlcMediaList libvlc_media_list,
411 LibVlcMediaDescriptor libvlc_media_descriptor, int position, libvlc_exception_t exception);
413 void libvlc_media_list_remove_index(LibVlcMediaList libvlc_media_list, int position, libvlc_exception_t exception);
415 int libvlc_media_list_count(LibVlcMediaList libvlc_media_list, libvlc_exception_t exception);
417 LibVlcMediaDescriptor libvlc_media_list_item_at_index(LibVlcMediaList libvlc_media_list, int position,
418 libvlc_exception_t exception);
420 int libvlc_media_list_index_of_item(LibVlcMediaList libvlc_media_list,
421 LibVlcMediaDescriptor libvlc_media_descriptor, libvlc_exception_t exception);
423 int libvlc_media_list_is_readonly(LibVlcMediaList libvlc_media_list);
425 LibVlcEventManager libvlc_media_list_event_manager(LibVlcMediaList libvlc_media_list, libvlc_exception_t exception);
427 // libvlc_media_list_player
429 LibVlcMediaListPlayer libvlc_media_list_player_new(LibVlcInstance libvlc_media_instance,
430 libvlc_exception_t exception);
432 void libvlc_media_list_player_release(LibVlcMediaListPlayer libvlc_media_list_player);
434 void libvlc_media_list_player_set_media_instance(LibVlcMediaListPlayer libvlc_media_list_player,
435 LibVlcMediaInstance libvlc_media_instance, libvlc_exception_t exception);
437 void libvlc_media_list_player_set_media_list(LibVlcMediaListPlayer libvlc_media_list_player,
438 LibVlcMediaList libvlc_media_list, libvlc_exception_t exception);
440 void libvlc_media_list_player_play(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
442 void libvlc_media_list_player_pause(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
444 int libvlc_media_list_player_is_playing(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
446 int libvlc_media_list_player_get_state(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
448 void libvlc_media_list_player_play_item_at_index(LibVlcMediaListPlayer libvlc_media_list_player, int position,
449 libvlc_exception_t exception);
451 void libvlc_media_list_player_play_item(LibVlcMediaListPlayer libvlc_media_list_player,
452 LibVlcMediaDescriptor libvlc_media_descriptor, libvlc_exception_t exception);
454 void libvlc_media_list_player_stop(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
456 void libvlc_media_list_player_next(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
460 public static interface LibVlcCallback extends Callback
463 void callback(libvlc_event_t libvlc_event, Pointer userData);
466 void libvlc_event_attach(LibVlcEventManager event_manager, int event_type, LibVlcCallback callback,
467 Pointer userData, libvlc_exception_t exception);
469 void libvlc_event_detach(LibVlcEventManager event_manager, int event_type, LibVlcCallback callback,
470 Pointer userData, libvlc_exception_t excecption);
472 void libvlc_toggle_fullscreen(LibVlcMediaInstance instance, libvlc_exception_t exception);