java bindings huge update
authorFilippo Carone <littlejohn@videolan.org>
Sun, 9 Mar 2008 00:53:36 +0000 (01:53 +0100)
committerFilippo Carone <littlejohn@videolan.org>
Sun, 9 Mar 2008 01:08:53 +0000 (02:08 +0100)
41 files changed:
Makefile.am [deleted file]
README
VLCExample.java
VlcClient.java
org/videolan/jvlc/Audio.java [deleted file]
org/videolan/jvlc/AudioIntf.java [deleted file]
org/videolan/jvlc/EventManager.java [deleted file]
org/videolan/jvlc/GenericVideoWidget.java [deleted file]
org/videolan/jvlc/Input.java [deleted file]
org/videolan/jvlc/InputIntf.java [deleted file]
org/videolan/jvlc/JLibVLC.java [deleted file]
org/videolan/jvlc/JVLC.java
org/videolan/jvlc/JVLCCanvas.java [deleted file]
org/videolan/jvlc/JVLCPanel.java [deleted file]
org/videolan/jvlc/MediaDescriptor.java
org/videolan/jvlc/MediaInstance.java
org/videolan/jvlc/MediaList.java [new file with mode: 0644]
org/videolan/jvlc/MediaListPlayer.java [new file with mode: 0644]
org/videolan/jvlc/Playlist.java
org/videolan/jvlc/PlaylistIntf.java [deleted file]
org/videolan/jvlc/VLM.java [deleted file]
org/videolan/jvlc/VLMIntf.java [deleted file]
org/videolan/jvlc/Video.java
org/videolan/jvlc/VideoIntf.java [deleted file]
org/videolan/jvlc/event/MediaInstanceCallback.java [new file with mode: 0644]
org/videolan/jvlc/event/MediaInstanceListener.java [new file with mode: 0644]
org/videolan/jvlc/internal/LibVlc.java
org/videolan/jvlc/internal/LibVlcEventType.java
org/videolan/jvlc/internal/LibVlcImpl.java
org/videolan/jvlc/listener/VolumeListener.java [deleted file]
src/Makefile.am [deleted file]
src/audio-jni.cc [deleted file]
src/callback-jni.cc [deleted file]
src/core-jni.cc [deleted file]
src/graphics-jni.cc [deleted file]
src/input-jni.cc [deleted file]
src/playlist-jni.cc [deleted file]
src/utils.cc [deleted file]
src/utils.h [deleted file]
src/video-jni.cc [deleted file]
src/vlm-jni.cc [deleted file]

diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644 (file)
index d3afc03..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#######################################################################
-# VLC Java Bindings
-#######################################################################
-
-SUBDIRS= . src
-
-EXTRA_DIST= \
-           FAQ \
-           TODO \
-           README \
-           THANKS \
-           javadoc.xml \
-           VlcClient.java \
-           VLCExample.java
-
-EXTRA_DIST+= \
-       org/videolan/jvlc/AudioIntf.java \
-       org/videolan/jvlc/Audio.java \
-       org/videolan/jvlc/GenericVideoWidget.java \
-       org/videolan/jvlc/InputIntf.java \
-       org/videolan/jvlc/Input.java \
-       org/videolan/jvlc/JLibVLC.java \
-       org/videolan/jvlc/JVLCCanvas.java \
-       org/videolan/jvlc/JVLC.java \
-       org/videolan/jvlc/JVLCPanel.java \
-       org/videolan/jvlc/PlaylistIntf.java \
-       org/videolan/jvlc/Playlist.java \
-       org/videolan/jvlc/VideoIntf.java \
-       org/videolan/jvlc/Video.java \
-       org/videolan/jvlc/VLCException.java \
-       org/videolan/jvlc/VLMIntf.java \
-       org/videolan/jvlc/VLM.java \
-       org/videolan/jvlc/listener/VolumeListener.java 
-
-if BUILD_JAVA
-
-OBJECTS = org/videolan/jvlc/VLM.class org/videolan/jvlc/VLCException.class org/videolan/jvlc/Playlist.class org/videolan/jvlc/AudioIntf.class org/videolan/jvlc/Audio.class org/videolan/jvlc/InputIntf.class org/videolan/jvlc/Input.class org/videolan/jvlc/PlaylistIntf.class org/videolan/jvlc/VideoIntf.class org/videolan/jvlc/JVLCCanvas.class org/videolan/jvlc/Video.class org/videolan/jvlc/JLibVLC.class org/videolan/jvlc/JVLC.class  org/videolan/jvlc/JVLCPanel.class org/videolan/jvlc/VLMIntf.class org/videolan/jvlc/GenericVideoWidget.class org/videolan/jvlc/listener/VolumeListener.class
-
-PROCESSOR_FAMILY = `uname -m | sed -e 's/^i.86/i386/' | sed -e 's/^x86_64/amd64/'`
-
-if HAVE_WIN32
-JINCLUDES = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/win32
-LIBJINCLUDES = -L${JAVA_HOME}/lib -ljawt
-else
-JINCLUDES = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
-LIBJINCLUDES = -L$(JAVA_HOME)/jre/lib/$(PROCESSOR_FAMILY) -ljawt
-endif
-
-export JINCLUDES
-export LIBJINCLUDES
-
-# Build targets
-
-%.class: %.java
-       $(JAVAC) $?
-
-VlcClient: $(OBJECTS)
-       $(JAVAC) VlcClient.java
-
-VLCExample: $(OBJECTS)
-       $(JAVAC) VLCExample.java
-
-all-am: VlcClient VLCExample
-
-clean-local:
-       rm -f *.class *~ org/videolan/jvlc/*.class src/*.o *.so *.o *.dll
-
-endif
diff --git a/README b/README
index 14f33ae..2e30930 100644 (file)
--- a/README
+++ b/README
@@ -2,33 +2,40 @@
             First of all, this is a *developers* only version
 
 
-Usage
------
+Compiling JVLC
+--------------
 
- In order to use these bindings you have to compile vlc from source. I
-recommend you to take the latest version from videolan svn repository
-(or use at least revison 18443) by doing:
+ In order to use these bindings you have to compile vlc from source, be sure
+to use the latest git version (see http://wiki.videolan.org/Git for instructions
+on how to get the latest vlc version).
 
-svn co svn://svn.videolan.org/vlc/trunk vlc-trunk
+ JVLC depends on JNA, you can download JNA from http://jna.dev.java.net .
 
- bootstrap, clean, set environment variables, configure and build:
+ JVLC is developed using the Sun JDK version 6, but version 5 should be fine too.
 
-./bootstrap
+ Until the build.xml will be ready, you may compile jvlc issueing from the bindings
+java folder:
 
-export JAVA_HOME=/path/to/jvm 
-(for example i have JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun)
+mkdir output
+javac -d output -cp <path-to>/jna.jar -g org/videolan/jvlc/internal/*.java org/videolan/jvlc/event/*.java  org/videolan/jvlc/*.java VLCExample.java VlcClient.java
 
-./configure --enable-java-bindings && make && make install
+ where <path-to> is the folder where the file jna.jar is contained
+ and in the output folder you'll find the compiled classes.
+
+ You may also import jvlc in eclipse running the createEclipseProject.sh script.
+
+
+Running JVLC Example
+--------------------
 
  To run a Java VLC example issue (be sure you have an a.avi and a.mp3 files
 in your user.dir folder):
 
-java -Djava.library.path=/usr/local/lib VLCExample
+java -cp .:<path-to>jna.jar -Djna.library.path=/usr/local/lib VLCExample
+
 
 (if you have specified a prefix in configure, change /usr/local/lib to 
 PREFIX/lib)
 
- Be sure your ldconfig can find libjawt.so and libmawt.so or you will
-get linking errors when you run the program.
 
  Happy playing.
index 4648117..29759fa 100644 (file)
@@ -1,7 +1,10 @@
-import org.videolan.jvlc.AudioIntf;
 import org.videolan.jvlc.JVLC;
+import org.videolan.jvlc.MediaDescriptor;
+import org.videolan.jvlc.MediaInstance;
+import org.videolan.jvlc.Playlist;
 import org.videolan.jvlc.VLCException;
-import org.videolan.jvlc.listener.VolumeListener;
+import org.videolan.jvlc.Video;
+import org.videolan.jvlc.event.MediaInstanceListener;
 
 
 public class VLCExample
@@ -24,131 +27,147 @@ public class VLCExample
             }
         }
         JVLC jvlc = new JVLC(args);
+        Playlist playlist = new Playlist(jvlc);
         System.out.println("... done.");
-
-        try
-        {
-            // jvlc.playlist.add("file://" + System.getProperty( "user.dir" ) + "/a.avi", "a.avi");
-            jvlc.playlist.add("file:///home/little/a.avi", "a.avi");
-            // jvlc.playlist.add("file://" + System.getProperty( "user.dir" ) + "/a.mp3", "a.mp3");
-            jvlc.playlist.play(-1, null);
-        }
-        catch (VLCException e)
-        {
-            e.printStackTrace();
-        }
-
-        while (! jvlc.isInputPlaying())
-        {
-            Thread.sleep(100);
-        }
-        while (! jvlc.hasVout() )
-        {
-            Thread.sleep(100);
-        }
-
-        // testing vout functionalities
-        Thread.sleep(2500);
-        if (jvlc.hasVout())
-        {
-            videoInput = true;
-        }
         
-        if (videoInput)
+        MediaDescriptor mediaDescriptor = new MediaDescriptor(jvlc, "/home/carone/a.avi");
+        MediaInstance mediaInstance = mediaDescriptor.getMediaInstance();
+
+        mediaInstance.addListener(new MediaInstanceListener()
         {
-            try
+            @Override
+            public void endReached(MediaInstance mediaInstance)
             {
-                System.out.print(jvlc.video.getWidth());
-                System.out.print("x");
-                System.out.println(jvlc.video.getHeight());
+                System.out.println("Media instance end reached. MRL: " + mediaInstance.getMediaDescriptor().getMrl());
             }
-            catch (VLCException e)
+
+            @Override
+            public void paused(MediaInstance mediaInstance)
             {
-                e.printStackTrace();
+                System.out.println("Media instance paused. MRL: " + mediaInstance.getMediaDescriptor().getMrl());
             }
-        }
-        try
-        {
-            if (videoInput)
-            {
-                System.out.print("Fullscreen... ");
-                jvlc.video.setFullscreen(true);
-                Thread.sleep(3000);
-                System.out.println("real size.");
-                jvlc.video.setFullscreen(false);
-                System.out.print("Taking snapshot... ");
-                jvlc.video.getSnapshot(System.getProperty("user.dir") + "/snap.png",0,0);
-                System.out.println("taken. (see " + System.getProperty("user.dir") + "/snap.png )");
-                Thread.sleep(2000);
-                System.out.println("Resizing to 300x300");
-                jvlc.video.setSize(300, 300);
 
-            }
-            jvlc.audio.addVolumeListener(new VolumeListener()
+            @Override
+            public void played(MediaInstance mediaInstance)
             {
-                               public void volumeChanged() {
-                                       System.out.println("====> From the listener: volume changed.");
-                               }
-            });
-
-            System.out.print("Muting...");
-            jvlc.audio.setMute(true);
-            Thread.sleep(3000);
-            System.out.println("unmuting.");
-            jvlc.audio.setMute(false);
-            Thread.sleep(3000);
-            System.out.println("Volume is: " + jvlc.audio.getVolume());
-            System.out.print("Setting volume to 150... ");
-            jvlc.audio.setVolume(150);
-            System.out.println("done");
-            System.out.println("== AUDIO INFO ==");
-            int currentChannel = jvlc.audio.getChannel();
-            System.out.println("Audio track number: " + jvlc.audio.getTrack());
-            System.out.println("Audio channel info: " + jvlc.audio.getChannel());
-            System.out.print("Setting left channel... ");
-            jvlc.audio.setChannel(AudioIntf.LEFT_CHANNEL);
-            System.out.println("done.");
-            Thread.sleep(3000);
-            System.out.print("Setting right channel... ");
-            jvlc.audio.setChannel(AudioIntf.RIGHT_CHANNEL);
-            System.out.println("done.");
-            Thread.sleep(3000);
-            System.out.print("Reverting to original channel");
-            jvlc.audio.setChannel(currentChannel);
-            System.out.println("done.");
-            Thread.sleep(3000);
-            System.out.println("INPUT INFORMATION");
-            System.out.println("-----------------");
-            System.out.println("Total length   (ms) :\t" + jvlc.input.getLength());
-            System.out.println("Input time     (ms) :\t" + jvlc.input.getTime());
-            System.out.println("Input position [0-1]:\t" + jvlc.input.getPosition());
-            if (videoInput)
-                System.out.println("Input FPS          :\t" + jvlc.input.getFPS());
+                System.out.println("Media instance played. MRL: " + mediaInstance.getMediaDescriptor().getMrl());
+            }
 
-        }
+            @Override
+            public void positionChanged(MediaInstance mediaInstance)
+            {
+                // TODO Auto-generated method stub
+            }
 
-        catch (Exception e)
-        {
-            System.out.println("Something was wrong. I die :(.");
-            jvlc.destroy();
-            e.printStackTrace();
-            System.exit(0);
-        }
+            @Override
+            public void timeChanged(MediaInstance mediaInstance, long newTime)
+            {
+                System.out.println("new time: " + newTime);
+            }
+        });
+        mediaInstance.play();
+        
+        // MediaInstance mediaInstance = playlist.getMediaInstance();
+        //        
+        // while (! mediaInstance. playlist.isPlaying())
+        // {
+        // Thread.sleep(100);
+        // }
+        // while (! jvlc.hasVout() )
+        // {
+        // Thread.sleep(100);
+        // }
 
-        System.out.println("Everything fine ;)");
-        System.out.println("Playing next item");
+        // testing vout functionalities
+        // Thread.sleep(2500);
+        // if (jvlc.hasVout())
+        // {
+        // videoInput = true;
+        // }
+        //        
+        // if (videoInput)
+        // {
         try
         {
-            jvlc.playlist.next();
+            Video video = new Video(jvlc);
+            System.out.print(video.getWidth(mediaInstance));
+            System.out.print("x");
+            System.out.println(video.getHeight(mediaInstance));
+            System.out.print("Fullscreen... ");
+            video.setFullscreen(mediaInstance, true);
+            Thread.sleep(3000);
+            System.out.println("real size.");
+            video.setFullscreen(mediaInstance, false);
+            System.out.print("Taking snapshot... ");
+            video.getSnapshot(mediaInstance, System.getProperty("user.dir") + "/snap.png", 0, 0);
+            System.out.println("taken. (see " + System.getProperty("user.dir") + "/snap.png )");
+            Thread.sleep(2000);
+            System.out.println("Resizing to 300x300");
+            video.setSize(300, 300);
         }
         catch (VLCException e)
         {
             e.printStackTrace();
         }
 
-        Thread.sleep(3000);
+        // System.out.print("Muting...");
+        // jvlc.audio.setMute(true);
+        // Thread.sleep(3000);
+        // System.out.println("unmuting.");
+        // jvlc.audio.setMute(false);
+        // Thread.sleep(3000);
+        // System.out.println("Volume is: " + jvlc.audio.getVolume());
+        // System.out.print("Setting volume to 150... ");
+        // jvlc.audio.setVolume(150);
+        // System.out.println("done");
+        // System.out.println("== AUDIO INFO ==");
+        // int currentChannel = jvlc.audio.getChannel();
+        // System.out.println("Audio track number: " + jvlc.audio.getTrack());
+        // System.out.println("Audio channel info: " + jvlc.audio.getChannel());
+        // System.out.print("Setting left channel... ");
+        // jvlc.audio.setChannel(AudioIntf.LEFT_CHANNEL);
+        // System.out.println("done.");
+        // Thread.sleep(3000);
+        // System.out.print("Setting right channel... ");
+        // jvlc.audio.setChannel(AudioIntf.RIGHT_CHANNEL);
+        // System.out.println("done.");
+        // Thread.sleep(3000);
+        // System.out.print("Reverting to original channel");
+        // jvlc.audio.setChannel(currentChannel);
+        // System.out.println("done.");
+        // Thread.sleep(3000);
+        // System.out.println("INPUT INFORMATION");
+        // System.out.println("-----------------");
+        // System.out.println("Total length (ms) :\t" + jvlc.input.getLength());
+        // System.out.println("Input time (ms) :\t" + jvlc.input.getTime());
+        // System.out.println("Input position [0-1]:\t" + jvlc.input.getPosition());
+        // if (videoInput)
+        // System.out.println("Input FPS :\t" + jvlc.input.getFPS());
+        //
+        // }
+        //
+        // catch (Exception e)
+        // {
+        // System.out.println("Something was wrong. I die :(.");
+        // jvlc.destroy();
+        // e.printStackTrace();
+        // System.exit(0);
+        // }
+
+        System.out.println("Everything fine ;)");
+        System.out.println("Playing next item");
+        // try
+        // {
+        // jvlc.playlist.next();
+        // }
+        // catch (VLCException e)
+        // {
+        // e.printStackTrace();
+        // }
+        //
+        // Thread.sleep(3000);
 
-        jvlc.destroy();
+        // jvlc.destroy();
         return;
     }
 }
index 7d600ff..a1b6692 100644 (file)
  * 
  */
 
+import java.awt.Canvas;
 import java.awt.Frame;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 
-import org.videolan.jvlc.JVLCPanel;
+import javax.swing.JPanel;
+
 import org.videolan.jvlc.JVLC;
+import org.videolan.jvlc.Playlist;
 import org.videolan.jvlc.VLCException;
 
