N: Filippo Carone
E: filippo[dontspam]@carone.org
+C: littlejohn
D: Java bindings
S: Italy
-SUBDIRS = python java
+SUBDIRS = python
+++ /dev/null
-#######################################################################
-# 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
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.
-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
}
}
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;
}
}
*
*/
+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());
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);
}
});
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();
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);
}
});
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);
}
});
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);
}
});
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);
}
}
+++ /dev/null
-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;
- }
-}
+++ /dev/null
-/*****************************************************************************
- * 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;
-}
+++ /dev/null
-/*****************************************************************************
- * 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();
- }
-}
+++ /dev/null
-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;
- }
-
-}
+++ /dev/null
-/*****************************************************************************
- * 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;
-}
+++ /dev/null
-/*****************************************************************************
- * 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 { }
* 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();
+ }
}
-
+++ /dev/null
-/*****************************************************************************
- * 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();
- }
-
-}
+++ /dev/null
-/*****************************************************************************
- * 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);
- }
-
-}
/*****************************************************************************
- * 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;
}
}
/*****************************************************************************
- * 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;
+ }
+
}
--- /dev/null
+/*****************************************************************************
+ * 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;
+ }
+
+}
--- /dev/null
+/*****************************************************************************
+ * 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();
+ }
+
+}
* 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
- }
-
}
+++ /dev/null
-/*****************************************************************************
- * 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);
-}
+++ /dev/null
-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;
- }
-}
+++ /dev/null
-/*****************************************************************************
- * 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;
-
-}
-/**
+/*****************************************************************************
+ * 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)
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;
- }
-
}
+++ /dev/null
-/*****************************************************************************
- * 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;
-
-}
--- /dev/null
+/*****************************************************************************
+ * 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);
+ }
+ }
+}
/*****************************************************************************
- * EventManager.java: VLC Java Bindings
+ * MediaInstancePlayListener.java: VLC Java Bindings
*****************************************************************************
- * Copyright (C) 1998-2007 the VideoLAN team
+ * Copyright (C) 1998-2008 the VideoLAN team
*
* Authors: Filippo Carone <filippo@carone.org>
*
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
-package org.videolan.jvlc;
+package org.videolan.jvlc.event;
+import org.videolan.jvlc.MediaInstance;
-public class EventManager
+
+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);
+
}
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
{
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
{
}
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,
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);
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);
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,
libvlc_MediaDescriptorStateChanged,
libvlc_MediaInstancePlayed,
libvlc_MediaInstancePaused,
- libvlc_MediaInstanceReachedEnd;
+ libvlc_MediaInstanceReachedEnd,
+ libvlc_MediaInstanceEncounteredError,
+ libvlc_MediaInstanceTimeChanged,
+ libvlc_MediaInstancePositionChanged;
}
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;
{
@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.");
}
{
@Override
- public void callback(int libvlc_event_t, Pointer pointer)
+ public void callback(libvlc_event_t libvlc_event_t, Pointer pointer)
{
synchronized (lock)
{
+++ /dev/null
-package org.videolan.jvlc.listener;
-
-
-public interface VolumeListener {
-
- void volumeChanged();
-
-}
+++ /dev/null
-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
+++ /dev/null
-/*****************************************************************************
- * 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;
-}
+++ /dev/null
-/*****************************************************************************
- * 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);
-}
+++ /dev/null
-/*****************************************************************************
- * 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;
-}
+++ /dev/null
-/*****************************************************************************
- * 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;
-}
+++ /dev/null
-/*****************************************************************************
- * 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;
-}
-
+++ /dev/null
-/*****************************************************************************\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
+++ /dev/null
-/*****************************************************************************
- * 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;
-}
+++ /dev/null
-/* 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 );
-
+++ /dev/null
-/*****************************************************************************
- * 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 ;
-}
+++ /dev/null
-/*****************************************************************************
- * 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
[ --enable-java-bindings Enable Java bindings (default disabled)])
if test "${enable_java_bindings}" = "yes"
then
- AS_IF([test "x${JAVA_HOME}" == "x"],
- [AC_MSG_ERROR([Please set the JAVA_HOME variable to your JDK environment])])
- AC_PROG_JAVAC
- AC_PROG_JAVA
- PLUGINS_BINDINGS="${PLUGINS_BINDINGS} java"
- if test "${JAVAC}" == "javac${EXEEXT}"
- then
- JAVAC="javac${EXEEXT} -cp ./ "
- fi
+ echo ""
+ echo "****** WARNING **** WARNING ***** WARNING *************"
+ echo "*** To compile the java bindings go to the
+ echo "*** bindings/java folder and run ant.
+ echo "*** This configuration will continue, so you will be
+ echo "*** able to compile VideoLAN as usual.
+ echo "*******************************************************"
+ echo ""
fi
-AM_CONDITIONAL(BUILD_JAVA, [test "${enable_java_bindings}" = "yes"])
dnl
dnl test plugins
projects/activex/Makefile
projects/activex/axvlc.inf
bindings/Makefile
- bindings/java/Makefile
- bindings/java/src/Makefile
bindings/python/Makefile
doc/Makefile
extras/package/ipkg/Makefile