Java bindings by Filippo Carone.
[vlc.git] / bindings / java / org / videolan / jvlc / JVLC.java
1 package org.videolan.jvlc;
2
3 /*****************************************************************************
4  * JVLC.java: global class for vlc Java Bindings
5  *****************************************************************************
6  * Copyright (C) 1998-2004 the VideoLAN team
7  *
8  * Authors: Filippo Carone <filippo@carone.org>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 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 General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
23  *****************************************************************************/
24
25 /**
26  * This is the main Java VLC class which represents a vlc_object_t. Through this
27  * class it's possible to control media loading/playing. It's possible to have 
28  * more than one JVLC object in the same program.
29  */
30 public class JVLC {
31
32     static {
33         System.loadLibrary("jvlc");
34     }
35
36     private int id;
37
38     /**
39      * @param args Arguments for the vlc object. These are the same as the
40      * original C version of VLC.
41      */
42     public JVLC(String[] args) {
43         String[] properArgs = new String[args.length + 1];
44         properArgs[0] = "jvlc";
45         for (int i = 0; i < args.length; i++)
46             properArgs[i+1] = args[i];
47
48         this.id = create();
49             init(properArgs);
50     }
51
52     public JVLC() {
53         new JVLC(new String[]{""});
54     }
55     
56     /**
57      * @return Returns the ID of the VLC Object
58      */
59     public int getID() {
60         return this.id;
61     }
62
63     
64     /**
65      * Cleanup the VLC Object. It's the equivalent of
66      * calling VLC_Die() and VLC_CleanUp() 
67      */
68     public void quit() {
69         this.die();
70         this.cleanUp();
71     }
72
73     private native int create();
74
75     private native int init(String[] args);
76
77     /**
78      * 
79      * Creates the interface of the videolan player
80      * 
81      * @param moduleName The interface module to display
82      * @param blocking True if the interface is blocking, otherwise it runs on its own thread
83      * @param startPlay True if the player starts to play as soon as the interface is displayed
84      * @return An int which is &lt; 0 on error
85      */
86     public native int addInterface(String moduleName, boolean blocking, boolean startPlay);
87
88     /**
89      * 
90      * Creates the interface of the videolan player with the default interface
91      * or the interface set by -I
92      * 
93      * @param blocking True if the interface is blocking, otherwise it runs on its own thread
94      * @param startPlay True if the player starts to play as soon as the interface is displayed
95      * @return An int which is &lt; 0 on error
96      */
97     public int addInterface(boolean blocking, boolean startPlay) {
98         return addInterface(null, blocking, startPlay);
99     }
100
101     /**
102      * @return The version of the VideoLan object
103      */
104     public native String getVersion();
105
106     public native String getError(int errorCode);
107
108     private native int die();
109
110     private native int cleanUp();
111     
112     public native int setVariable(JVLCVariable jvlcVariable);
113
114     public native JVLCVariable getVariable(String varName); // XXX in progress
115
116     public native int addTarget(String URI, String[] options, int insertMode, int position);
117
118     /**
119      * Plays the media
120      * 
121      * @return An int which is &lt; 0 on error
122      */
123     public native int play();
124    
125     /**
126      * 
127      * Pauses the media. If the media is already paused, pause() restarts it.
128      * 
129      * @return
130      */
131     public native int pause();
132
133     /**
134      * 
135      * Stops the media
136      * 
137      * @return
138      */
139     public native int stop();
140
141     /**
142      * @return True if the player is actually playing something
143      */
144     public native boolean isPlaying();
145
146     /**
147      * @return The absolute position within the media
148      */
149     public native float getPosition();
150
151     public native float setPosition(float position);
152
153     public native int getTime();
154
155     public native int setTime(int seconds, boolean relative);
156
157     public native int getLength();
158
159     public native float speedFaster();
160
161     public native float speedSlower();
162
163     public native int getPlaylistIndex();
164
165     public native int getPlaylistItems();
166
167     public native int playlistNext();
168
169     public native int playlistPrev();
170
171     public native int playlistClear();
172
173     public native int getVolume();
174
175     public native int setVolume(int volume);
176
177     public native int muteVolume();
178
179     public native int fullScreen();
180 }