-class VLCPlayerFrame  extends Frame {
-    public VLCPlayerFrame() {
+
+class VLCPlayerFrame extends Frame
+{
+
+    private Playlist playlist;
+
+    public Canvas jvcanvas;
+
+    public VLCPlayerFrame()
+    {
         initComponents();
     }
-    
-    private void initComponents() {
 
-        java.awt.GridBagConstraints gridBagConstraints;        
+    private void initComponents()
+    {
 
-        fullScreenButton    = new javax.swing.JButton();
-        jTextField1         = new javax.swing.JTextField();
-        setButton           = new javax.swing.JButton();
-        pauseButton         = new javax.swing.JButton();
-        stopButton          = new javax.swing.JButton();
+        java.awt.GridBagConstraints gridBagConstraints;
 
-        jvcc   = new JVLCPanel();
-        jvlc = jvcc.getJVLCObject();
+        fullScreenButton = new javax.swing.JButton();
+        jTextField1 = new javax.swing.JTextField();
+        setButton = new javax.swing.JButton();
+        pauseButton = new javax.swing.JButton();
+        stopButton = new javax.swing.JButton();
+
+        jvcc = new JPanel();
+        jvcanvas = new java.awt.Canvas();
+        jvcanvas.setSize(200, 200);
+        jvcc.add(jvcanvas);
+        
+        jvlc = new JVLC();
+        
+        playlist = new Playlist(jvlc);
 
         setLayout(new java.awt.GridBagLayout());
 
@@ -55,11 +73,14 @@ class VLCPlayerFrame  extends Frame {
         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.CENTER;
         gridBagConstraints.gridx = 0;
         gridBagConstraints.gridy = 0;
-        add( jvcc , gridBagConstraints);
-        
+        add(jvcc, gridBagConstraints);
+
         fullScreenButton.setText("FullScreen");
-        fullScreenButton.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
+        fullScreenButton.addActionListener(new java.awt.event.ActionListener()
+        {
+
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 fullScreenButtonActionPerformed(evt);
             }
         });
@@ -68,8 +89,7 @@ class VLCPlayerFrame  extends Frame {
         gridBagConstraints.gridx = 0;
         gridBagConstraints.gridy = 2;
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-        add( fullScreenButton, gridBagConstraints);
-
+        add(fullScreenButton, gridBagConstraints);
 
         jTextField1.setText("file://a.avi");
         gridBagConstraints = new java.awt.GridBagConstraints();
@@ -79,10 +99,12 @@ class VLCPlayerFrame  extends Frame {
         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
         add(jTextField1, gridBagConstraints);
 
-
         setButton.setText("Set item");
-        setButton.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
+        setButton.addActionListener(new java.awt.event.ActionListener()
+        {
+
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 setButtonActionPerformed(evt);
             }
         });
@@ -92,10 +114,12 @@ class VLCPlayerFrame  extends Frame {
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
         add(setButton, gridBagConstraints);
 
-
         pauseButton.setText("Play/Pause");
-        pauseButton.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
+        pauseButton.addActionListener(new java.awt.event.ActionListener()
+        {
+
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 pauseButtonActionPerformed(evt);
             }
         });
@@ -106,8 +130,11 @@ class VLCPlayerFrame  extends Frame {
         add(pauseButton, gridBagConstraints);
 
         stopButton.setText("Stop");
-        stopButton.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
+        stopButton.addActionListener(new java.awt.event.ActionListener()
+        {
+
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 stopButtonActionPerformed(evt);
             }
         });
@@ -116,67 +143,89 @@ class VLCPlayerFrame  extends Frame {
         gridBagConstraints.gridy = 2;
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
         add(stopButton, gridBagConstraints);
-      
+
         pack();
-       
-        
-        
+
     }
 
-    private void stopButtonActionPerformed(java.awt.event.ActionEvent evt) {
-        try {
-            //mci.stop(new Position(10000, PositionOrigin.ABSOLUTE, PositionKey.MEDIATIME));
-           jvlc.playlist.stop();
-        } catch (Exception e) {
+    private void stopButtonActionPerformed(java.awt.event.ActionEvent evt)
+    {
+        try
+        {
+            playlist.stop();
+        }
+        catch (Exception e)
+        {
             e.printStackTrace();
-       }
+        }
     }
 
-    private void pauseButtonActionPerformed(java.awt.event.ActionEvent evt) {
-        try {
-            //System.out.println(mci.getMediaPosition(PositionOrigin.ABSOLUTE, PositionKey.BYTECOUNT));
-           jvlc.playlist.togglePause();
-        } catch (Exception e) {
+    private void pauseButtonActionPerformed(java.awt.event.ActionEvent evt)
+    {
+        try
+        {
+            playlist.togglePause();
+        }
+        catch (Exception e)
+        {
             e.printStackTrace();
-       }
+        }
     }
 
-    private void setButtonActionPerformed(java.awt.event.ActionEvent evt) {
-        try {
-                       jvlc.playlist.add("file://a.avi", "a.avi");
-                       jvlc.playlist.play(-1, null);
-               } catch (VLCException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               }
+    private void setButtonActionPerformed(java.awt.event.ActionEvent evt)
+    {
+        try
+        {
+            jvlc.setVideoOutput(jvcanvas);
+            playlist.add(jTextField1.getText(), "a.avi");
+            playlist.play();
+        }
+        catch (VLCException e)
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
     }
 
-    private void fullScreenButtonActionPerformed(java.awt.event.ActionEvent evt) {
-        //jvlc.fullScreen();
+    private void fullScreenButtonActionPerformed(java.awt.event.ActionEvent evt)
+    {
+        // jvlc.fullScreen();
     }
-    
+
     private javax.swing.JButton setButton;
+
     private javax.swing.JButton pauseButton;
+
     private javax.swing.JButton stopButton;
+
     private javax.swing.JButton fullScreenButton;
+
     private javax.swing.JTextField jTextField1;
-    private JVLCPanel jvcc;
+
+    private JPanel jvcc;
+
     public JVLC jvlc;
-    //MediaControlInstance mci;
-    
+    // MediaControlInstance mci;
+
 }
 
 
-public class VlcClient {
+public class VlcClient
+{
+
+    public static void main(String[] args)
+    {
+        Frame f = new VLCPlayerFrame();
+        f.setBounds(0, 0, 500, 500);
+        f.addWindowListener(new WindowAdapter()
+        {
 
-    public static void main(String[] args) {
-       Frame f = new  VLCPlayerFrame();
-       f.setBounds(0, 0, 500, 500);
-       f.addWindowListener( new WindowAdapter() {
-               public void windowClosing(WindowEvent ev) {
-                   System.exit(0);
-               }
-           } );
-       f.setVisible(true);
+            @Override
+            public void windowClosing(WindowEvent ev)
+            {
+                System.exit(0);
+            }
+        });
+        f.setVisible(true);
     }
 }
diff --git a/org/videolan/jvlc/Audio.java b/org/videolan/jvlc/Audio.java
deleted file mode 100644 (file)
index f94e218..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-package org.videolan.jvlc;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.videolan.jvlc.listener.VolumeListener;
-
-public class Audio implements AudioIntf {
-
-       private long libvlcInstance;
-
-       private native int _getTrack();
-
-       private native void _setTrack(int track);
-
-       private native int _getChannel();
-
-       private native void _setChannel(int channel);
-
-       private native boolean _getMute();
-
-       private native void _setMute(boolean value);
-
-       private native void _toggleMute();
-
-       private native int _getVolume();
-
-       private native void _setVolume(int volume);
-
-       private native void _install_callback();
-
-       private static Map objListeners = new HashMap();
-
-       public Audio(long instance) {
-               this.libvlcInstance = instance;
-               install_callaback();
-       }
-
-       private void install_callaback() {
-               objListeners.put(this, new HashSet());
-               _install_callback();
-       }
-
-       public int getTrack() throws VLCException {
-               return _getTrack();
-       }
-
-       public void setTrack(int track) throws VLCException {
-               _setTrack(track);
-       }
-
-       public int getChannel() throws VLCException {
-               return _getChannel();
-       }
-
-       public void setChannel(int channel) throws VLCException {
-               _setChannel(channel);
-       }
-
-       public boolean getMute() throws VLCException {
-               return _getMute();
-       }
-
-       public void setMute(boolean value) throws VLCException {
-               _setMute(value);
-
-       }
-
-       public void toggleMute() throws VLCException {
-               _toggleMute();
-       }
-
-       public int getVolume() throws VLCException {
-               return _getVolume();
-       }
-
-       public void setVolume(int volume) throws VLCException {
-               _setVolume(volume);
-       }
-
-       public boolean addVolumeListener(VolumeListener listener) {
-               HashSet listeners = (HashSet) objListeners.get(this);
-               return listeners.add(listener);
-       }
-
-       public boolean removeVolumeListener(VolumeListener listener) {
-               HashSet listeners = (HashSet) objListeners.get(this);
-               return listeners.remove(listener);
-       }
-
-       // this method is invoked natively
-       private static void wakeupListeners() {
-               Set audioObjects = objListeners.keySet();
-               Iterator audioObjectsIterator = audioObjects.iterator();
-               
-               while (audioObjectsIterator.hasNext()) {
-                       Audio audioObject = (Audio) audioObjectsIterator.next();
-                       HashSet listeners = (HashSet) objListeners.get(audioObject);
-
-                       Iterator listenerIterator = listeners.iterator();
-                       while (listenerIterator.hasNext()) {
-                               VolumeListener listener = (VolumeListener) listenerIterator.next();
-                               listener.volumeChanged();
-                       }
-               }
-       }
-
-       public long getInstance() {
-               return libvlcInstance;
-       }
-}
diff --git a/org/videolan/jvlc/AudioIntf.java b/org/videolan/jvlc/AudioIntf.java
deleted file mode 100644 (file)
index 1d11923..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*****************************************************************************
- * AudioIntf.java: Audio methods interface
- *****************************************************************************
- *
- * Copyright (C) 1998-2006 the VideoLAN team
- * 
- * Author: Filippo Carone <filippo@carone.org>
- *
- * Created on 28-feb-2006
- * 
- * $Id$
- * 
- *
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- * 
- */
-
-package org.videolan.jvlc;
-
-public interface AudioIntf {
-       
-       
-       /**
-        * Constant for left channel audio 
-        */
-       final int LEFT_CHANNEL          = 3;
-       
-       /**
-        * Constant for right channel audio 
-        */
-       final int RIGHT_CHANNEL         = 4;
-
-       /**
-        * Constant for reverse channel audio 
-        */
-       final int REVERSE_CHANNEL       = 2;
-       /**
-        * Constant for stereo channel audio 
-        */
-       final int STEREO_CHANNEL        = 1;
-       /**
-        * Constant for dolby channel audio 
-        */
-       final int DOLBY_CHANNEL         = 5;
-
-       /**
-        * @return audio track
-        * @throws VLCException
-        */
-       int getTrack() throws VLCException;
-
-       /**
-        * @param audio track
-        * @throws VLCException
-        */
-       void setTrack(int track) throws VLCException;
-
-       /**
-        * @return channel
-        * @throws VLCException
-        */
-       int getChannel() throws VLCException;
-
-       /**
-        * @param channel
-        * @throws VLCException
-        */
-       void setChannel(int channel) throws VLCException;
-
-
-    /**
-     * @return True if input is currently muted.
-     * @throws VLCException
-     */
-    boolean getMute() throws VLCException;
-    
-    /**
-     * @param value If true, then the input is muted.
-     * @throws VLCException
-     */
-    void setMute(boolean value) throws VLCException;
-
-    /**
-     * Toggles mute
-     * @throws VLCException
-     */
-    void toggleMute() throws VLCException;
-
-    /**
-     * @return The volume level
-     * @throws VLCException
-     */
-    int getVolume() throws VLCException;
-
-    /**
-     * @param volume The volume level (0-200) to set.
-     * @throws VLCException
-     */
-    void setVolume(int volume) throws VLCException;
-}
diff --git a/org/videolan/jvlc/EventManager.java b/org/videolan/jvlc/EventManager.java
deleted file mode 100644 (file)
index b04ac93..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*****************************************************************************
- * EventManager.java: VLC Java Bindings
- *****************************************************************************
- * Copyright (C) 1998-2007 the VideoLAN team
- *
- * Authors: Filippo Carone <filippo@carone.org>
- *
- *
- * $Id $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-package org.videolan.jvlc;
-
-
-public class EventManager
-{
-
-}
diff --git a/org/videolan/jvlc/GenericVideoWidget.java b/org/videolan/jvlc/GenericVideoWidget.java
deleted file mode 100644 (file)
index ff23f3a..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*****************************************************************************
- * SWTVideoWidget.java: A component usable in SWT Application, embeds JVLC
- *****************************************************************************
- *
- * Copyright (C) 1998-2006 the VideoLAN team
- * 
- * Author: Kuldipsingh Pabla <Kuldipsingh.Pabla@sun.com>
- * 
- * Created on 10-jun-2006
- *
- * $Id $
- *
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- * 
- */
-
-
-package org.videolan.jvlc;
-import java.awt.Frame;
-import java.awt.Component;
-
-
-public class GenericVideoWidget {
-    /*
-     * This class implements a Composite container for VLC Video Output
-     */
-
-    /*
-     * The root SWT Frame we embed JVLCCanvas in
-     */
-    public Frame rootFrame;
-    private JVLCCanvas jvlcCanvas;
-    
-    public GenericVideoWidget( Component parent ) {
-       // allocate the new AWT Frame to embed in the Composite
-       rootFrame = new Frame ();
-
-       // add the JVLCCanvas to the Frame
-       jvlcCanvas = new JVLCCanvas();
-       rootFrame.add( jvlcCanvas );
-    }
-    
-    
-       public JVLC getJVLC() {
-               return jvlcCanvas.getJVLC();
-       }
-}
diff --git a/org/videolan/jvlc/Input.java b/org/videolan/jvlc/Input.java
deleted file mode 100644 (file)
index 7b71231..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.videolan.jvlc;
-
-public class Input implements InputIntf {
-       
-    private long libvlcInstance;
-
-       /*
-     *  Input native methods
-     */
-    private native long     _getLength();
-    private native float    _getPosition();
-    private native long     _getTime();
-    private native float       _getFPS();
-    private native void                _setTime(long value);
-    private native void                _setPosition(float value);
-    private native boolean  _isPlaying();
-    private native boolean  _hasVout() throws VLCException;
-
-    
-    public Input( long instance ) {
-       this.libvlcInstance = instance;
-    }
-
-       public long getLength() throws VLCException {
-        return _getLength();        
-    }
-
-    public long getTime() throws VLCException {
-        return _getTime();
-    }
-
-    public float getPosition() throws VLCException {
-        return _getPosition();
-        
-    }
-
-    public void setTime(long time) throws VLCException {
-       _setTime(time);
-    }
-
-    public void setPosition(float position) throws VLCException {
-       _setPosition(position);
-    }
-
-    public double getFPS() throws VLCException {
-        return _getFPS();
-    }
-    
-    public boolean isPlaying() throws VLCException {
-        return _isPlaying();
-    }
-
-    public boolean hasVout() throws VLCException {
-       return _hasVout();
-    }
-    
-       public long getInstance() {
-               return libvlcInstance;
-       }
-
-}
diff --git a/org/videolan/jvlc/InputIntf.java b/org/videolan/jvlc/InputIntf.java
deleted file mode 100644 (file)
index 7477a63..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*****************************************************************************
- * InputIntf.java: Input interface
- *****************************************************************************
- *
- * Copyright (C) 1998-2006 the VideoLAN team
- * 
- * Author: Filippo Carone <filippo@carone.org>
- * 
- * Created on 28-feb-2006
- *
- * $Id$
- *
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- * 
- */
-
-
-package org.videolan.jvlc;
-
-/**
- * @author little
- *
- */
-public interface InputIntf {
-    
-    /**
-     * @return The total length of the current file playing in millis.
-     * @throws VLCException
-     */
-    long getLength() throws VLCException;
-
-    /**
-     * @return The current position in millis within the playing item.
-     * @throws VLCException
-     */
-    long getTime() throws VLCException;
-    
-    /**
-     * @return The position in %.
-     * @throws VLCException
-     */
-    float getPosition() throws VLCException;
-    
-    /**
-     * Moves current input to position specified in a float [0-1].
-     * @param value The position, from 0 to 1, to move the input to.
-     * @throws VLCException
-     */
-    void setPosition( float value ) throws VLCException;
-    
-    /**
-     * Moves current input to time specified in value
-     * @param value The time in milliseconds to move the input to.
-     * @throws VLCException
-     */
-    void setTime(long value) throws VLCException;
-    
-    
-    /**
-     * @return If the playing item is a video file, returns the FPS, otherwise 0.
-     * @throws VLCException
-     */
-    double getFPS() throws VLCException;
-    
-    
-    /**
-     * @return True if the current input is really playing
-     */
-    boolean isPlaying() throws VLCException;
-    
-    /**
-     * @return True if the current input has spawned a video output window
-     */
-    boolean hasVout() throws VLCException;
-}
diff --git a/org/videolan/jvlc/JLibVLC.java b/org/videolan/jvlc/JLibVLC.java
deleted file mode 100644 (file)
index 00f8137..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*****************************************************************************
- * JLibVLC.java: Main library interface
- *****************************************************************************
- *
- * Copyright (C) 1998-2006 the VideoLAN team
- * 
- * Author: Filippo Carone <filippo@carone.org>
- * 
- * Created on 28-feb-2006
- *
- * $Id$
- *
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- * 
- */
-
-package org.videolan.jvlc;
-
-public interface JLibVLC extends AudioIntf, VideoIntf, InputIntf, VLMIntf { }
index 4d98133..7ffaa18 100644 (file)
@@ -2,14 +2,14 @@
  * JVLC.java: Main Java Class, represents a libvlc_instance_t object
  *****************************************************************************
  *
- * Copyright (C) 1998-2006 the VideoLAN team
+ * Copyright (C) 1998-2008 the VideoLAN team
  * 
  * Author: Filippo Carone <filippo@carone.org>
  *         Philippe Morin <phmorin@free.fr>
  *
  * Created on 28-feb-2006
  *
- * $Id$
+ * $Id: JVLC.java 20141 2007-05-16 19:31:35Z littlejohn $
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General Public License
  * 
  */
 
-
 package org.videolan.jvlc;
 
-public class JVLC implements Runnable {
-    
-    static {
-        System.loadLibrary("jvlc" );
-    }
-    
-    /**
-     * These are set as final since they live along the jvlc object
-     */
-    private final long         _instance;
-    
-    public  final Playlist     playlist;
-    public     final Video             video;
-    public     final Audio             audio;
-    public     final Input             input;
-    public     final VLM               vlm;
-    
-    private boolean beingDestroyed = false;
+import org.videolan.jvlc.internal.LibVlc;
+import org.videolan.jvlc.internal.LibVlc.LibVlcInstance;
+import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
 
-    /**
-     * This is the time in millis VLC checks for internal status 
-     */
-    private long resolution = 50;
-    
-       private boolean inputPlaying = false;
-       private boolean inputVout = false;
+import com.sun.jna.Native;
+
+import java.awt.Canvas;
+
+public class JVLC
+{
+
+    private final LibVlcInstance instance;
+
+    private final LibVlc libvlc = LibVlc.SYNC_INSTANCE;
     
-    public JVLC() {
+    public JVLC()
+    {
         String[] args = new String[1];
         args[0] = "jvlc";
-        
-        _instance      = createInstance( args );
-        playlist       = new Playlist  ( _instance );
-        video          = new Video             ( _instance );
-        audio          = new Audio             ( _instance );
-        input          = new Input             ( _instance );
-        vlm                    = new VLM               ( _instance );
-        new Thread(this).start();
+        instance = createInstance(args);
     }
-    
-    public JVLC(String[] args) {
-       String[] myargs = new String[args.length + 1];
-       myargs[0] = "jvlc";
-       System.arraycopy( args, 0, myargs, 1, args.length );
-        _instance      = createInstance( myargs );
-        playlist       = new Playlist  ( _instance );
-        video          = new Video             ( _instance );
-        audio          = new Audio             ( _instance );
-        input          = new Input             ( _instance );
-        vlm                    = new VLM               ( _instance );
-        
-        new Thread(this).start();
-    }
-    
-    
-    /**
-     * Destroys the current instance of jvlc, cleaning up objects.
-     * This is unreversible.
-     */
-    public void destroy() {
-       if (!beingDestroyed)
-       {
-               beingDestroyed = true;
-               _destroy();
-       }
+
+    public JVLC(String[] args)
+    {
+        String[] myargs = new String[args.length + 1];
+        myargs[0] = "jvlc";
+        System.arraycopy(args, 0, myargs, 1, args.length);
+        instance = createInstance(myargs);
     }
 
-       /*
-     * Core methods
-     */
-    private native long createInstance( String[] args );
-    private native void _destroy();   
+    public MediaInstance play(String media)
+    {
+        MediaDescriptor mediaDescriptor = new MediaDescriptor(this, media);
+        MediaInstance mediaInstance = new MediaInstance(mediaDescriptor);
+        mediaInstance.play();
+        return mediaInstance;
+    }
 
-    public long getInstance() throws VLCException {
-        return _instance;
+    public void setVideoOutput(Canvas canvas)
+    {
+        long drawable = Native.getComponentID(canvas);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_video_set_parent(instance, drawable, exception );
     }
 
     /*
-     * Getters and setters
+     * Core methods
      */
-       public Playlist getPlaylist() throws VLCException {
-               return playlist;
-       }
-    
-
+    private LibVlcInstance createInstance(String[] args)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_exception_init(exception);
 
-       /**
-        * Checks if the input is playing.
-        * @return True if there is a playing input.
-        */
-       public boolean isInputPlaying() {
-               return inputPlaying;
-       }
-
-       /**
-        * Checks if the input has spawned a video window.
-        * @return True if there is a video window.
-        */
-       public boolean hasVout() {
-               return inputVout;
-       }
+        return libvlc.libvlc_new(args.length, args, exception);
+    }
 
-       /*
-        * (non-Javadoc)
-        * @see java.lang.Runnable#run()
-        * 
-        * In this thread we check the playlist and input status.
-        */
-       public void run() {
-               try {
-                       while (!beingDestroyed) {
-                               try {
-                                       while (playlist.isRunning()) {
-                                               inputPlaying = input.isPlaying();
-                                               inputVout = input.hasVout();        
-                                               Thread.sleep(resolution);
-                                       } // while playlist running
-                               } catch (VLCException e) {
-                                       // it is non-sense to show the stacktrace here
-                                       // e.printStackTrace();
-                               }
-                               inputPlaying = false;
-                               inputVout = false;
-                               Thread.sleep(resolution);
-                       } // while ! being destroyed
-               } catch (InterruptedException e) {
-                       e.printStackTrace();
-               }
-       }
+    /**
+     * Returns the _instance.
+     * @return the _instance
+     */
+    LibVlcInstance getInstance()
+    {
+        return instance;
+    }
 
-       /* (non-Javadoc)
-        * @see java.lang.Object#finalize()
-        */
-       protected void finalize() throws Throwable {
-               destroy();
-               super.finalize();
-       }
+    /**
+     * Returns the libvlc.
+     * @return the libvlc
+     */
+    LibVlc getLibvlc()
+    {
+        return libvlc;
+    }
 
+    /*
+     * (non-Javadoc)
+     * @see java.lang.Object#finalize()
+     */
+    @Override
+    protected void finalize() throws Throwable
+    {
+        libvlc.libvlc_release(instance);
+        super.finalize();
+    }
 }
-
diff --git a/org/videolan/jvlc/JVLCCanvas.java b/org/videolan/jvlc/JVLCCanvas.java
deleted file mode 100644 (file)
index 13b2ca1..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*****************************************************************************
- * JVLCCanvas.java: AWT Canvas containing VLC Video Output
- *****************************************************************************
- * 
- * Copyright (C) 1998-2006 the VideoLAN team
- * 
- * Author: Filippo Carone <filippo@carone.org>
- *
- * Created on 25-nov-2005
- *
- * $Id$
- * 
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- * 
- */
-
-package org.videolan.jvlc;
-
-import java.awt.Canvas;
-import java.awt.Graphics;
-
-public class JVLCCanvas extends Canvas {
-
-       /**
-        * Serial version UID
-        */
-       private static final long serialVersionUID = -1888309778861586426L;
-
-       public void paint(Graphics g) {
-               jvlc.video.paint(g);
-       }
-
-    private final JVLC jvlc;
-    
-    /**
-     * Default constructor. The canvas is set a dimension of 200x200
-     */
-    public JVLCCanvas() {
-       super();
-        jvlc = new JVLC();
-       jvlc.video.setActualCanvas(this);
-        setSize(200, 200);
-    }
-    
-    public JVLCCanvas(String[] args) {
-       super();
-       jvlc = new JVLC(args);
-       jvlc.video.setActualCanvas(this);
-       setSize(200, 200);
-    }
-    
-    /**
-     * @param width The initial canvas width
-     * @param height The initial canvas height
-     */
-    public JVLCCanvas(int width, int height) {
-       super();
-        jvlc = new JVLC();
-       jvlc.video.setActualCanvas(this);        
-        setSize(width, height);
-    }
-    
-    public JVLCCanvas(String[] args, int width, int height) {
-       super();
-        jvlc = new JVLC(args);
-       jvlc.video.setActualCanvas(this);        
-        setSize(width, height);
-    }
-
-    public JVLCCanvas(JVLC jvlc) {
-       super();
-        this.jvlc = jvlc;
-       jvlc.video.setActualCanvas(this);        
-    }
-    
-    public JVLC getJVLC() {
-        return jvlc;
-    }
-    
-    /* (non-Javadoc)
-     * @see java.awt.Component#removeNotify()
-     */
-    public void removeNotify() {
-       super.removeNotify();
-       jvlc.destroy();
-    }
-
-}
diff --git a/org/videolan/jvlc/JVLCPanel.java b/org/videolan/jvlc/JVLCPanel.java
deleted file mode 100644 (file)
index a095c43..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*****************************************************************************
- * JVLCPanel.java: Java Swing JPanel embedding VLC Video Output
- *****************************************************************************
- *
- * Copyright (C) 1998-2006 the VideoLAN team
- * 
- * Author: Filippo Carone <filippo@carone.org>
- * 
- * Created on 28-nov-2005
- * 
- * $Id$
- * 
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- * 
- */
-
-
-package org.videolan.jvlc;
-
-import javax.swing.JPanel;
-
-public class JVLCPanel extends JPanel {
-
-    private final JVLCCanvas jvcc;
-    
-    /**
-     * Default constructor. The initial size is 200x200
-     */
-    public JVLCPanel() {
-        jvcc = new JVLCCanvas();
-        add(jvcc);        
-    }
-
-    /**
-     * @param args Arguments to initialize JVLC
-     */
-    public JVLCPanel(String[] args) 
-    {
-        jvcc = new JVLCCanvas(args);
-        add(jvcc);
-    }
-    
-    /**
-     * @param width The width of the panel
-     * @param height The height of the panel
-     */
-    public JVLCPanel(int width, int height) {
-        jvcc = new JVLCCanvas(width, height);
-        add(jvcc);        
-    }
-    
-
-    public JVLC getJVLCObject() {
-        return jvcc.getJVLC();
-    }
-    
-    public void setSize(int width, int height) {
-        super.setSize(width, height);
-        jvcc.setSize(width, height);
-    }
-
-}
index 40663eb..a248d58 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
- * MediaDescriptor.java: VLC Java Bindings
+ * MediaDescriptor.java: VLC Java Bindings Media Descriptor
  *****************************************************************************
- * Copyright (C) 1998-2007 the VideoLAN team
+ * Copyright (C) 1998-2008 the VideoLAN team
  *
  * Authors: Filippo Carone <filippo@carone.org>
  *
 
 package org.videolan.jvlc;
 
+import org.videolan.jvlc.internal.LibVlc;
+import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager;
+import org.videolan.jvlc.internal.LibVlc.LibVlcMediaDescriptor;
+import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
+
 
 public class MediaDescriptor
 {
-    private long mediaDescriptor;
+    private LibVlcMediaDescriptor instance;
+    private LibVlc libvlc;
+    private LibVlcEventManager eventManager;
     
-    public MediaDescriptor(long mediaDescriptor)
+    /**
+     * @param jvlc The jvlc instance to create the media descriptor for.
+     * @param media The media string
+     */
+    public MediaDescriptor(JVLC jvlc, String media)
     {
-        this.mediaDescriptor = mediaDescriptor;
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc = jvlc.getLibvlc();
+        instance = libvlc.libvlc_media_descriptor_new(jvlc.getInstance(), media, exception);
+        eventManager = libvlc.libvlc_media_descriptor_event_manager(instance, exception);
     }
 
+    MediaDescriptor(JVLC jvlc, LibVlcMediaDescriptor instance)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc = jvlc.getLibvlc();
+        this.instance = instance;
+        eventManager = libvlc.libvlc_media_descriptor_event_manager(instance, exception);
+    }
+
+    public void addOption(String option)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_media_descriptor_add_option(instance, option, exception );
+    }
+    
+    public String getMrl()
+    {
+        return libvlc.libvlc_media_descriptor_get_mrl(instance);
+    }
+    
+    public MediaInstance getMediaInstance()
+    {
+        return new MediaInstance(this);
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void finalize() throws Throwable
+    {
+        libvlc.libvlc_media_descriptor_release(instance);
+        super.finalize();
+    }
+
+    
+    /**
+     * Returns the instance.
+     * @return the instance
+     */
+    LibVlcMediaDescriptor getInstance()
+    {
+        return instance;
+    }
     
     /**
-     * Returns the mediaDescriptor.
-     * @return the mediaDescriptor
+     * Returns the libvlc.
+     * @return the libvlc
      */
-    public long getMediaDescriptor()
+    LibVlc getLibvlc()
     {
-        return mediaDescriptor;
+        return libvlc;
     }
 }
index 6a5ad49..d2ceee9 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
- * MediaInstance.java: VLC Java Bindings
+ * MediaInstance.java: VLC Java Bindings Media Instance
  *****************************************************************************
- * Copyright (C) 1998-2007 the VideoLAN team
+ * Copyright (C) 1998-2008 the VideoLAN team
  *
  * Authors: Filippo Carone <filippo@carone.org>
  *
 
 package org.videolan.jvlc;
 
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.List;
+
+import org.videolan.jvlc.event.MediaInstanceCallback;
+import org.videolan.jvlc.event.MediaInstanceListener;
+import org.videolan.jvlc.internal.LibVlc;
+import org.videolan.jvlc.internal.LibVlcEventType;
+import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager;
+import org.videolan.jvlc.internal.LibVlc.LibVlcMediaInstance;
+import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
+
 
 public class MediaInstance
 {
-    private long _media_instance;
-
-    private native long _new_media_instance();
-    private native long _new_from_media_descriptor(MediaDescriptor mediaDescriptor);
-    private native void _instance_release(long mediaInstance);
-    private native void _instance_retain();
-    private native void _set_media_descriptor();
-    private native MediaDescriptor _get_media_descriptor();
-    private native EventManager _event_manager();
-    private native void _play();
-    private native void _stop();
-    private native void _pause();
-    private native void _set_drawable();
-    private native long _get_length();
-    private native long _get_time();
-    private native void _set_time(long time);
-    private native float _get_position();
-    private native void _set_position(float position);
-    private native boolean _will_play();
-    private native float _get_rate();
-    private native void _set_rate(float rate);
-    private native void _get_state();
-    private native boolean _has_vout();
-    private native float _get_fps();
-    
-    public MediaInstance()
-    {
-        this._media_instance = _new_media_instance();
-    }
-    
-    public MediaInstance(MediaDescriptor mediaDescriptor)
-    {
-        this._media_instance = _new_from_media_descriptor(mediaDescriptor);
-    }
-    
-    public MediaDescriptor getMediaDescriptor()
+
+    private final LibVlcMediaInstance instance;
+
+    private final LibVlc libvlc;
+
+    private final LibVlcEventManager eventManager;
+
+    private List<MediaInstanceCallback> callbacks = new ArrayList<MediaInstanceCallback>();
+
+    private MediaDescriptor mediaDescriptor;
+
+    MediaInstance(JVLC jvlc, LibVlcMediaInstance instance)
     {
-        return _get_media_descriptor();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        this.instance = instance;
+        libvlc = jvlc.getLibvlc();
+        eventManager = libvlc.libvlc_media_instance_event_manager(instance, exception);
     }
-    
-    public void setMediaDescriptor(MediaDescriptor mediaDescriptor)
+
+    public MediaInstance(MediaDescriptor mediaDescriptor)
     {
-        _new_from_media_descriptor(mediaDescriptor);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc = mediaDescriptor.getLibvlc();
+        instance = libvlc.libvlc_media_instance_new_from_media_descriptor(mediaDescriptor.getInstance(), exception);
+        eventManager = libvlc.libvlc_media_instance_event_manager(instance, exception);
+        this.mediaDescriptor = mediaDescriptor;
     }
-    
-    public EventManager getEventManager()
+
+    public MediaDescriptor getMediaDescriptor()
     {
-        return _event_manager();
+        return mediaDescriptor;
     }
-    
+
     public void play()
     {
-        _play();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_media_instance_play(instance, exception);
     }
-    
+
     public void stop()
     {
-        _stop();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_media_instance_stop(instance, exception);
     }
-    
+
     public void pause()
     {
-        _pause();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_media_instance_pause(instance, exception);
     }
 
     public long getLength()
     {
-        return _get_length();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return libvlc.libvlc_media_instance_get_length(instance, exception);
     }
-    
+
     public long getTime()
     {
-        return _get_time();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return libvlc.libvlc_media_instance_get_time(instance, exception);
     }
-    
+
     public void setTime(long time)
     {
-        _set_time(time);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_media_instance_set_time(instance, time, exception);
     }
-    
+
     public float getPosition()
     {
-        return _get_position();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return libvlc.libvlc_media_instance_get_position(instance, exception);
     }
-    
+
     public void setPosition(float position)
     {
-        _set_position(position);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_media_instance_set_position(instance, position, exception);
     }
-    
+
     public boolean willPlay()
     {
-        return _will_play();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return (libvlc.libvlc_media_instance_will_play(instance, exception) == 1);
     }
-    
+
     public float getRate()
     {
-        return _get_rate();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return libvlc.libvlc_media_instance_get_rate(instance, exception);
     }
-    
+
     public void setRate(float rate)
     {
-        _set_rate(rate);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_media_instance_set_rate(instance, rate, exception);
     }
-    
+
     public boolean hasVideoOutput()
     {
-        return _has_vout();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return (libvlc.libvlc_media_instance_has_vout(instance, exception) == 1);
     }
-    
+
     public float getFPS()
     {
-        return _get_fps();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return libvlc.libvlc_media_instance_get_fps(instance, exception);
     }
-    
+
+    public void addListener(final MediaInstanceListener listener)
+    {
+        MediaInstanceCallback callback = new MediaInstanceCallback(this, listener);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        for (LibVlcEventType event : EnumSet.range(
+            LibVlcEventType.libvlc_MediaInstancePlayed,
+            LibVlcEventType.libvlc_MediaInstanceTimeChanged))
+        {
+            libvlc.libvlc_event_attach(eventManager, event.ordinal(), callback, null, exception);
+        }
+        callbacks.add(callback);
+    }
+
     /**
      * {@inheritDoc}
      */
     @Override
     protected void finalize() throws Throwable
     {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        for (MediaInstanceCallback callback : callbacks)
+        {
+            for (LibVlcEventType event : EnumSet.range(
+                LibVlcEventType.libvlc_MediaInstancePlayed,
+                LibVlcEventType.libvlc_MediaInstancePositionChanged))
+            {
+                libvlc.libvlc_event_detach(eventManager, event.ordinal(), callback, null, exception);
+            }
+        }
+        libvlc.libvlc_media_instance_release(instance);
         super.finalize();
-        _instance_release(_media_instance);
     }
-    
-    
-    
-    
+
+    /**
+     * Returns the instance.
+     * @return the instance
+     */
+    LibVlcMediaInstance getInstance()
+    {
+        return instance;
+    }
+
 }
diff --git a/org/videolan/jvlc/MediaList.java b/org/videolan/jvlc/MediaList.java
new file mode 100644 (file)
index 0000000..bef31c4
--- /dev/null
@@ -0,0 +1,115 @@
+/*****************************************************************************
+ * MediaList.java: VLC Java Bindings, MediaList
+ *****************************************************************************
+ * Copyright (C) 1998-2008 the VideoLAN team
+ *
+ * Authors: Filippo Carone <filippo@carone.org>
+ *
+ *
+ * $Id $
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+package org.videolan.jvlc;
+
+import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager;
+import org.videolan.jvlc.internal.LibVlc.LibVlcMediaDescriptor;
+import org.videolan.jvlc.internal.LibVlc.LibVlcMediaList;
+import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
+
+
+public class MediaList
+{
+
+    private final JVLC jvlc;
+
+    private final LibVlcMediaList instance;
+
+    private final LibVlcEventManager eventManager;
+
+    public MediaList(JVLC jvlc)
+    {
+        this.jvlc = jvlc;
+        libvlc_exception_t exception = new libvlc_exception_t();
+        instance = jvlc.getLibvlc().libvlc_media_list_new(jvlc.getInstance(), exception);
+        eventManager = jvlc.getLibvlc().libvlc_media_list_event_manager(instance, exception);
+    }
+
+    public void addMedia(String media)
+    {
+        MediaDescriptor descriptor = new MediaDescriptor(jvlc, media);
+        addMediaDescriptor(descriptor);
+    }
+
+    public void addMediaDescriptor(MediaDescriptor descriptor)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        jvlc.getLibvlc().libvlc_media_list_add_media_descriptor(instance, descriptor.getInstance(), exception);
+    }
+
+    public int itemsCount()
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return jvlc.getLibvlc().libvlc_media_list_count(instance, exception);
+    }
+
+    public int indexOf(MediaDescriptor descriptor)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return jvlc.getLibvlc().libvlc_media_list_index_of_item(instance, descriptor.getInstance(), exception);
+    }
+
+    public MediaDescriptor getMediaDescriptorAtIndex(int index)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaDescriptor descriptor = jvlc.getLibvlc().libvlc_media_list_item_at_index(instance, index, exception);
+        return new MediaDescriptor(jvlc, descriptor);
+    }
+
+    public void remove(int index)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        jvlc.getLibvlc().libvlc_media_list_remove_index(instance, index, exception);
+    }
+
+    public void insertMediaDescriptor(MediaDescriptor descriptor, int index)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        jvlc
+            .getLibvlc()
+            .libvlc_media_list_insert_media_descriptor(instance, descriptor.getInstance(), index, exception);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void finalize() throws Throwable
+    {
+        jvlc.getLibvlc().libvlc_media_list_release(instance);
+        super.finalize();
+    }
+
+    /**
+     * Returns the instance.
+     * @return the instance
+     */
+    LibVlcMediaList getInstance()
+    {
+        return instance;
+    }
+
+}
diff --git a/org/videolan/jvlc/MediaListPlayer.java b/org/videolan/jvlc/MediaListPlayer.java
new file mode 100644 (file)
index 0000000..28bda15
--- /dev/null
@@ -0,0 +1,105 @@
+/*****************************************************************************
+ * MediaListPlayer.java: VLC Java Bindings, MediaList player
+ *****************************************************************************
+ * Copyright (C) 1998-2008 the VideoLAN team
+ *
+ * Authors: Filippo Carone <filippo@carone.org>
+ *
+ *
+ * $Id $
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+package org.videolan.jvlc;
+
+import org.videolan.jvlc.internal.LibVlc.LibVlcMediaListPlayer;
+import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
+
+
+public class MediaListPlayer
+{
+
+    private final LibVlcMediaListPlayer instance;
+
+    private final JVLC jvlc;
+
+    public MediaListPlayer(JVLC jvlc)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        this.jvlc = jvlc;
+        instance = jvlc.getLibvlc().libvlc_media_list_player_new(jvlc.getInstance(), exception);
+    }
+
+    public void setMediaList(MediaList list)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        jvlc.getLibvlc().libvlc_media_list_player_set_media_list(instance, list.getInstance(), exception);
+    }
+
+    public boolean isPlaying()
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return jvlc.getLibvlc().libvlc_media_list_player_is_playing(instance, exception) == 1;
+    }
+
+    public void play()
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        jvlc.getLibvlc().libvlc_media_list_player_play(instance, exception);
+    }
+
+    public void stop()
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        jvlc.getLibvlc().libvlc_media_list_player_stop(instance, exception);
+    }
+
+    public void pause()
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        jvlc.getLibvlc().libvlc_media_list_player_pause(instance, exception);
+    }
+
+    
+    public void playItem(MediaDescriptor descriptor)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        jvlc.getLibvlc().libvlc_media_list_player_play_item(instance, descriptor.getInstance(), exception);
+    }
+
+    public void playItem(int index)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        jvlc.getLibvlc().libvlc_media_list_player_play_item_at_index(instance, index, exception);
+    }
+    
+    public void setMediaInstance(MediaInstance mediaInstance)
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        jvlc.getLibvlc().libvlc_media_list_player_set_media_instance(instance, mediaInstance.getInstance(), exception);        
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void finalize() throws Throwable
+    {
+        jvlc.getLibvlc().libvlc_media_list_player_release(instance);
+        super.finalize();
+    }
+
+}
index 8262643..820e50d 100644 (file)
@@ -2,13 +2,13 @@
  * Playlist.java: PlaylistIntf implementation class
  *****************************************************************************
  *
- * Copyright (C) 1998-2006 the VideoLAN team
+ * Copyright (C) 1998-2008 the VideoLAN team
  * 
  * Author: Filippo Carone <filippo@carone.org>
  *
  * Created on 28-feb-2006
  *
- * $Id$
+ * $Id: Playlist.java 17089 2006-10-15 10:54:15Z littlejohn $
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General Public License
 
 package org.videolan.jvlc;
 
-public class Playlist implements PlaylistIntf {
+import org.videolan.jvlc.internal.LibVlc;
+import org.videolan.jvlc.internal.LibVlc.LibVlcInstance;
+import org.videolan.jvlc.internal.LibVlc.LibVlcMediaInstance;
+import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
+
+public class Playlist {
     
     
-    private long libvlcInstance;
+    private final LibVlcInstance libvlcInstance;
+    private final LibVlc libvlc;
+    private final JVLC jvlc;
 
-    public Playlist(long _libvlcInstance) {
-        this.libvlcInstance = _libvlcInstance;
+    public Playlist(JVLC jvlc) {
+        this.jvlc = jvlc;
+        this.libvlcInstance = jvlc.getInstance();
+        this.libvlc = jvlc.getLibvlc();
     }
     
-    native private int _playlist_add(String uri, String name, String[] options);
-    native private void _play(int _id, String[] options);
-    native private void _pause();
-    native private void _stop();
-    native private void _next();
-    native private void _prev();
-    native private void _clear();
-    native private void _deleteItem(int itemID);
-    
-    native private int _itemsCount();
-    native private int _isRunning();
-    native private void _setLoop(boolean loop);
-
-
     public synchronized void play(int id, String[] options) throws VLCException {
-        _play(id, options);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_playlist_play(libvlcInstance, id, options.length, options, exception);
     }
 
     public synchronized void play() throws VLCException {
-        play(-1, null);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_playlist_play(libvlcInstance, -1, 0, new String[] {}, exception);
     }
 
     public synchronized void togglePause() throws VLCException {
-        _pause();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_playlist_pause(libvlcInstance, exception);
     }
 
     public synchronized void stop() throws VLCException {
-        _stop();
-//        do {
-//             try {
-//                             Thread.sleep(50);
-//                     } catch (InterruptedException e) {
-//                             e.printStackTrace();
-//                     }
-//        } while (isRunning());
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_playlist_stop(libvlcInstance, exception);
     }
 
     public boolean isRunning() throws VLCException {
-         return (_isRunning() == 0)? false : true ;
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return libvlc.libvlc_playlist_isplaying(libvlcInstance, exception) == 0? false : true;
     }
 
     public synchronized int itemsCount() throws VLCException {
-        return _itemsCount();
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return libvlc.libvlc_playlist_items_count(libvlcInstance, exception);
     }
 
     public synchronized void next() throws VLCException {
+        libvlc_exception_t exception = new libvlc_exception_t();
         if (! isRunning())
             play();
-        _next();
+        libvlc.libvlc_playlist_next(libvlcInstance, exception);
     }
 
     public synchronized void prev() throws VLCException {
+        libvlc_exception_t exception = new libvlc_exception_t();
         if (! isRunning())
             play();
-        _prev();
+        libvlc.libvlc_playlist_prev(libvlcInstance, exception);
     }
 
     public synchronized void clear() throws VLCException {
-       _clear();
-    }
-
-    public synchronized int add(String uri, String name, String[] options) throws VLCException {
-        return _playlist_add(uri, name, options);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_playlist_clear(libvlcInstance, exception);
     }
     
     public synchronized int add(String uri, String name) throws VLCException {
-        return add(uri, name, null);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return libvlc.libvlc_playlist_add(libvlcInstance, uri, name, exception);
     }
 
-    public synchronized void addExtended() {
-    }
 
     public synchronized void deleteItem(int itemID) throws VLCException {
-        _deleteItem(itemID);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_playlist_delete_item(libvlcInstance, itemID, exception);
     }
     
     public synchronized void setLoop(boolean loop) {
-       _setLoop(loop);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_playlist_loop(libvlcInstance, loop? 1 : 0, exception);
     }
     
-    public long getInstance() throws VLCException {
-        return libvlcInstance;
+    public MediaInstance getMediaInstance()
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaInstance mi = libvlc.libvlc_playlist_get_media_instance(libvlcInstance, exception);
+        return new MediaInstance(jvlc, mi);
+        
     }
-
-       public void setPause(boolean pause) throws VLCException {
-               // TODO Auto-generated method stub              
-       }
-
 }
diff --git a/org/videolan/jvlc/PlaylistIntf.java b/org/videolan/jvlc/PlaylistIntf.java
deleted file mode 100644 (file)
index 46dad03..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*****************************************************************************
- * PlaylistIntf.java: The playlist interface
- *****************************************************************************
- *
- * Copyright (C) 1998-2006 the VideoLAN team
- * 
- * Author: Filippo Carone <filippo@carone.org>
- *
- * Created on 28-feb-2006
- *
- * $Id$
- *
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- * 
- */
-
-
-package org.videolan.jvlc;
-
-public interface PlaylistIntf {
-
-       /**
-        * Plays the item specified in id, with options. At the moment options
-        * has no effect and can be safely set to null.
-     * @param id The ID to play
-     * @param options Options to play the item with
-     */
-    void play(int id, String[] options) throws VLCException;
-    
-    /**
-     * Plays the current item in the playlist.
-     */
-    void play() throws VLCException;
-    
-    /**
-     * Toggles pause for the current item.
-     */
-    void togglePause() throws VLCException;
-    
-    
-    /**
-     * Pauses the currently playing item if pause value is true. Plays it
-     * otherwise. If you set pause to true and the current item is already
-     * playing, this has no effect.
-     * 
-     * @param pause
-     * @throws VLCException
-     */
-    void setPause(boolean pause) throws VLCException;
-    
-    /**
-     * Stops the currently playing item. Differently from pause, stopping
-     * an item destroys any information related to the item.
-     */
-    void stop() throws VLCException;
-    
-    /**
-     * This function returns true if the current item has not been stopped.
-     * @return True if the current item has not been stopped
-     */
-    boolean isRunning() throws VLCException;
-    
-    /**
-     * TODO: this should return the number of items added with add, with no
-     * respect to videolan internal playlist.
-     * 
-     * Returns the number of items in the playlist. Beware that this number
-     * could be bigger than the number of times add() has been called.
-     * 
-     * @return Current number of items in the playlist
-     */
-    int itemsCount() throws VLCException;
-    
-    /**
-     * Move to next item in the playlist and play it.
-     */
-    void next() throws VLCException;
-    
-    /**
-     * Move to previous item in the playlist and play it.
-     */
-    void prev() throws VLCException;
-    
-    /**
-     * Clear the playlist which becomes empty after this call.
-     */
-    void clear() throws VLCException;
-    
-    /**
-     * TODO: document the kind of items that can be added.
-     * Add a new item in the playlist.
-     * 
-     * @param uri Location of the item
-     * @param name Name of the item
-     * @return The item ID
-     */
-    int add(String uri, String name) throws VLCException;
-    
-    /**
-     * Currently not implemented
-     */
-    void addExtended();
-    
-    /**
-     * @param loop
-     */
-    void setLoop(boolean loop);
-}
diff --git a/org/videolan/jvlc/VLM.java b/org/videolan/jvlc/VLM.java
deleted file mode 100644 (file)
index 5a38a8c..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-package org.videolan.jvlc;
-
-public class VLM implements VLMIntf {
-
-       private long libvlcInstance;
-
-       private native void _addBroadcast(String mediaName, String meditInputMRL,
-                       String mediaOutputMRL, String[] additionalOptions,
-                       boolean enableBroadcast, boolean isPlayableInLoop);
-
-       private native void _deleteMedia(String mediaName);
-       private native void _setEnabled(String mediaName, boolean newStatus);
-       private native void _setOutput(String mediaName, String mediaOutputMRL);
-       private native void _setInput(String mediaName, String mediaInputMRL);
-       private native void _setLoop(String mediaName, boolean isPlayableInLoop);
-       private native void _changeMedia(String newMediaName, String inputMRL,
-                       String outputMRL, String[] additionalOptions,
-                       boolean enableNewBroadcast, boolean isPlayableInLoop);
-       private native void _playMedia(String mediaName);
-       private native void _stopMedia(String mediaName);
-       private native void _pauseMedia(String mediaName);
-       private native void _seekMedia(String mediaName, float percentage);
-       private native String _showMedia(String mediaName);
-       private native float _getMediaposition(String name, int mediaInstance);
-       private native int _getMediatime(String name, int mediaInstance);
-       private native int _getMedialength(String name, int mediaInstance);
-       private native int _getMediarate(String name, int mediaInstance);
-       private native int _getMediatitle(String name, int mediaInstance);
-       private native int _getMediachapter(String name, int mediaInstance);
-       private native int _getMediaseekable(String name, int mediaInstance);
-
-    public VLM( long instance ) {
-       this.libvlcInstance = instance;
-    }
-       
-       public void addBroadcast(String name, String input, String output,
-                       String[] options, boolean enabled, boolean loop)
-                       throws VLCException {
-               _addBroadcast(name, input, output, options, enabled, loop);
-       }
-
-       public void deleteMedia(String name) throws VLCException {
-               _deleteMedia(name);
-       }
-
-       public void setEnabled(String name, boolean enabled) throws VLCException {
-               _setEnabled(name, enabled);
-       }
-
-       public void setOutput(String name, String output) throws VLCException {
-               _setOutput(name, output);
-       }
-
-       public void setInput(String name, String input) throws VLCException {
-               _setInput(name, input);
-       }
-
-       public void setLoop(String name, boolean loop) throws VLCException {
-               _setLoop(name, loop);
-       }
-
-       public void changeMedia(String name, String input, String output,
-                       String[] options, boolean enabled, boolean loop)
-                       throws VLCException {
-               _changeMedia(name, input, output, options, enabled, loop);
-       }
-
-       public void playMedia(String name) throws VLCException {
-               _playMedia(name);
-       }
-
-       public void stopMedia(String name) throws VLCException {
-               _stopMedia(name);
-       }
-
-       public void pauseMedia(String name) throws VLCException {
-               _pauseMedia(name);
-       }
-       
-       public void seekMedia(String name, float percentage) throws VLCException {
-               _seekMedia(name, percentage);
-       }
-
-       public String showMedia(String name) throws VLCException {
-               return _showMedia(name);
-       }
-       
-       public float getMediaPosition(String name, int mediaInstance) throws VLCException {
-               return _getMediaposition(name, mediaInstance);
-       }
-
-       public int getMediaTime(String name, int mediaInstance) throws VLCException {
-               return _getMediatime(name, mediaInstance);
-       }
-
-       public int getMediaLength(String name, int mediaInstance) throws VLCException {
-               return _getMedialength(name, mediaInstance);
-       }
-
-       public int getMediaRate(String name, int mediaInstance) throws VLCException {
-               return _getMediarate(name, mediaInstance);
-       }
-
-       public int getMediaTitle(String name, int mediaInstance) throws VLCException {
-               return _getMediatitle(name, mediaInstance);
-       }
-
-       public int getMediaChapter(String name, int mediaInstance) throws VLCException {
-               return _getMediachapter(name, mediaInstance);
-       }
-
-       public boolean getMediaSeekable(String name, int mediaInstance) throws VLCException {
-               return _getMediaseekable(name, mediaInstance) > 0;
-       }
-
-
-       public long getInstance() {
-               return libvlcInstance;
-       }
-}
diff --git a/org/videolan/jvlc/VLMIntf.java b/org/videolan/jvlc/VLMIntf.java
deleted file mode 100644 (file)
index f909a1b..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*****************************************************************************
- * VLMIntf.java: VLM Interface
- *****************************************************************************
- * 
- * Copyright (C) 1998-2006 the VideoLAN team
- * 
- * Author: Filippo Carone <filippo@carone.org>
- * 
- * Created on 28-feb-2006
- *
- * $Id$
- *
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- * 
- */
-
-package org.videolan.jvlc;
-
-public interface VLMIntf {
-
-       /**
-        * Add a broadcast, with one input
-        * @param name the name of the new broadcast
-        * @param input the input MRL
-        * @param output the output MRL (the parameter to the "sout" variable)
-        * @param options additional options
-        * @param enabled boolean for enabling the new broadcast
-        * @param loop Should this broadcast be played in loop ?
-        */
-    void addBroadcast( String name, String input, String output, String[] options, boolean enabled, boolean loop )
-       throws VLCException;
-    
-    /**
-     * Delete a media (vod or broadcast)
-     * @param name the media to delete
-     */    
-    void deleteMedia( String name ) throws VLCException;
-    
-    /**
-     * Enable or disable a media (vod or broadcast)
-     * @param name the media to work on
-     * @param enabled the new status
-     */    
-    void setEnabled( String name, boolean enabled ) throws VLCException;
-    
-    /**
-     * Set the output for a media
-     * @param name the media to work on
-     * @param output the output MRL (the parameter to the "sout" variable)
-     */
-    void setOutput( String name, String output ) throws VLCException;
-    
-    /**
-     * Set a media's input MRL. This will delete all existing inputs and
-     * add the specified one.
-     * @param name the media to work on
-     * @param input the input MRL
-     */
-    void setInput( String name, String input ) throws VLCException;
-    
-    /**
-     * Set loop mode for a media
-     * @param name the media to work on
-     * @param loop the new status
-     */
-    void setLoop( String name, boolean loop ) throws VLCException;
-    
-    /**
-     * Edit the parameters of a media. This will delete all existing inputs and
-     * add the specified one.
-     * @param name the name of the new broadcast
-     * @param input the input MRL
-     * @param output the output MRL (the parameter to the "sout" variable)
-     * @param options additional options
-     * @param enabled boolean for enabling the new broadcast
-     * @param loop Should this broadcast be played in loop ?
-     */    
-    void changeMedia( String name, String input, String output, String[] options, boolean enabled, boolean loop )
-       throws VLCException;
-    /**
-     * Plays a media
-     * @param name of the broadcast to play
-     */
-    void playMedia(String name) throws VLCException;
-
-    /**
-     * Stops a media
-     * @param name of the broadcast to stop
-     */
-    void stopMedia(String name) throws VLCException;
-
-    /**
-     * Pauses a media
-     * @param name name of the broadcast to pause
-     */    
-    void pauseMedia(String name) throws VLCException;
-
-}
index fcb2344..2abf1e9 100644 (file)
-/**
+/*****************************************************************************
+ * Video.java: JVLC Video Output
+ *****************************************************************************
+ *
+ * Copyright (C) 1998-2008 the VideoLAN team
+ * 
+ * Author: Filippo Carone <filippo@carone.org>
+ *         Philippe Morin <phmorin@free.fr>
+ *
+ * Created on 28-feb-2006
+ *
+ * $Id: JVLC.java 20141 2007-05-16 19:31:35Z littlejohn $
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  * 
  */
 package org.videolan.jvlc;
 
 import java.awt.Dimension;
-import java.awt.Graphics;
 
-public final class Video implements VideoIntf {
+import org.videolan.jvlc.internal.LibVlc;
+import org.videolan.jvlc.internal.LibVlc.LibVlcInstance;
+import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
+
+public class Video
+{
        
-       private long libvlcInstance;
+       private final LibVlcInstance libvlcInstance;
        
-    private JVLCCanvas actualCanvas;
+    private final LibVlc libvlc;
     
-       public Video( long libvlcInstance) {
-               this.libvlcInstance = libvlcInstance;
+       public Video( JVLC jvlc) {
+               this.libvlcInstance = jvlc.getInstance();
+               this.libvlc = jvlc.getLibvlc();
        }
 
-       /*
-     * Video native methods
-     */
-    private native void                        _toggleFullscreen();
-    private native void                        _setFullscreen( boolean value);
-    private native boolean             _getFullscreen();
-    private native int                 _getHeight();
-    private native int                 _getWidth();
-    private native void                        _getSnapshot(String filename,int width,int height);
-    private native void                        _destroyVideo();
-    private native void                        _reparent(JVLCCanvas component);
-    private native void                        _setSize(int width, int height);
-    private native void                        _paint(JVLCCanvas canvas, Graphics g);
-
        /* (non-Javadoc)
         * @see org.videolan.jvlc.VideoIntf#destroyVideo()
         */
-       public void destroyVideo() throws VLCException {
-               _destroyVideo();
+       public void destroyVideo(MediaInstance media)
+       {
+               libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_video_destroy(media.getInstance(), exception );
+               
        }
 
        /* (non-Javadoc)
         * @see org.videolan.jvlc.VideoIntf#getFullscreen()
         */
-       public boolean getFullscreen() throws VLCException {
-               return _getFullscreen();
+       public boolean getFullscreen(MediaInstance media) throws VLCException {
+           libvlc_exception_t exception = new libvlc_exception_t();
+           return libvlc.libvlc_get_fullscreen(media.getInstance(), exception) == 1 ? true : false;
        }
 
        /* (non-Javadoc)
         * @see org.videolan.jvlc.VideoIntf#getSnapshot(java.lang.String)
         */
-       public void getSnapshot(String filepath,int width,int height) throws VLCException {
-               _getSnapshot( filepath , width, height);
+       public void getSnapshot(MediaInstance media, String filepath, int width, int height) throws VLCException {
+           libvlc_exception_t exception = new libvlc_exception_t();
+           libvlc.libvlc_video_take_snapshot(media.getInstance(), filepath, width, height, exception);
        }
 
        /* (non-Javadoc)
         * @see org.videolan.jvlc.VideoIntf#getVideoHeight()
         */
-       public int getHeight() throws VLCException {
-               return _getHeight();
+       public int getHeight(MediaInstance media) throws VLCException {
+           libvlc_exception_t exception = new libvlc_exception_t();
+           return libvlc.libvlc_video_get_height(media.getInstance(), exception);
        }
 
        /* (non-Javadoc)
         * @see org.videolan.jvlc.VideoIntf#getVideoWidth()
         */
-       public int getWidth() throws VLCException {
-               return _getWidth();
+       public int getWidth(MediaInstance media) throws VLCException {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return libvlc.libvlc_video_get_height(media.getInstance(), exception);
        }
 
        /* (non-Javadoc)
         * @see org.videolan.jvlc.VideoIntf#reparentVideo(java.awt.Component)
         */
-       public void reparent(JVLCCanvas c) throws VLCException {
-               _reparent(c);
-               setActualCanvas(c);
+       public void reparent(MediaInstance media, java.awt.Canvas canvas) throws VLCException {
+           libvlc_exception_t exception = new libvlc_exception_t();
+        long drawable = com.sun.jna.Native.getComponentID(canvas);
+           libvlc.libvlc_video_reparent(media.getInstance(), drawable, exception);
        }
 
        /* (non-Javadoc)
         * @see org.videolan.jvlc.VideoIntf#resizeVideo(int, int)
         */
        public void setSize(int width, int height) throws VLCException {
-               _setSize( width, height );
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_video_set_size(libvlcInstance, width, height, exception);
        }
 
        /* (non-Javadoc)
         * @see org.videolan.jvlc.VideoIntf#setFullscreen(boolean)
         */
-       public void setFullscreen(boolean fullscreen) throws VLCException {
-               _setFullscreen( fullscreen );
+       public void setFullscreen(MediaInstance media, boolean fullscreen) throws VLCException {
+           libvlc_exception_t exception = new libvlc_exception_t();
+           libvlc.libvlc_set_fullscreen(media.getInstance(), fullscreen? 1 : 0, exception);
        }
 
        /* (non-Javadoc)
         * @see org.videolan.jvlc.VideoIntf#toggleFullscreen()
         */
-       public void toggleFullscreen() throws VLCException {
-               _toggleFullscreen();
+       public void toggleFullscreen(MediaInstance media) throws VLCException {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        libvlc.libvlc_toggle_fullscreen(media.getInstance(), exception);
        }
        
        /* (non-Javadoc)
         * @see org.videolan.jvlc.VideoIntf#getSize()
         */
-       public Dimension getSize() throws VLCException {
-               return new Dimension (getWidth(), getHeight());
+       public Dimension getSize(MediaInstance media) throws VLCException {
+               return new Dimension (getWidth(media), getHeight(media));
        }
 
        /* (non-Javadoc)
@@ -107,17 +134,4 @@ public final class Video implements VideoIntf {
        public void setSize(Dimension d) throws VLCException {
                setSize(d.width, d.height);
        }
-       
-       public void paint(Graphics g) {
-               _paint(actualCanvas, g);
-       }
-
-       public void setActualCanvas(JVLCCanvas canvas) {
-               actualCanvas = canvas;
-       }
-       
-       public long getInstance() {
-               return libvlcInstance;
-       }
-       
 }
diff --git a/org/videolan/jvlc/VideoIntf.java b/org/videolan/jvlc/VideoIntf.java
deleted file mode 100644 (file)
index 0be72c6..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*****************************************************************************
- * VideoIntf.java: Video methods interface
- *****************************************************************************
- * 
- * Copyright (C) 1998-2006 the VideoLAN team
- * 
- * Author: Filippo Carone <filippo@carone.org>
- * 
- * Created on 28-feb-2006
- *
- * $Id$
- *
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- * 
- */
-
-
-package org.videolan.jvlc;
-
-import java.awt.Dimension;
-
-
-public interface VideoIntf {
-    /**
-     * Toggles the fullscreen.
-     */
-    void       toggleFullscreen() throws VLCException;
-    
-    
-    /**
-     * Sets fullscreen if fullscreen argument is true. 
-     * @param fullscreen
-     */
-    void       setFullscreen( boolean fullscreen ) throws VLCException;
-    
-    
-    /**
-     * @return True if the current video window is in fullscreen mode.
-     */
-    boolean getFullscreen() throws VLCException;
-    
-    
-    /**
-     * Saves a snapshot of the current video window.
-     * @param filepath The full path (including filename) were to save the snapshot to. 
-     * If you only give a path, not including the filename, the snapshot will be saved in
-     * the specified path using vlc naming conventions. 
-     */
-    void       getSnapshot(String filepath,int width,int height) throws VLCException;
-    
-    
-    /**
-     * @return The current video window height
-     */
-    int                getHeight() throws VLCException;
-
-    /**
-     * @return The current video window width
-     */
-    int                getWidth() throws VLCException;
-    
-    /**
-     * Get the size of the video output window as a Dimension object.
-     * @return The video size in a Dimension object.
-     * @throws VLCException
-     */
-    Dimension  getSize() throws VLCException;
-    
-    /**
-     * Destroys video output, but the item continues to play.
-     * @throws VLCException
-     */
-    void destroyVideo() throws VLCException;
-    
-    /**
-     * Moves video output from the current Canvas to another. This funtion
-     * doens't resize the video output to the new canvas size. See resizeVideo().
-     * @param c
-     * @throws VLCException
-     */
-    void reparent(JVLCCanvas c) throws VLCException;
-    
-    /**
-     * Resizes video output to width and height. This operation could be necessary
-     * after reparenting. See reparentVideo().
-     * @param width The new video output width
-     * @param height The new video output height
-     * @throws VLCException
-     */
-    void setSize(int width, int height) throws VLCException;
-    
-    /**
-     * Resizes video output to width and height. This operation could be necessary
-     * after reparenting. See reparentVideo().
-        *
-     * @param d The new size of video
-     * @throws VLCException
-     */
-    void setSize(Dimension d) throws VLCException;
-    
-}
diff --git a/org/videolan/jvlc/event/MediaInstanceCallback.java b/org/videolan/jvlc/event/MediaInstanceCallback.java
new file mode 100644 (file)
index 0000000..c5f5329
--- /dev/null
@@ -0,0 +1,83 @@
+/*****************************************************************************
+ * MediaInstancePlayCallback.java: VLC Java Bindings
+ *****************************************************************************
+ * Copyright (C) 1998-2008 the VideoLAN team
+ *
+ * Authors: Filippo Carone <filippo@carone.org>
+ *
+ *
+ * $Id $
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+package org.videolan.jvlc.event;
+
+import org.videolan.jvlc.MediaInstance;
+import org.videolan.jvlc.internal.LibVlc;
+import org.videolan.jvlc.internal.LibVlcEventType;
+import org.videolan.jvlc.internal.LibVlc.LibVlcCallback;
+import org.videolan.jvlc.internal.LibVlc.libvlc_event_t;
+import org.videolan.jvlc.internal.LibVlc.media_instance_time_changed;
+
+import com.sun.jna.Pointer;
+
+
+public class MediaInstanceCallback implements LibVlcCallback
+{
+
+    private MediaInstanceListener listener;
+    private MediaInstance mediaInstance;
+
+    public MediaInstanceCallback(MediaInstance mediaInstance, MediaInstanceListener listener)
+    {
+        this.mediaInstance = mediaInstance;
+        this.listener = listener;
+    }
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void callback(libvlc_event_t libvlc_event, Pointer userData)
+    {
+        if (libvlc_event.type == LibVlcEventType.libvlc_MediaInstancePlayed.ordinal())
+        {
+            listener.played(mediaInstance);
+        }
+        else if (libvlc_event.type == LibVlcEventType.libvlc_MediaInstancePaused.ordinal())
+        {
+            listener.paused(mediaInstance);
+        }
+        else if (libvlc_event.type == LibVlcEventType.libvlc_MediaInstanceReachedEnd.ordinal())
+        {
+            listener.endReached(mediaInstance);
+        }
+        else if (libvlc_event.type == LibVlcEventType.libvlc_MediaInstancePositionChanged.ordinal())
+        {
+            listener.positionChanged(mediaInstance);
+        }
+        else if (libvlc_event.type == LibVlcEventType.libvlc_MediaInstanceTimeChanged.ordinal())
+        {
+            libvlc_event.event_type_specific.setType(LibVlc.media_instance_time_changed.class);
+            LibVlc.media_instance_time_changed timeChanged = (media_instance_time_changed) libvlc_event.event_type_specific
+                .readField("media_instance_time_changed");
+            listener.timeChanged(mediaInstance, timeChanged.new_time);
+        }
+        else
+        {
+            throw new RuntimeException("Unsupported event error. Event id: " + libvlc_event.type);
+        }
+    }
+}
diff --git a/org/videolan/jvlc/event/MediaInstanceListener.java b/org/videolan/jvlc/event/MediaInstanceListener.java
new file mode 100644 (file)
index 0000000..784aa94
--- /dev/null
@@ -0,0 +1,44 @@
+/*****************************************************************************
+ * MediaInstancePlayListener.java: VLC Java Bindings
+ *****************************************************************************
+ * Copyright (C) 1998-2008 the VideoLAN team
+ *
+ * Authors: Filippo Carone <filippo@carone.org>
+ *
+ *
+ * $Id $
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+package org.videolan.jvlc.event;
+
+import org.videolan.jvlc.MediaInstance;
+
+
+public interface MediaInstanceListener
+{
+
+    void played(MediaInstance mediaInstance);
+    
+    void paused(MediaInstance mediaInstance);
+    
+    void endReached(MediaInstance mediaInstance);
+    
+    void timeChanged(MediaInstance mediaInstance, long newTime);
+    
+    void positionChanged(MediaInstance mediaInstance);
+    
+}
index c34b4f5..c557dd0 100644 (file)
@@ -28,15 +28,18 @@ package org.videolan.jvlc.internal;
 import com.sun.jna.Callback;
 import com.sun.jna.Library;
 import com.sun.jna.Native;
+import com.sun.jna.NativeLong;
 import com.sun.jna.Pointer;
 import com.sun.jna.PointerType;
 import com.sun.jna.Structure;
+import com.sun.jna.Union;
 
 
 public interface LibVlc extends Library
 {
 
     LibVlc INSTANCE = (LibVlc) Native.loadLibrary("libvlc-control", LibVlc.class);
+    LibVlc SYNC_INSTANCE = (LibVlc) Native.synchronizedLibrary(INSTANCE);
 
     public static class libvlc_exception_t extends Structure
     {
@@ -48,6 +51,168 @@ public interface LibVlc extends Library
         public String message;
     }
 
+    public static class libvlc_event_t extends Structure
+    {
+
+        public int type;
+
+        public Pointer obj;
+
+        public event_type_specific event_type_specific;
+
+    }
+
+    public class media_descriptor_meta_changed extends Structure
+    {
+
+        public Pointer meta_type;
+    }
+
+    public class media_descriptor_subitem_added extends Structure
+    {
+
+        public LibVlcMediaDescriptor new_child;
+    }
+
+    public class media_descriptor_duration_changed extends Structure
+    {
+
+        public NativeLong new_duration;
+    }
+
+    public class media_descriptor_preparsed_changed extends Structure
+    {
+
+        public int new_status;
+    }
+
+    public class media_descriptor_freed extends Structure
+    {
+
+        public LibVlcMediaDescriptor md;
+    }
+
+    public class media_descriptor_state_changed extends Structure
+    {
+
+        // @todo: check this one
+        public int new_state;
+    }
+
+    /* media instance */
+
+    public class media_instance_position_changed extends Structure
+    {
+
+        public float new_position;
+    }
+
+    public class media_instance_time_changed extends Structure
+    {
+
+        // @todo: check this one
+        public long new_time;
+    }
+
+    /* media list */
+    public class media_list_item_added extends Structure
+    {
+
+        public LibVlcMediaDescriptor item;
+
+        public int index;
+    }
+
+    public class media_list_will_add_item extends Structure
+    {
+
+        public LibVlcMediaDescriptor item;
+
+        public int index;
+    }
+
+    public class media_list_item_deleted extends Structure
+    {
+        
+        public LibVlcMediaDescriptor item;
+
+        public int index;
+    }
+
+    public class media_list_will_delete_item extends Structure
+    {
+
+        public LibVlcMediaDescriptor item;
+
+        public int index;
+    }
+
+    /* media list view */
+    public class media_list_view_item_added extends Structure
+    {
+
+        public LibVlcMediaDescriptor item;
+
+        public int index;
+    }
+
+    public class media_list_view_will_add_item extends Structure
+    {
+
+        public LibVlcMediaDescriptor item;
+
+        public int index;
+    }
+
+    public class media_list_view_item_deleted extends Structure
+    {
+
+        public LibVlcMediaDescriptor item;
+
+        public int index;
+    }
+
+    public class media_list_view_will_delete_item extends Structure
+    {
+
+        public LibVlcMediaDescriptor item;
+
+        public int index;
+    }
+
+    /* media discoverer */
+    public class media_media_discoverer_started extends Structure
+    {
+
+        public Pointer unused;
+    }
+
+    public class media_media_discoverer_ended extends Structure
+    {
+
+        public Pointer unused;
+    }
+
+    public class event_type_specific extends Union
+    {
+        public media_descriptor_meta_changed media_descriptor_meta_changed;
+        public media_descriptor_subitem_added media_descriptor_subitem_added;
+        public media_descriptor_duration_changed media_descriptor_duration_changed;
+        public media_descriptor_preparsed_changed media_descriptor_preparsed_changed;
+        public media_descriptor_freed media_descriptor_freed;
+        public media_descriptor_state_changed media_descriptor_state_changed;
+        public media_instance_position_changed media_instance_position_changed;
+        public media_instance_time_changed media_instance_time_changed;
+        public media_list_item_added media_list_item_added;
+        public media_list_will_add_item media_list_will_add_item;
+        public media_list_item_deleted media_list_item_deleted;
+        public media_list_will_delete_item media_list_will_delete_item;
+        public media_list_view_item_added media_list_view_item_added;
+        public media_list_view_will_add_item media_list_view_will_add_item;
+        public media_list_view_item_deleted media_list_view_item_deleted;
+        public media_list_view_will_delete_item media_list_view_will_delete_item;
+    }
+
     public class LibVlcInstance extends PointerType
     {
     }
@@ -138,34 +303,36 @@ public interface LibVlc extends Library
     int libvlc_audio_set_volume(LibVlcInstance instance, int volume, libvlc_exception_t exception);
 
     // playlist
-    
+
     void libvlc_playlist_loop(LibVlcInstance instance, int loop, libvlc_exception_t exception);
-    
-    void libvlc_playlist_play(LibVlcInstance instance, int itemIndex, int optionsCount, String[] options, libvlc_exception_t exception);
-    
+
+    void libvlc_playlist_play(LibVlcInstance instance, int itemIndex, int optionsCount, String[] options,
+        libvlc_exception_t exception);
+
     void libvlc_playlist_pause(LibVlcInstance instance, libvlc_exception_t exception);
-    
+
     void libvlc_playlist_stop(LibVlcInstance instance, libvlc_exception_t exception);
-    
+
     int libvlc_playlist_isplaying(LibVlcInstance instance, libvlc_exception_t exception);
-    
+
     int libvlc_playlist_items_count(LibVlcInstance instance, libvlc_exception_t exception);
 
     void libvlc_playlist_next(LibVlcInstance instance, libvlc_exception_t exception);
-    
+
     void libvlc_playlist_prev(LibVlcInstance instance, libvlc_exception_t exception);
-    
+
     void libvlc_playlist_clear(LibVlcInstance instance, libvlc_exception_t exception);
-    
+
     int libvlc_playlist_add(LibVlcInstance instance, String uri, String name, libvlc_exception_t exception);
-    
+
     int libvlc_playlist_delete_item(LibVlcInstance instance, int itemIndex, libvlc_exception_t exception);
-    
+
     LibVlcMediaInstance libvlc_playlist_get_media_instance(LibVlcInstance instance, libvlc_exception_t exception);
-    
+
     int libvlc_media_instance_is_seekable(LibVlcMediaInstance instance, libvlc_exception_t exception);
-    
+
     int libvlc_media_instance_can_pause(LibVlcMediaInstance instance, libvlc_exception_t exception);
+
     // media descriptor
 
     LibVlcMediaDescriptor libvlc_media_descriptor_new(LibVlcInstance libvlc_instance, String mrl,
@@ -204,7 +371,7 @@ public interface LibVlc extends Library
     void libvlc_media_instance_set_time(LibVlcMediaInstance instance, long time, libvlc_exception_t exception);
 
     float libvlc_media_instance_get_position(LibVlcMediaInstance instance, libvlc_exception_t exception);
-    
+
     void libvlc_media_instance_set_position(LibVlcMediaInstance instance, float position, libvlc_exception_t exception);
 
     int libvlc_media_instance_will_play(LibVlcMediaInstance instance, libvlc_exception_t exception);
@@ -218,7 +385,7 @@ public interface LibVlc extends Library
     float libvlc_media_instance_get_fps(LibVlcMediaInstance instance2, libvlc_exception_t exception);
 
     void libvlc_media_instance_release(LibVlcMediaInstance instance);
-    
+
     LibVlcEventManager libvlc_media_instance_event_manager(LibVlcMediaInstance media_instance,
         libvlc_exception_t exception);
 
@@ -293,7 +460,7 @@ public interface LibVlc extends Library
     public static interface LibVlcCallback extends Callback
     {
 
-        void callback(int libvlc_event_t, Pointer userData);
+        void callback(libvlc_event_t libvlc_event, Pointer userData);
     }
 
     void libvlc_event_attach(LibVlcEventManager event_manager, int event_type, LibVlcCallback callback,
index fb73f14..776c84b 100644 (file)
@@ -36,5 +36,8 @@ public enum LibVlcEventType {
     libvlc_MediaDescriptorStateChanged,
     libvlc_MediaInstancePlayed,
     libvlc_MediaInstancePaused,
-    libvlc_MediaInstanceReachedEnd;
+    libvlc_MediaInstanceReachedEnd,
+    libvlc_MediaInstanceEncounteredError,
+    libvlc_MediaInstanceTimeChanged,
+    libvlc_MediaInstancePositionChanged;
 }
index ff78ad7..39dbf0d 100644 (file)
@@ -36,6 +36,7 @@ import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager;
 import org.videolan.jvlc.internal.LibVlc.LibVlcInstance;
 import org.videolan.jvlc.internal.LibVlc.LibVlcMediaDescriptor;
 import org.videolan.jvlc.internal.LibVlc.LibVlcMediaInstance;
+import org.videolan.jvlc.internal.LibVlc.libvlc_event_t;
 import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
 
 import com.sun.jna.Pointer;
@@ -68,7 +69,7 @@ public class LibVlcImpl
         {
 
             @Override
-            public void callback(int libvlc_event_t, Pointer pointer)
+            public void callback(libvlc_event_t libvlc_event_t, Pointer pointer)
             {
                 System.out.println("Playing started.");
             }
@@ -78,7 +79,7 @@ public class LibVlcImpl
         {
 
             @Override
-            public void callback(int libvlc_event_t, Pointer pointer)
+            public void callback(libvlc_event_t libvlc_event_t, Pointer pointer)
             {
                 synchronized (lock)
                 {
diff --git a/org/videolan/jvlc/listener/VolumeListener.java b/org/videolan/jvlc/listener/VolumeListener.java
deleted file mode 100644 (file)
index 0389d3e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.videolan.jvlc.listener;
-
-
-public interface VolumeListener {
-
-       void volumeChanged();
-       
-}
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644 (file)
index ef05bd7..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-libjvlc_la_SOURCES = \
-       audio-jni.cc \
-       core-jni.cc \
-       graphics-jni.cc \
-       input-jni.cc \
-       playlist-jni.cc \
-       utils.cc \
-       utils.h \
-       video-jni.cc \
-       vlm-jni.cc \
-       callback-jni.cc
-
-libjvlc_la_CPPFLAGS = `$(VLC_CONFIG) --cflags pic` $(JINCLUDES)
-libjvlc_la_LIBADD = ../../../src/libvlc-control.la $(LIBJINCLUDES)
-
-if BUILD_JAVA
-
-lib_LTLIBRARIES = libjvlc.la
-
-if HAVE_WIN32
-DATA_noinst_libjvlc = jvlc$(LIBEXT) libjvlc$(LIBEXT).a
-LIBRARIES_libvlc = $(top_builddir)/src/.libs/libvlc.dll.a $(top_builddir)/src/.libs/libvlc-control.dll.a
-LDFLAGS_jvlc = `$(VLC_CONFIG) --libs libvlc`
-libjvlc_DATA = libjvlc.def libjvlc.dll.a jvlc$(LIBEXT) 
-
-libjvlcdir=$(srcdir)
-
-libjvlc.dll.a libjvlc.def:
-       $(DLLTOOL) -z libjvlc.def -l libjvlc.dll.a -D jvlc.dll $< $(libjvlc_a_OBJECTS)
-
-jvlc$(LIBEXT): $(libjvlc_a_OBJECTS) \
-                      $(libjvlc_a_DEPENDENCIES)
-                 $(CXXLINK) $(libjvlc_a_OBJECTS) -Wl,--kill-at \
-                       $(srcdir)/libjvlc.def \
-                       $(LIBRARIES_libvlc) -shared $(LIBRARIES_libvlc) $(LIBJINCLUDES) \
-                               $(LDFLAGS_jvlc) $(LTLIBINTL)
-# Cygwin work-around, copied by other makefiles
-                       @if test -f "$@.exe"; then mv -f "$@.exe" "$@"; fi
-
-
-all: libjvlc.dll.a
-
-endif
-
-.PHONY: clean-local
-
-clean-local:
-       rm -f *.o *~ *.def *.dll
-
-endif
diff --git a/src/audio-jni.cc b/src/audio-jni.cc
deleted file mode 100644 (file)
index f9dcf4d..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*****************************************************************************
- * audio-jni.cc: JNI native audio functions for VLC Java Bindings
- *****************************************************************************
- * Copyright (C) 1998-2006 the VideoLAN team
- *
- * Authors: Filippo Carone <filippo@carone.org>
- *          Philippe Morin <phmorin@free.fr>
- *
- *
- * $Id $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-/* These are a must*/
-#include <jni.h>
-
-#include <vlc/libvlc.h>
-
-/* JVLC internal imports, generated by gcjh */
-#include "../includes/Audio.h"
-#include "utils.h"
-
-JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Audio__1getTrack (JNIEnv *env, jobject _this)
-{
-    INIT_FUNCTION;
-    GET_INPUT_THREAD;
-    
-    jint res = 0;
-    
-    res = libvlc_audio_get_track( input, &exception );
-    libvlc_media_instance_release(input);   
-    CHECK_EXCEPTION;
-    
-    return res;
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Audio__1setTrack (JNIEnv *env, jobject _this, jint value)
-{
-    INIT_FUNCTION;
-    GET_INPUT_THREAD;
-
-    libvlc_audio_set_track( input, value, &exception );
-
-    libvlc_media_instance_release(input);   
-    CHECK_EXCEPTION;
-}
-
-JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Audio__1getChannel (JNIEnv *env, jobject _this)
-{
-    INIT_FUNCTION;
-
-    int res = libvlc_audio_get_channel( ( libvlc_instance_t * ) instance, &exception);
-
-    CHECK_EXCEPTION;
-
-    return res;
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Audio__1setChannel (JNIEnv *env, jobject _this, jint channel)
-{
-    INIT_FUNCTION;
-
-    libvlc_audio_set_channel( (libvlc_instance_t *) instance, channel, &exception);
-
-    CHECK_EXCEPTION;
-}
-
-
-JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_Audio__1getMute (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION;
-    jboolean res;
-
-    res = (jboolean) libvlc_audio_get_mute( ( libvlc_instance_t * ) instance, &exception );
-
-    CHECK_EXCEPTION;
-
-    return res;
-    
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Audio__1setMute (JNIEnv *env, jobject _this, jboolean value) 
-{
-    INIT_FUNCTION;
-
-    libvlc_audio_set_mute( ( libvlc_instance_t * ) instance, value, &exception );
-  
-    CHECK_EXCEPTION;
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Audio__1toggleMute (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION;
-
-    libvlc_audio_get_mute( ( libvlc_instance_t * ) instance, &exception );
-    
-    CHECK_EXCEPTION;
-}
-
-JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Audio__1getVolume (JNIEnv *env, jobject _this)
-{
-    INIT_FUNCTION;
-    jint res = 0;
-
-    res = libvlc_audio_get_volume( ( libvlc_instance_t * ) instance, &exception );
-
-    CHECK_EXCEPTION;
-
-    return res;
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Audio__1setVolume (JNIEnv *env, jobject _this, jint volume)
-{
-    INIT_FUNCTION;
-
-    libvlc_audio_set_volume( ( libvlc_instance_t * ) instance, volume, &exception );
-
-    CHECK_EXCEPTION;
-}
diff --git a/src/callback-jni.cc b/src/callback-jni.cc
deleted file mode 100644 (file)
index b759c71..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*****************************************************************************
- * callback-jni.cc: JNI native callback functions for VLC Java Bindings
- *****************************************************************************
- * Copyright (C) 1998-2006 the VideoLAN team
- *
- * Authors: Filippo Carone <filippo@carone.org>
- *
- *
- * $Id $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-/* These are a must*/
-#include <jni.h>
-#include <vlc/libvlc.h>
-#ifdef WIN32
-#include <windows.h>
-#undef usleep
-#define usleep(var) Sleep(var/1000)
-#else
-#include <unistd.h>
-#endif
-#include <stdio.h>
-
-#include "utils.h"
-
-#include "../includes/Audio.h"
-
-static JavaVM *jvm;
-static jclass audioClass;
-static jmethodID wakeupListenersMethod;
-
-void volumeChangedCallback( libvlc_instance_t *p_instance, libvlc_event_t *event, void *user_data );
-
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Audio__1install_1callback( JNIEnv *env, jobject _this )
-{
-    INIT_FUNCTION ;
-    if (jvm == NULL)
-    {
-        env->GetJavaVM( &jvm );
-       audioClass = env->GetObjectClass( _this );
-       wakeupListenersMethod = env->GetStaticMethodID(audioClass, "wakeupListeners", "()V");
-    }
-
-    libvlc_exception_raise( &exception, "not implemented" );
-    CHECK_EXCEPTION ;
-}
-
-void volumeChangedCallback( struct libvlc_instance_t *p_instance, libvlc_event_t *event, void *user_data )
-{
-    ATTACH_JVM;
-
-    env->CallStaticVoidMethod( audioClass, wakeupListenersMethod);
-}
diff --git a/src/core-jni.cc b/src/core-jni.cc
deleted file mode 100644 (file)
index 0372464..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*****************************************************************************
- * vlc-libvlc-jni.cc: JNI interface for vlc Java Bindings
- *****************************************************************************
- * Copyright (C) 1998-2006 the VideoLAN team
- *
- * Authors: Filippo Carone <filippo@carone.org>
- *          Philippe Morin <phmorin@free.fr>
- *
- * $Id: core-jni.cc 156 2006-08-01 09:23:01Z littlejohn $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-/* These are a must*/
-#include <jni.h>
-#include <vlc/libvlc.h>
-
-#include <stdio.h>  // for printf
-#include <stdlib.h> // for calloc
-#include <string.h> // for strcmp
-#ifdef WIN32
-#undef usleep
-#define usleep(var) Sleep(var/1000)
-#else
-#include <unistd.h> // for usleep
-#endif
-
-/* JVLC internal imports, generated by gcjh */
-#include "../includes/JVLC.h"
-
-#include <jawt.h>
-#include <jawt_md.h>
-
-#include "utils.h"
-
-
-jlong getClassInstance (JNIEnv *env, jobject _this);
-
-JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_JVLC_createInstance (JNIEnv *env, jobject _this, jobjectArray args) {
-
-    long res;
-    int argc;
-    const char **argv;
-
-    libvlc_exception_t exception;
-
-    libvlc_exception_init( &exception );
-  
-    argc = (int) env->GetArrayLength((jarray) args);
-    argv = (const char **) malloc(argc * sizeof(char*));
-
-    for (int i = 0; i < argc; i++) {
-        argv[i] = env->GetStringUTFChars((jstring) env->GetObjectArrayElement(args, i),
-                                         0
-        );
-    }
-
-    res = (long) libvlc_new(argc, (char**) argv, &exception );
-    CHECK_EXCEPTION ;
-
-    return res;
-
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1destroy (JNIEnv *env, jobject _this) 
-{
-    long instance;
-    
-    instance = getClassInstance( env, _this );
-
-    libvlc_release( (libvlc_instance_t *) instance );
-
-    return;
-}
-
-
-//JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1paint (JNIEnv *env, jobject _this, jobject canvas, jobject graphics)
-
-
-/*
- * Utility functions
- */
-jlong getClassInstance (JNIEnv *env, jobject _this) {
-    /* get the id field of object */
-    jclass    cls   = env->GetObjectClass(_this);
-    jmethodID mid   = env->GetMethodID(cls, "getInstance", "()J");
-    jlong     field = env->CallLongMethod(_this, mid);
-    return field;
-}
diff --git a/src/graphics-jni.cc b/src/graphics-jni.cc
deleted file mode 100644 (file)
index 164e33f..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*****************************************************************************
- * JVLC.java: JNI interface for vlc Java Bindings
- *****************************************************************************
- * Copyright (C) 1998-2005 the VideoLAN team
- *
- * Authors: Filippo Carone <filippo@carone.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-/* These are a must*/
-#include <jni.h>
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <vlc/vlc.h>
-#include <vlc/libvlc.h>
-#include <jawt.h>
-#include <jawt_md.h>
-
-#ifndef WIN32
-#include <X11/Xlib.h> // for Xlibs graphics functions
-#endif
-
-#include <stdio.h>    // for printf
-#include <stdlib.h>   // for malloc
-
-/* JVLC internal imports, generated by gcjh */
-#include "../includes/JVLCCanvas.h"
-
-jlong getJVLCInstance (JNIEnv *env, jobject _this);
-
-// JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLCCanvas_paint (JNIEnv *env, jobject canvas, jobject graphics) {
-
-//   JAWT awt;
-//   JAWT_DrawingSurface* ds;
-//   JAWT_DrawingSurfaceInfo* dsi;
-// #ifdef WIN32
-//   JAWT_Win32DrawingSurfaceInfo* dsi_win;
-// #else
-//   JAWT_X11DrawingSurfaceInfo* dsi_x11;
-//   GC gc;
-// #endif
-  
-//   jint lock;
-    
-//   libvlc_drawable_t drawable;
-//   libvlc_exception_t *exception = ( libvlc_exception_t * ) malloc( sizeof( libvlc_exception_t ));
-//   libvlc_exception_init( exception );
-
-//   /* Get the AWT */
-//   awt.version = JAWT_VERSION_1_3;
-//   if (JAWT_GetAWT(env, &awt) == JNI_FALSE) {
-//     printf("AWT Not found\n");
-//     return;
-//   }
-
-//   /* Get the drawing surface */
-//   ds = awt.GetDrawingSurface(env, canvas);
-//   if (ds == NULL) {
-//     printf("NULL drawing surface\n");
-//     return;
-//   }
-
-//   /* Lock the drawing surface */
-//   lock = ds->Lock(ds);
-//   if((lock & JAWT_LOCK_ERROR) != 0) {
-//     printf("Error locking surface\n");
-//     awt.FreeDrawingSurface(ds);
-//     return;
-//   }
-
-//   /* Get the drawing surface info */
-//   dsi = ds->GetDrawingSurfaceInfo(ds);
-//   if (dsi == NULL) {
-//     printf("Error getting surface info\n");
-//     ds->Unlock(ds);
-//     awt.FreeDrawingSurface(ds);
-//     return;
-//   }
-
-
-// #ifdef WIN32
-//   /* Get the platform-specific drawing info */
-//   dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;
-
-//   /* Now paint */
-
-//   drawable = reinterpret_cast<int>(dsi_win->hwnd);
-//   long vlcInstance = getJVLCInstance( env, canvas );
-//   libvlc_video_set_parent( (libvlc_instance_t *) vlcInstance, drawable, exception );
-
-// #else // UNIX
-//   /* Get the platform-specific drawing info */
-//   dsi_x11 = (JAWT_X11DrawingSurfaceInfo*)dsi->platformInfo;
-
-//   /* Now paint */
-//   gc = XCreateGC(dsi_x11->display, dsi_x11->drawable, 0, 0);
-//   XSetBackground(dsi_x11->display, gc, 0);
-  
-//   drawable = dsi_x11->drawable;
-//   long vlcInstance = getJVLCInstance( env, canvas );
-//   libvlc_video_set_parent( (libvlc_instance_t *)vlcInstance, drawable, exception );
-
-//   XFreeGC(dsi_x11->display, gc);
-
-// #endif
-
-//   /* Free the drawing surface info */
-//   ds->FreeDrawingSurfaceInfo(dsi);
-
-//   /* Unlock the drawing surface */
-//   ds->Unlock(ds);
-
-//   /* Free the drawing surface */
-//   awt.FreeDrawingSurface(ds);
-// }
-
-/*
- * Utility functions
- */
-jlong getJVLCInstance (JNIEnv *env, jobject _this) {
-    /* get the id field of object */
-    jclass    canvascls   = env->GetObjectClass(_this);
-    jmethodID canvasmid   = env->GetMethodID(canvascls, "getJVLC", "()Lorg/videolan/jvlc/JVLC;");
-    jobject   canvasjvlc  = env->CallObjectMethod(_this, canvasmid);
-    jclass    cls   = env->GetObjectClass(canvasjvlc);
-    jmethodID mid   = env->GetMethodID(cls, "getInstance", "()J");
-    jlong     field = env->CallLongMethod(canvasjvlc, mid);
-    return field;
-}
diff --git a/src/input-jni.cc b/src/input-jni.cc
deleted file mode 100644 (file)
index 70ec9e2..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/*****************************************************************************
- * input-jni.cc: JNI native input functions for VLC Java Bindings
- *****************************************************************************
- * Copyright (C) 1998-2006 the VideoLAN team
- *
- * Authors: Filippo Carone <filippo@carone.org>
- *
- *
- * $Id $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-#include <jni.h>
-#include <vlc/libvlc.h>
-/* JVLC internal imports, generated by gcjh */
-#include "../includes/Input.h"
-#include "utils.h"
-
-JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_Input__1getLength (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION ;
-    vlc_int64_t res = 0;
-
-    GET_INPUT_THREAD ;
-
-    res = libvlc_media_instance_get_length( input, &exception );
-
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION;
-
-    return res;
-}
-
-JNIEXPORT jfloat JNICALL Java_org_videolan_jvlc_Input__1getPosition (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION;
-    jfloat res;
-    
-    GET_INPUT_THREAD ;
-
-    res = libvlc_media_instance_get_position( input, &exception );
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION;
-
-    return res;
-}
-
-JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_Input__1getTime (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION;
-    vlc_int64_t res = 0;
-
-    GET_INPUT_THREAD ;
-
-    res = libvlc_media_instance_get_time( input, &exception );
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION ;
-
-    return res;
-}
-
-JNIEXPORT jfloat JNICALL Java_org_videolan_jvlc_Input__1getFPS (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION;
-    float res;
-
-    GET_INPUT_THREAD ;
-
-    res = libvlc_media_instance_get_fps( input, &exception );
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION ;
-
-    return res;
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Input__1setTime (JNIEnv *env, jobject _this, jlong time) 
-{
-    INIT_FUNCTION;
-
-    GET_INPUT_THREAD ;
-
-    libvlc_media_instance_set_time( input, time, &exception );
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION;
-        
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Input__1setPosition (JNIEnv *env, jobject _this, jfloat position )
-{
-    INIT_FUNCTION;
-
-    GET_INPUT_THREAD ;
-
-    libvlc_media_instance_set_position( input, position, &exception );
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION;
-}
-
-JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_Input__1isPlaying (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION ;
-    vlc_bool_t res = 0;
-    
-    GET_INPUT_THREAD ;
-  
-    if (input == NULL) {
-          return false;
-    }
-
-    res = libvlc_media_instance_will_play( input, &exception );
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION ;
-    
-    return res;
-}
-
-JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_Input__1hasVout (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION ;
-    vlc_bool_t res = 0;
-    
-    GET_INPUT_THREAD ;
-    
-    if (input == NULL) {
-          return false;
-    }
-    res = libvlc_media_instance_has_vout( input, &exception );
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION ;
-    
-    return res;
-}
-
diff --git a/src/playlist-jni.cc b/src/playlist-jni.cc
deleted file mode 100644 (file)
index 2f8d4bb..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-/*****************************************************************************\r
- * playlist-jni.cc: JNI native playlist functions for VLC Java Bindings\r
- *****************************************************************************\r
- * Copyright (C) 1998-2006 the VideoLAN team\r
- *\r
- * Authors: Filippo Carone <filippo@carone.org>\r
- *\r
- *\r
- * $Id $\r
- *\r
- * This program is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.\r
- *****************************************************************************/\r
-\r
-/* These are a must*/\r
-#include <jni.h>\r
-#include <vlc/libvlc.h>\r
-#ifdef WIN32\r
-#include <windows.h>\r
-#undef usleep\r
-#define usleep(var) Sleep(var/1000)\r
-#else\r
-#include <unistd.h>\r
-#endif\r
-#include <stdio.h>\r
-\r
-/* JVLC internal imports, generated by gcjh */\r
-#include "../includes/Playlist.h"\r
-\r
-#include "utils.h"\r
-\r
-\r
-JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Playlist__1playlist_1add (JNIEnv *env, jobject _this, jstring uri, jstring name,  jobjectArray options) {\r
-\r
-    INIT_FUNCTION ;\r
-    \r
-    int res = 0;\r
-    int i_options = 0;\r
-    const char** ppsz_options = NULL;\r
-    const char* psz_uri  = env->GetStringUTFChars( uri, 0 );\r
-    const char* psz_name = env->GetStringUTFChars( name, 0 );\r
-\r
-    if ( options != NULL ) {\r
-        i_options = ( int ) env->GetArrayLength( ( jarray ) options ) + 1;\r
-        ppsz_options = ( const char ** ) malloc( i_options * sizeof( char* ) );\r
-        sprintf( ( char * ) ppsz_options[0], "%s", "jvlc" );\r
-\r
-        for (int i = 0; i < i_options - 1; i++) {\r
-            ppsz_options[ i+1 ] =\r
-                env->GetStringUTFChars( ( jstring ) env->GetObjectArrayElement( options, i ), 0 );\r
-        }\r
-        res = libvlc_playlist_add_extended( ( libvlc_instance_t * ) instance, psz_uri, psz_name, i_options, ppsz_options, &exception );\r
-\r
-        CHECK_EXCEPTION;\r
-        \r
-    } else {\r
-        res = libvlc_playlist_add( ( libvlc_instance_t * ) instance, psz_uri, psz_name, &exception );\r
-        \r
-        CHECK_EXCEPTION;\r
-    }\r
-    \r
-    if (psz_uri != NULL) {\r
-        env->ReleaseStringUTFChars( uri, psz_uri );\r
-    }\r
-\r
-    if (psz_name != NULL) {\r
-        env->ReleaseStringUTFChars( name, psz_name );\r
-    }\r
-\r
-    return res;\r
-}\r
-\r
-\r
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1play (JNIEnv *env, jobject _this, jint id, jobjectArray options)\r
-{\r
-\r
-    INIT_FUNCTION;\r
-    \r
-    int i_options = 0;\r
-    const char** ppsz_options = NULL;\r
-\r
-    if ( options != NULL ) {\r
-       i_options = ( int ) env->GetArrayLength( ( jarray ) options );\r
-       ppsz_options = ( const char ** ) malloc( i_options * sizeof( char* ) );\r
-       for ( int i = 0; i < i_options - 1; i++ ) {\r
-           ppsz_options[ i ] = \r
-               env->GetStringUTFChars( ( jstring ) env->GetObjectArrayElement( options, i ), 0 );\r
-       }\r
-    }\r
-\r
-    libvlc_playlist_play( ( libvlc_instance_t * ) instance, id, i_options, ( char **  ) ppsz_options, &exception );\r
-\r
-    CHECK_EXCEPTION;\r
-    \r
-    while (! libvlc_playlist_isplaying( (libvlc_instance_t*) instance, &exception ) )\r
-    {\r
-        usleep(100);\r
-    }\r
-\r
-    CHECK_EXCEPTION;\r
-}\r
-\r
-\r
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1pause (JNIEnv *env, jobject _this)\r
-{\r
-    INIT_FUNCTION ;\r
-\r
-    libvlc_playlist_pause( ( libvlc_instance_t* ) instance, &exception );\r
-\r
-    CHECK_EXCEPTION ;\r
-}\r
-\r
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1stop (JNIEnv *env, jobject _this)\r
-{\r
-    INIT_FUNCTION ;\r
-\r
-    libvlc_playlist_stop( ( libvlc_instance_t* ) instance, &exception );\r
-    \r
-    while ( libvlc_playlist_isplaying( (libvlc_instance_t*) instance, &exception ) )\r
-    {\r
-        usleep(100);\r
-    }\r
-    \r
-\r
-    CHECK_EXCEPTION ;\r
-}\r
-\r
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1next (JNIEnv *env, jobject _this)\r
-{\r
-    INIT_FUNCTION ;\r
-    \r
-    libvlc_playlist_next( ( libvlc_instance_t* ) instance, &exception );\r
-\r
-    CHECK_EXCEPTION ;\r
-}\r
-\r
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1prev (JNIEnv *env, jobject _this)\r
-{\r
-    INIT_FUNCTION ;\r
-    \r
-    libvlc_playlist_prev( (libvlc_instance_t*) instance, &exception );\r
-\r
-    CHECK_EXCEPTION ;\r
-}\r
-\r
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1clear (JNIEnv *env, jobject _this)\r
-{\r
-    INIT_FUNCTION ;\r
-\r
-    libvlc_playlist_clear( (libvlc_instance_t*) instance, &exception );\r
-\r
-    CHECK_EXCEPTION ;\r
-}\r
-\r
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1deleteItem (JNIEnv *env, jobject _this, jint itemID)\r
-{\r
-    INIT_FUNCTION ;\r
-\r
-    libvlc_playlist_delete_item( ( libvlc_instance_t * ) instance, itemID, &exception );\r
-\r
-    CHECK_EXCEPTION ;\r
-}\r
-\r
-\r
-JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Playlist__1itemsCount (JNIEnv *env, jobject _this)\r
-{\r
-    INIT_FUNCTION ;\r
-    int res = 0;\r
-\r
-    res = libvlc_playlist_items_count( (libvlc_instance_t*) instance, &exception );\r
-\r
-    CHECK_EXCEPTION ;\r
-\r
-    return res;\r
-\r
-}\r
-\r
-JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Playlist__1isRunning (JNIEnv *env, jobject _this)\r
-{\r
-    INIT_FUNCTION ;\r
-    int res = 0;\r
-\r
-    res = libvlc_playlist_isplaying( (libvlc_instance_t*) instance, &exception );\r
-\r
-    CHECK_EXCEPTION ;\r
-\r
-    return res;\r
-}\r
-\r
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1setLoop\r
-  (JNIEnv *env, jobject _this, jboolean loop)\r
-{\r
-   INIT_FUNCTION ;\r
-\r
-   libvlc_playlist_loop( (libvlc_instance_t*) instance, loop, &exception );\r
-\r
-   CHECK_EXCEPTION ;\r
-   \r
-}   \r
diff --git a/src/utils.cc b/src/utils.cc
deleted file mode 100644 (file)
index e20bd80..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*****************************************************************************
- * utils.cc: Utility functions for VLC Java Bindings
- *****************************************************************************
- * Copyright (C) 1998-2006 the VideoLAN team
- *
- * Authors: Filippo Carone <filippo@carone.org>
- *
- *
- * $Id $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-/* These are a must*/
-#include <jni.h>
-
-#include "utils.h"
-
-JAWT awt;
-JAWT_DrawingSurfaceInfo* dsi;
-
-void handle_vlc_exception( JNIEnv* env, libvlc_exception_t* exception ) {
-  jclass newExcCls;
-
-  // raise a Java exception
-  newExcCls = env->FindClass("org/videolan/jvlc/VLCException");
-  if (newExcCls == 0) { /* Unable to find the new exception class, give up. */
-      return;
-  }
-  env->ThrowNew(newExcCls, libvlc_exception_get_message(exception));
-       
-}
-
-jlong getInstance (JNIEnv *env, jobject _this) {
-    /* get the id field of object */
-    jclass    cls   = env->GetObjectClass(_this);
-    jmethodID mid   = env->GetMethodID(cls, "getInstance", "()J");
-    jlong     field = env->CallLongMethod(_this, mid);
-    return field;
-}
diff --git a/src/utils.h b/src/utils.h
deleted file mode 100644 (file)
index cbeb224..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/* These are a must*/
-#include <jni.h>
-#include <jawt.h>
-#include <jawt_md.h>
-
-#include <vlc/libvlc.h>
-#include <stdlib.h> // for free
-
-void handle_vlc_exception( JNIEnv*, libvlc_exception_t* );
-jlong getInstance ( JNIEnv* , jobject );
-
-#define CHECK_EXCEPTION \
-    if ( libvlc_exception_raised( &exception )) \
-    { \
-        handle_vlc_exception( env, &exception ); \
-    }
-
-
-#define INIT_FUNCTION \
-    long instance; \
-    libvlc_exception_t exception; \
-    libvlc_exception_init( &exception ); \
-    instance = getInstance( env, _this );
-
-#define GET_INPUT_THREAD \
-    libvlc_media_instance_t *input; \
-    input = libvlc_playlist_get_media_instance( ( libvlc_instance_t *) instance, &exception ); \
-    CHECK_EXCEPTION ;
-
-#define ATTACH_JVM \
-    JNIEnv *env; \
-    jvm->AttachCurrentThread( ( void ** ) &env, NULL );
-
diff --git a/src/video-jni.cc b/src/video-jni.cc
deleted file mode 100644 (file)
index 64eaac3..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-/*****************************************************************************
- * video-jni.cc: JNI native video functions for VLC Java Bindings
- *****************************************************************************
- * Copyright (C) 1998-2006 the VideoLAN team
- *
- * Authors: Filippo Carone <filippo@carone.org>
- *
- *
- * $Id $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-/* These are a must*/
-#include <jni.h>
-#include <jawt.h>
-
-#include <vlc/libvlc.h>
-#include <stdio.h>
-
-/* JVLC internal imports, generated by gcjh */
-#include "../includes/Video.h"
-
-#include "utils.h"
-
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Video__1toggleFullscreen (JNIEnv *env, jobject _this)
-{
-    INIT_FUNCTION ;
-
-    GET_INPUT_THREAD ;
-    
-    libvlc_toggle_fullscreen( input, &exception );
-
-    libvlc_media_instance_release(input);
-
-    CHECK_EXCEPTION ;
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Video__1setFullscreen (JNIEnv *env, jobject _this, jboolean value) 
-{
-    INIT_FUNCTION ;
-
-    GET_INPUT_THREAD ;
-
-    libvlc_set_fullscreen( input, value, &exception );
-
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION ;
-}
-
-JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_Video__1getFullscreen (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION;
-    int res = 0;
-
-    GET_INPUT_THREAD ;
-
-    res = libvlc_get_fullscreen( input, &exception );
-
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION ;
-    
-    return res;
-}
-
-JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Video__1getHeight (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION;
-    int res = 0;
-
-    GET_INPUT_THREAD ;
-
-    res = libvlc_video_get_height( input, &exception );
-
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION ;
-
-    return res;
-}
-
-JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Video__1getWidth (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION;
-    int res = 0;
-
-    GET_INPUT_THREAD ;
-
-    res = libvlc_video_get_width( input, &exception );
-
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION ;
-
-    return res;
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Video__1getSnapshot (JNIEnv *env, jobject _this, jstring filepath, jint width, jint height) 
-{
-    INIT_FUNCTION;
-    
-    const char* psz_filepath  = env->GetStringUTFChars( filepath, 0 );
-
-    GET_INPUT_THREAD ;
-
-    libvlc_video_take_snapshot( input, (char *) psz_filepath,(unsigned int) width,(unsigned int) height, &exception );
-
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION ;
-    
-    if (psz_filepath != NULL) {
-        env->ReleaseStringUTFChars( filepath, psz_filepath );
-    }
-    
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Video__1destroyVideo (JNIEnv *env, jobject _this) 
-{
-    INIT_FUNCTION ;
-     
-    GET_INPUT_THREAD ;
-
-    libvlc_video_destroy( input, &exception );
-
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION;
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Video__1reparent (JNIEnv *env, jobject _this, jobject canvas) 
-{
-    INIT_FUNCTION ;
-    
-    GET_INPUT_THREAD ;
-
-    libvlc_drawable_t drawable;
-
-    JAWT awt;
-    JAWT_DrawingSurface* ds;
-    JAWT_DrawingSurfaceInfo* dsi;
-#ifdef WIN32
-    JAWT_Win32DrawingSurfaceInfo* dsi_win;
-#else
-    JAWT_X11DrawingSurfaceInfo* dsi_x11;
-    GC gc;  
-#endif    
-    jint lock;
-    
-    /* Get the AWT */
-    awt.version = JAWT_VERSION_1_3;
-    if (JAWT_GetAWT(env, &awt) == JNI_FALSE) {
-        printf("AWT Not found\n");
-       libvlc_media_instance_release(input);
-        return;
-    }
-
-    /* Get the drawing surface */
-    ds = awt.GetDrawingSurface(env, canvas);
-    if (ds == NULL) {
-        printf("NULL drawing surface\n");
-       libvlc_media_instance_release(input);
-        return;
-    }
-
-    /* Lock the drawing surface */
-    lock = ds->Lock(ds);
-    if((lock & JAWT_LOCK_ERROR) != 0) {
-        printf("Error locking surface\n");
-        awt.FreeDrawingSurface(ds);
-       libvlc_media_instance_release(input);
-        return;
-    }
-
-    /* Get the drawing surface info */
-    dsi = ds->GetDrawingSurfaceInfo(ds);
-    if (dsi == NULL) {
-        printf("Error getting surface info\n");
-        ds->Unlock(ds);
-        awt.FreeDrawingSurface(ds);
-       libvlc_media_instance_release(input);
-        return;
-    }
-
-    
-#ifdef WIN32
-    /* Get the platform-specific drawing info */
-    dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;
-    drawable = reinterpret_cast<int>(dsi_win->hwnd);
-
-    libvlc_video_set_parent((libvlc_instance_t *) instance, drawable, &exception );
-    libvlc_media_instance_release(input);
-
-    CHECK_EXCEPTION ;
-    
-#else // UNIX
-    /* Get the platform-specific drawing info */
-
-    dsi_x11 = (JAWT_X11DrawingSurfaceInfo*)dsi->platformInfo;
-
-    /* Now paint */
-    gc = XCreateGC(dsi_x11->display, dsi_x11->drawable, 0, 0);
-    XSetBackground(dsi_x11->display, gc, 0);
-
-    /* and reparent */
-    drawable = dsi_x11->drawable;
-    libvlc_video_set_parent( (libvlc_instance_t *) instance, drawable, &exception );
-
-    CHECK_EXCEPTION ;
-
-    XFreeGC(dsi_x11->display, gc);
-
-#endif
-  /* Free the drawing surface info */
-  ds->FreeDrawingSurfaceInfo(dsi);
-
-  /* Unlock the drawing surface */
-  ds->Unlock(ds);
-
-  /* Free the drawing surface */
-  awt.FreeDrawingSurface(ds);
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Video__1paint (JNIEnv *env, jobject _this, jobject canvas, jobject graphics)
-{
-    INIT_FUNCTION ;
-    
-    libvlc_drawable_t drawable;
-
-    JAWT awt;
-    JAWT_DrawingSurface* ds;
-    JAWT_DrawingSurfaceInfo* dsi;
-#ifdef WIN32
-    JAWT_Win32DrawingSurfaceInfo* dsi_win;
-#else
-    JAWT_X11DrawingSurfaceInfo* dsi_x11;
-    GC gc;  
-#endif    
-    jint lock;
-    
-    /* Get the AWT */
-    awt.version = JAWT_VERSION_1_3;
-    if (JAWT_GetAWT(env, &awt) == JNI_FALSE) {
-        printf("AWT Not found\n");
-        return;
-    }
-
-    /* Get the drawing surface */
-    ds = awt.GetDrawingSurface(env, canvas);
-    if (ds == NULL) {
-        printf("NULL drawing surface\n");
-        return;
-    }
-
-    /* Lock the drawing surface */
-    lock = ds->Lock(ds);
-    if((lock & JAWT_LOCK_ERROR) != 0) {
-        printf("Error locking surface\n");
-        awt.FreeDrawingSurface(ds);
-        return;
-    }
-
-    /* Get the drawing surface info */
-    dsi = ds->GetDrawingSurfaceInfo(ds);
-    if (dsi == NULL) {
-        printf("Error getting surface info\n");
-        ds->Unlock(ds);
-        awt.FreeDrawingSurface(ds);
-        return;
-    }
-
-    
-#ifdef WIN32
-    /* Get the platform-specific drawing info */
-    dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;
-    drawable = reinterpret_cast<int>(dsi_win->hwnd);
-
-    libvlc_video_set_parent( (libvlc_instance_t *) instance, drawable, &exception );
-
-    CHECK_EXCEPTION ;
-    
-#else // UNIX
-    /* Get the platform-specific drawing info */
-
-    dsi_x11 = (JAWT_X11DrawingSurfaceInfo*)dsi->platformInfo;
-
-    /* Now paint */
-    gc = XCreateGC(dsi_x11->display, dsi_x11->drawable, 0, 0);
-    XSetBackground(dsi_x11->display, gc, 0);
-
-    /* and reparent */
-    drawable = dsi_x11->drawable;
-    libvlc_video_set_parent( (libvlc_instance_t *) instance, drawable, &exception );
-
-    CHECK_EXCEPTION ;
-
-    XFreeGC(dsi_x11->display, gc);
-
-#endif
-  /* Free the drawing surface info */
-  ds->FreeDrawingSurfaceInfo(dsi);
-
-  /* Unlock the drawing surface */
-  ds->Unlock(ds);
-
-  /* Free the drawing surface */
-  awt.FreeDrawingSurface(ds);
-}
-
-
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_Video__1setSize (JNIEnv *env, jobject _this, jint width, jint height) 
-{
-    INIT_FUNCTION ;
-
-    GET_INPUT_THREAD ;
-    
-    libvlc_video_resize( input, width, height, &exception );
-
-    libvlc_media_instance_release(input);
-    CHECK_EXCEPTION ;
-}
diff --git a/src/vlm-jni.cc b/src/vlm-jni.cc
deleted file mode 100644 (file)
index 03cae76..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-/*****************************************************************************
- * vlm-jni.cc: JNI native VLM functions for VLC Java Bindings
- *****************************************************************************
- * Copyright (C) 1998-2006 the VideoLAN team
- *
- * Authors: Philippe Morin <phmorin@free.fr>
- *
- *
- * $Id $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-#include <jni.h>
-
-#include <vlc/libvlc.h>
-
-/* JVLC internal imports, generated by gcjh */
-#include "../includes/VLM.h"
-#include "utils.h"
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1addBroadcast (JNIEnv *env, jobject _this, jstring name, jstring inputmrl, jstring outputmrl, jobjectArray options, jboolean enable, jboolean loop) 
-{
-    INIT_FUNCTION;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );  
-    const char* psz_inputmrl = env->GetStringUTFChars( inputmrl, 0 );    
-    const char* psz_outputmrl = env->GetStringUTFChars( outputmrl, 0 );        
-    int i_options = 0;
-    const char** ppsz_options = NULL;
-    
-    if ( options != NULL ) {
-        i_options = ( int ) env->GetArrayLength( ( jarray ) options );
-        ppsz_options = ( const char ** ) malloc( i_options * sizeof( char* ) );
-        
-        for ( int i = 0; i < i_options - 1; i++ ) {
-            ppsz_options[ i ] = 
-                env->GetStringUTFChars( ( jstring ) env->GetObjectArrayElement( options, i ), 0 );
-        }
-    }
-
-    libvlc_vlm_add_broadcast( (libvlc_instance_t *) instance, (char*)psz_name, (char*)psz_inputmrl, (char*)psz_outputmrl ,
-                              i_options, (char**)ppsz_options, enable, loop, &exception );
-
-    CHECK_EXCEPTION ;
-
-    
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }    
-    if (psz_inputmrl != NULL) {
-        env->ReleaseStringUTFChars( inputmrl, psz_inputmrl );
-    }    
-    if (psz_outputmrl != NULL) {
-        env->ReleaseStringUTFChars( outputmrl, psz_outputmrl );
-    }
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1deleteMedia (JNIEnv *env, jobject _this, jstring name) 
-{
-    INIT_FUNCTION ;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );
-
-    libvlc_vlm_del_media( (libvlc_instance_t *) instance, (char*)psz_name, &exception);    
-    CHECK_EXCEPTION ;
-
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }    
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1setEnabled (JNIEnv *env, jobject _this, jstring name, jboolean newStatus) 
-{
-    INIT_FUNCTION ;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );
-
-    libvlc_vlm_set_enabled( (libvlc_instance_t *) instance, (char*)psz_name, newStatus, &exception);
-    CHECK_EXCEPTION ;
-
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }        
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1setOutput (JNIEnv *env, jobject _this, jstring name, jstring mrl) 
-{
-    INIT_FUNCTION;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );
-    const char* psz_mrl = env->GetStringUTFChars( mrl, 0 );    
-
-    libvlc_vlm_set_output((libvlc_instance_t *) instance, (char*)psz_name, (char*)psz_mrl, &exception);
-    CHECK_EXCEPTION ;
-
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }    
-
-    if (psz_mrl != NULL) {
-        env->ReleaseStringUTFChars( mrl, psz_mrl );
-    }    
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1setInput (JNIEnv *env, jobject _this, jstring name, jstring mrl) 
-{
-    INIT_FUNCTION;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );
-    const char* psz_mrl = env->GetStringUTFChars( mrl, 0 );    
-
-    libvlc_vlm_set_input((libvlc_instance_t *) instance, (char*)psz_name, (char*)psz_mrl, &exception);
-    CHECK_EXCEPTION ;
-
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }    
-    if (psz_mrl != NULL) {
-        env->ReleaseStringUTFChars( mrl, psz_mrl );
-    }    
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1setLoop (JNIEnv *env, jobject _this, jstring name, jboolean newStatus) 
-{
-    INIT_FUNCTION;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );
-
-    libvlc_vlm_set_loop((libvlc_instance_t *) instance, (char*)psz_name, newStatus, &exception);
-    CHECK_EXCEPTION ;
-
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }    
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1changeMedia (JNIEnv *env, jobject _this, jstring name, jstring inputmrl, jstring outputmrl, jobjectArray options, jboolean enablenewbroadcast, jboolean broadcast) 
-{
-    INIT_FUNCTION;
-    int i_options = 0;
-    const char** ppsz_options = NULL;
-    const char* psz_name      = env->GetStringUTFChars( name, 0 );
-    const char* psz_inputmrl  = env->GetStringUTFChars( inputmrl, 0 );    
-    const char* psz_outputmrl = env->GetStringUTFChars( outputmrl, 0 );        
-
-    if ( options != NULL ) {
-        i_options = ( int ) env->GetArrayLength( ( jarray ) options );
-        ppsz_options = ( const char ** ) malloc( i_options * sizeof( char* ) );
-        
-        for ( int i = 0; i < i_options - 1; i++ ) {
-            ppsz_options[ i ] = 
-                env->GetStringUTFChars( ( jstring ) env->GetObjectArrayElement( options, i ), 0 );
-        }
-    }
-
-    libvlc_vlm_change_media( (libvlc_instance_t *) instance, (char*)psz_name, (char*)psz_inputmrl, (char*)psz_outputmrl ,
-                              i_options, (char**)ppsz_options, enablenewbroadcast, broadcast, &exception );
-    CHECK_EXCEPTION ;
-    
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }    
-    
-    if (psz_inputmrl != NULL) {
-       env->ReleaseStringUTFChars( name, psz_inputmrl );
-    }    
-   
-    if (psz_outputmrl != NULL) {
-        env->ReleaseStringUTFChars( name, psz_outputmrl );
-    }
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1playMedia (JNIEnv *env, jobject _this, jstring name) 
-{
-    INIT_FUNCTION;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );
-
-    libvlc_vlm_play_media( (libvlc_instance_t *) instance, (char*)psz_name, &exception );
-    CHECK_EXCEPTION ;
-
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1stopMedia (JNIEnv *env, jobject _this, jstring name) 
-{
-    INIT_FUNCTION;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );
-
-
-    libvlc_vlm_stop_media( (libvlc_instance_t *) instance, (char*)psz_name, &exception );
-    CHECK_EXCEPTION ;
-
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1pauseMedia (JNIEnv *env, jobject _this, jstring name) 
-{
-    INIT_FUNCTION;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );
-   
-    libvlc_vlm_pause_media( (libvlc_instance_t *) instance, (char*)psz_name, &exception );
-    CHECK_EXCEPTION ;
-
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }    
-}
-
-JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1seekMedia (JNIEnv *env, jobject _this, jstring name, jfloat percentage) 
-{
-    INIT_FUNCTION;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );
-
-    libvlc_vlm_seek_media( (libvlc_instance_t *) instance, (char*)psz_name, (float)percentage, &exception );
-    CHECK_EXCEPTION ;
-
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }
-}
-
-JNIEXPORT jstring JNICALL Java_org_videolan_jvlc_VLM__1showMedia (JNIEnv *env, jobject _this, jstring name) 
-{
-    INIT_FUNCTION;
-    const char* psz_name = env->GetStringUTFChars( name, 0 );
-    char *psz_response;
-    jstring js_response;
-   
-    psz_response = libvlc_vlm_show_media( (libvlc_instance_t *) instance, (char*)psz_name, &exception );
-    CHECK_EXCEPTION ;
-
-    if (psz_name != NULL) {
-        env->ReleaseStringUTFChars( name, psz_name );
-    }
-    js_response = env->NewStringUTF(psz_response);
-    if (psz_response != NULL) {
-        free(psz_response);
-    }
-    return js_response;
-}
-
-#define LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( attr, returnType, dummyGetType, dummyDefault)\
-JNIEXPORT j ## returnType JNICALL Java_org_videolan_jvlc_VLM__1getMedia ## attr(JNIEnv *env, jobject _this, jstring name, jint index) \
-{ \
-    INIT_FUNCTION; \
-    const char* psz_name = env->GetStringUTFChars( name, 0 ); \
-    returnType response; \
-    \
-    response = libvlc_vlm_get_media_ ## attr( (libvlc_instance_t *) instance, (char*)psz_name, (int)index, &exception ); \
-    CHECK_EXCEPTION ; \
-    \
-    if (psz_name != NULL) { \
-        env->ReleaseStringUTFChars( name, psz_name ); \
-    } \
-    return response; \
-}
-
-LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( position, float, Float, -1);
-LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( time, int, Integer, -1);
-LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( length, int, Integer, -1);
-LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( rate, int, Integer, -1);
-LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( title, int, Integer, 0);
-LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( chapter, int, Integer, 0);
-LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( seekable, int, Bool, 0);
-
-#undef LIBVLC_VLM_GET_MEDIA_ATTRIBUTE