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);
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);
305 int libvlc_audio_get_track_count(LibVlcMediaInstance mediaInstance, libvlc_exception_t exception );
307 int libvlc_audio_get_track(LibVlcMediaInstance mediaInstance, libvlc_exception_t exception );
309 void libvlc_audio_set_track(LibVlcMediaInstance mediaInstance, int channel, libvlc_exception_t exception);
311 int libvlc_audio_get_channel(LibVlcInstance instance, libvlc_exception_t exception );
313 void libvlc_audio_set_channel(LibVlcInstance instance, int channel, libvlc_exception_t exception);
317 void libvlc_playlist_loop(LibVlcInstance instance, int loop, libvlc_exception_t exception);
319 void libvlc_playlist_play(LibVlcInstance instance, int itemIndex, int optionsCount, String[] options,
320 libvlc_exception_t exception);
322 void libvlc_playlist_pause(LibVlcInstance instance, libvlc_exception_t exception);
324 void libvlc_playlist_stop(LibVlcInstance instance, libvlc_exception_t exception);
326 int libvlc_playlist_isplaying(LibVlcInstance instance, libvlc_exception_t exception);
328 int libvlc_playlist_items_count(LibVlcInstance instance, libvlc_exception_t exception);
330 void libvlc_playlist_next(LibVlcInstance instance, libvlc_exception_t exception);
332 void libvlc_playlist_prev(LibVlcInstance instance, libvlc_exception_t exception);
334 void libvlc_playlist_clear(LibVlcInstance instance, libvlc_exception_t exception);
336 int libvlc_playlist_add(LibVlcInstance instance, String uri, String name, libvlc_exception_t exception);
338 int libvlc_playlist_delete_item(LibVlcInstance instance, int itemIndex, libvlc_exception_t exception);
340 LibVlcMediaInstance libvlc_playlist_get_media_instance(LibVlcInstance instance, libvlc_exception_t exception);
342 int libvlc_media_instance_is_seekable(LibVlcMediaInstance instance, libvlc_exception_t exception);
344 int libvlc_media_instance_can_pause(LibVlcMediaInstance instance, libvlc_exception_t exception);
348 LibVlcMediaDescriptor libvlc_media_descriptor_new(LibVlcInstance libvlc_instance, String mrl,
349 libvlc_exception_t exception);
351 void libvlc_media_descriptor_add_option(LibVlcMediaDescriptor media_descriptor, String option,
352 libvlc_exception_t exception);
354 String libvlc_media_descriptor_get_mrl(LibVlcMediaDescriptor media_descriptor);
356 void libvlc_media_descriptor_release(LibVlcMediaDescriptor media_descriptor);
358 LibVlcEventManager libvlc_media_descriptor_event_manager(LibVlcMediaDescriptor media_descriptor,
359 libvlc_exception_t exception);
363 LibVlcMediaInstance libvlc_media_instance_new(LibVlcInstance instance, libvlc_exception_t exception);
365 LibVlcMediaInstance libvlc_media_instance_new_from_media_descriptor(LibVlcMediaDescriptor media_descriptor,
366 libvlc_exception_t exception);
368 void libvlc_media_instance_play(LibVlcMediaInstance media_instance, libvlc_exception_t exception);
370 void libvlc_media_instance_pause(LibVlcMediaInstance media_instance, libvlc_exception_t exception);
372 void libvlc_media_instance_stop(LibVlcMediaInstance media_instance, libvlc_exception_t exception);
374 void libvlc_media_instance_set_drawable(LibVlcMediaInstance libvlc_media_instance, long drawable,
375 libvlc_exception_t exception);
377 long libvlc_media_instance_get_length(LibVlcMediaInstance instance, libvlc_exception_t exception);
379 long libvlc_media_instance_get_time(LibVlcMediaInstance instance, libvlc_exception_t exception);
381 void libvlc_media_instance_set_time(LibVlcMediaInstance instance, long time, libvlc_exception_t exception);
383 float libvlc_media_instance_get_position(LibVlcMediaInstance instance, libvlc_exception_t exception);
385 void libvlc_media_instance_set_position(LibVlcMediaInstance instance, float position, libvlc_exception_t exception);
387 int libvlc_media_instance_will_play(LibVlcMediaInstance instance, libvlc_exception_t exception);
389 void libvlc_media_instance_set_rate(LibVlcMediaInstance instance, float rate, libvlc_exception_t exception);
391 float libvlc_media_instance_get_rate(LibVlcMediaInstance instance, libvlc_exception_t exception);
393 int libvlc_media_instance_has_vout(LibVlcMediaInstance instance2, libvlc_exception_t exception);
395 float libvlc_media_instance_get_fps(LibVlcMediaInstance instance2, libvlc_exception_t exception);
397 void libvlc_media_instance_release(LibVlcMediaInstance instance);
399 LibVlcEventManager libvlc_media_instance_event_manager(LibVlcMediaInstance media_instance,
400 libvlc_exception_t exception);
404 LibVlcMediaList libvlc_media_list_new(LibVlcInstance libvlc_instance, libvlc_exception_t exception);
406 void libvlc_media_list_release(LibVlcMediaList libVlcMediaList);
408 void libvlc_media_list_add_file_content(LibVlcMediaList libvlc_media_list, String fileName,
409 libvlc_exception_t exception);
411 void libvlc_media_list_set_media_descriptor(LibVlcMediaList libvlc_media_list,
412 LibVlcMediaDescriptor libvlc_media_descriptor, libvlc_exception_t exception);
414 LibVlcMediaDescriptor libvlc_media_list_media_descriptor(LibVlcMediaList libvlc_media_list,
415 libvlc_exception_t exception);
417 void libvlc_media_list_add_media_descriptor(LibVlcMediaList libvlc_media_list,
418 LibVlcMediaDescriptor libvlc_media_descriptor, libvlc_exception_t exception);
420 void libvlc_media_list_insert_media_descriptor(LibVlcMediaList libvlc_media_list,
421 LibVlcMediaDescriptor libvlc_media_descriptor, int position, libvlc_exception_t exception);
423 void libvlc_media_list_remove_index(LibVlcMediaList libvlc_media_list, int position, libvlc_exception_t exception);
425 int libvlc_media_list_count(LibVlcMediaList libvlc_media_list, libvlc_exception_t exception);
427 LibVlcMediaDescriptor libvlc_media_list_item_at_index(LibVlcMediaList libvlc_media_list, int position,
428 libvlc_exception_t exception);
430 int libvlc_media_list_index_of_item(LibVlcMediaList libvlc_media_list,
431 LibVlcMediaDescriptor libvlc_media_descriptor, libvlc_exception_t exception);
433 int libvlc_media_list_is_readonly(LibVlcMediaList libvlc_media_list);
435 LibVlcEventManager libvlc_media_list_event_manager(LibVlcMediaList libvlc_media_list, libvlc_exception_t exception);
437 // libvlc_media_list_player
439 LibVlcMediaListPlayer libvlc_media_list_player_new(LibVlcInstance libvlc_media_instance,
440 libvlc_exception_t exception);
442 void libvlc_media_list_player_release(LibVlcMediaListPlayer libvlc_media_list_player);
444 void libvlc_media_list_player_set_media_instance(LibVlcMediaListPlayer libvlc_media_list_player,
445 LibVlcMediaInstance libvlc_media_instance, libvlc_exception_t exception);
447 void libvlc_media_list_player_set_media_list(LibVlcMediaListPlayer libvlc_media_list_player,
448 LibVlcMediaList libvlc_media_list, libvlc_exception_t exception);
450 void libvlc_media_list_player_play(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
452 void libvlc_media_list_player_pause(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
454 int libvlc_media_list_player_is_playing(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
456 int libvlc_media_list_player_get_state(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
458 void libvlc_media_list_player_play_item_at_index(LibVlcMediaListPlayer libvlc_media_list_player, int position,
459 libvlc_exception_t exception);
461 void libvlc_media_list_player_play_item(LibVlcMediaListPlayer libvlc_media_list_player,
462 LibVlcMediaDescriptor libvlc_media_descriptor, libvlc_exception_t exception);
464 void libvlc_media_list_player_stop(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
466 void libvlc_media_list_player_next(LibVlcMediaListPlayer libvlc_media_list_player, libvlc_exception_t exception);
470 public static interface LibVlcCallback extends Callback
473 void callback(libvlc_event_t libvlc_event, Pointer userData);
476 void libvlc_event_attach(LibVlcEventManager event_manager, int event_type, LibVlcCallback callback,
477 Pointer userData, libvlc_exception_t exception);
479 void libvlc_event_detach(LibVlcEventManager event_manager, int event_type, LibVlcCallback callback,
480 Pointer userData, libvlc_exception_t excecption);
482 void libvlc_toggle_fullscreen(LibVlcMediaInstance instance, libvlc_exception_t exception);