Commit 0e977f2f authored by Filippo Carone's avatar Filippo Carone

Sync bindings/java with jvlc head (release is close ;).

parent d48bf82b
...@@ -4,16 +4,15 @@ ...@@ -4,16 +4,15 @@
if BUILD_JAVA if BUILD_JAVA
OBJECTS = org/videolan/jvlc/Playlist.class org/videolan/jvlc/AudioIntf.class org/videolan/jvlc/InputIntf.class org/videolan/jvlc/PlaylistIntf.class org/videolan/jvlc/VideoIntf.class org/videolan/jvlc/JLibVLC.class org/videolan/jvlc/JVLC.class org/videolan/jvlc/JVLCCanvas.class org/videolan/jvlc/JVLCPanel.class org/videolan/jvlc/VLMIntf.class org/videolan/jvlc/GenericVideoWidget.class OBJECTS = org/videolan/jvlc/VLCException.class org/videolan/jvlc/Playlist.class org/videolan/jvlc/AudioIntf.class org/videolan/jvlc/InputIntf.class org/videolan/jvlc/PlaylistIntf.class org/videolan/jvlc/VideoIntf.class org/videolan/jvlc/JLibVLC.class org/videolan/jvlc/JVLC.class org/videolan/jvlc/JVLCCanvas.class org/videolan/jvlc/JVLCPanel.class org/videolan/jvlc/VLMIntf.class org/videolan/jvlc/GenericVideoWidget.class
# Include some JAVA stuff # Include some JAVA stuff
PROCESSOR_FAMILY = `uname -m | sed -e 's/^i.86/i386/' | sed -e 's/^x86_64/amd64/'` PROCESSOR_FAMILY = `uname -m | sed -e 's/^i.86/i386/' | sed -e 's/^x86_64/amd64/'`
if HAVE_WIN32 if HAVE_WIN32
JINCLUDES = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/win32 JINCLUDES = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/win32
LIBJINCLUDES = -L${JAVA_HOME}/lib -ljawt LIBJINCLUDES = -L${JAVA_HOME}/lib -ljawt
JCC = javac JAVAC = javac
JCH = javah JCH = javah
JCC_FLAGS =
#CXX = g++ -Wall -mno-cygwin -g #CXX = g++ -Wall -mno-cygwin -g
#LDFLAGS = -mno-cygwin `vlc-config --libs external pic` -Wl,--kill-at #LDFLAGS = -mno-cygwin `vlc-config --libs external pic` -Wl,--kill-at
JAVACXXFLAGS = `top_builddir=../.. ../../vlc-config --cflags pic` -I../../ -I ../../include $(JINCLUDES) JAVACXXFLAGS = `top_builddir=../.. ../../vlc-config --cflags pic` -I../../ -I ../../include $(JINCLUDES)
...@@ -21,11 +20,10 @@ JAVALDFLAGS = -mno-cygwin -L../../src -lvlc `top_builddir=../.. ../../vlc-config ...@@ -21,11 +20,10 @@ JAVALDFLAGS = -mno-cygwin -L../../src -lvlc `top_builddir=../.. ../../vlc-config
else else
JINCLUDES = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux JINCLUDES = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
LIBJINCLUDES = -L$(JAVA_HOME)/jre/lib/$(PROCESSOR_FAMILY) -ljawt LIBJINCLUDES = -L$(JAVA_HOME)/jre/lib/$(PROCESSOR_FAMILY) -ljawt
JCC = gcj -g JAVAC = gcj -Wall -g -C
JCH = gcjh -jni JCH = gcjh -jni
SWT_PATH = /usr/share/java SWT_PATH = /usr/share/java
# Compile flags # Compile flags
JCC_FLAGS = -C
JAVACXXFLAGS = `top_builddir=../.. ../../vlc-config --cflags pic` -I../../ -I ../../include $(JINCLUDES) JAVACXXFLAGS = `top_builddir=../.. ../../vlc-config --cflags pic` -I../../ -I ../../include $(JINCLUDES)
JAVALDFLAGS = -L../../src -lvlc `top_builddir=../.. ../../vlc-config --libs builtin vlc pic` JAVALDFLAGS = -L../../src -lvlc `top_builddir=../.. ../../vlc-config --libs builtin vlc pic`
endif endif
...@@ -48,22 +46,22 @@ vlc-libvlc-jni.o: VlcClient ...@@ -48,22 +46,22 @@ vlc-libvlc-jni.o: VlcClient
$(CXX) -c vlc-libvlc-jni.cc $(CXXFLAGS) $(JAVACXXFLAGS) $(CXX) -c vlc-libvlc-jni.cc $(CXXFLAGS) $(JAVACXXFLAGS)
VlcClient: $(OBJECTS) VlcClient: $(OBJECTS)
$(JCC) $(JCC_FLAGS) VlcClient.java $(JAVAC) VlcClient.java
VLCExample: $(OBJECTS) VLCExample: $(OBJECTS)
$(JCC) $(JCC_FLAGS) VLCExample.java $(JAVAC) VLCExample.java
if HAVE_WIN32 if HAVE_WIN32
%.class: %.java %.class: %.java
$(JCC) $(JCC_FLAGS) $? $(JAVAC) $?
$(JCH) org.videolan.jvlc.$(*F) $(JCH) org.videolan.jvlc.$(*F)
else else
%.class: %.java %.class: %.java
$(JCC) $(JCC_FLAGS) $? $(JAVAC) $?
$(JCH) org/videolan/jvlc/$(*F) $(JCH) org/videolan/jvlc/$(*F)
endif endif
clean: clean:
rm -f *.class *~ org/videolan/jvlc/*.class org_videolan*.h *.so *.o *.dll rm -f *.class *~ org/videolan/jvlc/*.class org_videolan*.h *.so *.o *.dll
endif endif
\ No newline at end of file
import org.videolan.jvlc.JVLC; import org.videolan.jvlc.JVLC;
import org.videolan.jvlc.VLCException;
public class VLCExample public class VLCExample
...@@ -7,27 +8,36 @@ public class VLCExample ...@@ -7,27 +8,36 @@ public class VLCExample
public static void main( String[] args ) public static void main( String[] args )
{ {
boolean videoInput = false; boolean videoInput = false;
JVLC jvlc = new JVLC(); JVLC jvlc = new JVLC(args);
try {
jvlc.playlist.add("file://" + System.getProperty( "user.dir" ) + "/a.avi", "a.avi"); jvlc.playlist.add("file://" + System.getProperty( "user.dir" ) + "/a.avi", "a.avi");
jvlc.playlist.add("file://" + System.getProperty( "user.dir" ) + "/a.mp3", "a.mp3"); jvlc.playlist.add("file://" + System.getProperty( "user.dir" ) + "/a.mp3", "a.mp3");
jvlc.playlist.play( -1 , null ); jvlc.playlist.play( -1 , null );
} catch (VLCException e) {
e.printStackTrace();
}
while (! jvlc.isInputPlaying()) ; while (! jvlc.isInputPlaying()) ;
while (! jvlc.hasVout() );
// testing vout functionalities
// testing vout functionalities
try { try {
Thread.sleep(500); Thread.sleep(2500);
if (jvlc.hasVout()) videoInput = true; if (jvlc.hasVout()) videoInput = true;
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
if (videoInput) { if (videoInput) {
System.out.print(jvlc.getVideoWidth()); try {
System.out.print("x"); System.out.print(jvlc.getVideoWidth());
System.out.println(jvlc.getVideoHeight()); System.out.print("x");
System.out.println(jvlc.getVideoHeight());
} catch (VLCException e) {
e.printStackTrace();
}
} }
try try
{ {
...@@ -71,7 +81,11 @@ public class VLCExample ...@@ -71,7 +81,11 @@ public class VLCExample
System.out.println("Everything fine ;)"); System.out.println("Everything fine ;)");
System.out.println("Playing next item"); System.out.println("Playing next item");
jvlc.playlist.next(); try {
jvlc.playlist.next();
} catch (VLCException e) {
e.printStackTrace();
}
try { try {
Thread.sleep(3000); Thread.sleep(3000);
......
/*****************************************************************************
* VlcClient.java: Sample Swing player
*****************************************************************************
* Copyright (C) 1998-2006 the VideoLAN team
*
* Created on 28-feb-2006
*
* $Id: AudioIntf.java 8 2006-02-28 12:03:47Z little $
*
* 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-1307, USA.
*
*/
import java.awt.Frame; import java.awt.Frame;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
import org.videolan.jvlc.JVLCPanel; import org.videolan.jvlc.JVLCPanel;
import org.videolan.jvlc.JVLC; import org.videolan.jvlc.JVLC;
import org.videolan.jvlc.VLCException;
class VLCPlayerFrame extends Frame { class VLCPlayerFrame extends Frame {
public VLCPlayerFrame() { public VLCPlayerFrame() {
...@@ -109,15 +135,20 @@ class VLCPlayerFrame extends Frame { ...@@ -109,15 +135,20 @@ class VLCPlayerFrame extends Frame {
private void pauseButtonActionPerformed(java.awt.event.ActionEvent evt) { private void pauseButtonActionPerformed(java.awt.event.ActionEvent evt) {
try { try {
//System.out.println(mci.getMediaPosition(PositionOrigin.ABSOLUTE, PositionKey.BYTECOUNT)); //System.out.println(mci.getMediaPosition(PositionOrigin.ABSOLUTE, PositionKey.BYTECOUNT));
jvlc.playlist.pause(); jvlc.playlist.togglePause();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
private void setButtonActionPerformed(java.awt.event.ActionEvent evt) { private void setButtonActionPerformed(java.awt.event.ActionEvent evt) {
jvlc.playlist.add("file:///home/little/a.avi", "a.avi"); try {
jvlc.playlist.play(-1, null); jvlc.playlist.add("file:///home/little/a.avi", "a.avi");
jvlc.playlist.play(-1, null);
} catch (VLCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
private void fullScreenButtonActionPerformed(java.awt.event.ActionEvent evt) { private void fullScreenButtonActionPerformed(java.awt.event.ActionEvent evt) {
......
...@@ -30,9 +30,33 @@ ...@@ -30,9 +30,33 @@
package org.videolan.jvlc; package org.videolan.jvlc;
public interface AudioIntf { public interface AudioIntf {
boolean getMute(); /**
void setMute(boolean value); * @return True if input is currently muted.
void toggleMute(); * @throws VLCException
int getVolume(); */
void setVolume(int volume); 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;
} }
...@@ -29,21 +29,41 @@ ...@@ -29,21 +29,41 @@
package org.videolan.jvlc; package org.videolan.jvlc;
/**
* @author little
*
*/
public interface InputIntf { public interface InputIntf {
/** /**
* This function returns the total length of the current file playing * @return The total length of the current file playing in millis.
* in millis. * @throws VLCException
*/ */
long getInputLength(); long getInputLength() throws VLCException;
/** /**
* This function returns the current position in millis within the * @return The current position in millis within the playing item.
* currently playing playlist item. * @throws VLCException
*/
long getInputTime() throws VLCException;
/**
* @return The position in %.
* @throws VLCException
*/
float getInputPosition() throws VLCException;
/**
* Not implemented
* @throws VLCException
*/
void setInputTime() throws VLCException;
/**
* @return If the playing item is a video file, returns the FPS, otherwise 0.
* @throws VLCException
*/ */
long getInputTime(); double getInputFPS() throws VLCException;
float getInputPosition();
void setInputTime();
double getInputFPS();
} }
...@@ -28,4 +28,4 @@ ...@@ -28,4 +28,4 @@
package org.videolan.jvlc; package org.videolan.jvlc;
public interface JLibVLC extends AudioIntf, VideoIntf, InputIntf { } public interface JLibVLC extends AudioIntf, VideoIntf, InputIntf, VLMIntf { }
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
* Copyright (C) 1998-2006 the VideoLAN team * Copyright (C) 1998-2006 the VideoLAN team
* *
* Author: Filippo Carone <filippo@carone.org> * Author: Filippo Carone <filippo@carone.org>
* * Philippe Morin <phmorin@free.fr>
*
* Created on 28-feb-2006 * Created on 28-feb-2006
* *
* $Id$ * $Id$
...@@ -29,14 +30,10 @@ ...@@ -29,14 +30,10 @@
package org.videolan.jvlc; package org.videolan.jvlc;
/**
* @author little
*
*/
public class JVLC implements JLibVLC, Runnable { public class JVLC implements JLibVLC, Runnable {
static { static {
System.load(System.getProperty( "user.dir" ) + "/libjvlc.so" ); System.loadLibrary("jvlc" );
} }
/** /**
...@@ -47,12 +44,20 @@ public class JVLC implements JLibVLC, Runnable { ...@@ -47,12 +44,20 @@ public class JVLC implements JLibVLC, Runnable {
private boolean beingDestroyed = false; private boolean beingDestroyed = false;
/**
* This is the time in millis VLC checks for internal status
*/
private long resolution = 50; private long resolution = 50;
private boolean inputPlaying = false; private boolean inputPlaying = false;
private boolean inputVout = false; private boolean inputVout = false;
public JVLC() { public JVLC() {
_instance = createInstance(); String[] args = new String[1];
args[0] = "";
_instance = createInstance(args);
playlist = new Playlist( _instance ); playlist = new Playlist( _instance );
new Thread(this).start(); new Thread(this).start();
} }
...@@ -108,90 +113,139 @@ public class JVLC implements JLibVLC, Runnable { ...@@ -108,90 +113,139 @@ public class JVLC implements JLibVLC, Runnable {
private native int _getVideoWidth(); private native int _getVideoWidth();
private native void _getSnapshot(String filename); private native void _getSnapshot(String filename);
/*
* VLM native methods
*/
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);
/*
* Native methods wrappers
*/
public boolean getMute() { public boolean getMute() throws VLCException {
return _getMute(); return _getMute();
} }
public void setMute(boolean value) { public void setMute(boolean value) throws VLCException {
_setMute( value ); _setMute( value );
} }
public void toggleMute() { public void toggleMute() throws VLCException {
_toggleMute(); _toggleMute();
} }
public int getVolume() { public int getVolume() throws VLCException {
return _getVolume(); return _getVolume();
} }
public void setVolume(int volume) { public void setVolume(int volume) throws VLCException {
_setVolume( volume ); _setVolume( volume );
} }
public void toggleFullscreen() { public void toggleFullscreen() throws VLCException {
_toggleFullscreen(); _toggleFullscreen();
} }
public void setFullscreen( boolean value ) { public void setFullscreen( boolean value ) throws VLCException {
_setFullscreen( value ); _setFullscreen( value );
} }
public boolean getFullscreen() { public boolean getFullscreen() throws VLCException {
return _getFullscreen(); return _getFullscreen();
} }
public int getVideoHeight() { public int getVideoHeight() throws VLCException {
return _getVideoHeight(); return _getVideoHeight();
} }
public int getVideoWidth() { public int getVideoWidth() throws VLCException {
return _getVideoWidth(); return _getVideoWidth();
} }
public long getInputLength() { public long getInputLength() throws VLCException {
return _getInputLength(); return _getInputLength();
} }
public long getInputTime() { public long getInputTime() throws VLCException {
return _getInputTime(); return _getInputTime();
} }
public float getInputPosition() { public float getInputPosition() throws VLCException {
return _getInputPosition(); return _getInputPosition();
} }
public void setInputTime() { public void setInputTime() throws VLCException {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
public double getInputFPS() { public double getInputFPS() throws VLCException {
return _getInputFPS(); return _getInputFPS();
} }
public long getInstance() { public long getInstance() throws VLCException {
return _instance; return _instance;
} }
/* /*
* Getters and setters * Getters and setters
*/ */
public Playlist getPlaylist() { public Playlist getPlaylist() throws VLCException {
return playlist; return playlist;
} }
public void getSnapshot(String filename) { public void getSnapshot(String filename) throws VLCException {
_getSnapshot(filename); _getSnapshot(filename);
} }
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);
}
/** /**
* Checks if the input is playing. * Checks if the input is playing.
...@@ -217,26 +271,28 @@ public class JVLC implements JLibVLC, Runnable { ...@@ -217,26 +271,28 @@ public class JVLC implements JLibVLC, Runnable {
*/ */
public void run() { public void run() {
while (! beingDestroyed) { while (! beingDestroyed) {
while (playlist.isRunning()) { try {
if (playlist.inputIsPlaying()) { while (playlist.isRunning()) {
inputPlaying = true; if (playlist.inputIsPlaying()) {
inputPlaying = true;
}
else {
inputPlaying = false;
}
if (playlist.inputHasVout()) {
inputVout = true;
}
else {
inputVout = false;
}
try {
Thread.sleep(resolution);
} catch (InterruptedException e) {
e.printStackTrace();
}
} }
else { } catch (VLCException e1) { } // while playlist running
inputPlaying = false;
}
if (playlist.inputHasVout()) {
inputVout = true;
}
else {
inputVout = false;
}
try {
Thread.sleep(resolution);
} catch (InterruptedException e) {
e.printStackTrace();
}
} // while playlist running
inputPlaying = false; inputPlaying = false;
inputVout = false; inputVout = false;
try { try {
......
...@@ -54,71 +54,71 @@ public class Playlist implements PlaylistIntf { ...@@ -54,71 +54,71 @@ public class Playlist implements PlaylistIntf {
native private boolean _inputHasVout(); native private boolean _inputHasVout();
public synchronized void play(int id, String[] options) { public synchronized void play(int id, String[] options) throws VLCException {
_play(id, options); _play(id, options);
} }
public synchronized void play() { public synchronized void play() throws VLCException {
play(-1, null); play(-1, null);
} }
public synchronized void pause() { public synchronized void togglePause() throws VLCException {
_pause(); _pause();
} }
public synchronized void stop() { public synchronized void stop() throws VLCException {
_stop(); _stop();
} }
public boolean isRunning() { public boolean isRunning() throws VLCException {
return (_isRunning() == 0)? false : true ; return (_isRunning() == 0)? false : true ;
} }
public synchronized int itemsCount() { public synchronized int itemsCount() throws VLCException {
return _itemsCount(); return _itemsCount();
} }
public synchronized void next() { public synchronized void next() throws VLCException {
if (! isRunning()) if (! isRunning())
play(); play();
_next(); _next();
} }
public synchronized void prev() { public synchronized void prev() throws VLCException {
if (! isRunning()) if (! isRunning())
play(); play();
_prev(); _prev();
} }
public synchronized void clear() { public synchronized void clear() throws VLCException {
_clear(); _clear();
} }
public synchronized int add(String uri, String name, String[] options) { public synchronized int add(String uri, String name, String[] options) throws VLCException {
return _playlist_add(uri, name, options); return _playlist_add(uri, name, options);
} }
public synchronized int add(String uri, String name) { public synchronized int add(String uri, String name) throws VLCException {
return add(uri, name, null); return add(uri, name, null);
} }
public synchronized void addExtended() { public synchronized void addExtended() {
} }
public synchronized void deleteItem(int itemID) { public synchronized void deleteItem(int itemID) throws VLCException {
_deleteItem(itemID); _deleteItem(itemID);
} }
public long getInstance() { public long getInstance() throws VLCException {
return libvlcInstance; return libvlcInstance;
} }
public synchronized boolean inputIsPlaying() { public synchronized boolean inputIsPlaying() throws VLCException {
return _inputIsPlaying(); return _inputIsPlaying();
} }
public synchronized boolean inputHasVout() { public synchronized boolean inputHasVout() throws VLCException {
return _inputHasVout(); return _inputHasVout();
} }
......
...@@ -30,18 +30,72 @@ ...@@ -30,18 +30,72 @@
package org.videolan.jvlc; package org.videolan.jvlc;
public interface PlaylistIntf { public interface PlaylistIntf {
void play(int id, String[] options); /**
void pause(); * @param id The ID to play
void stop(); * @param options Options to play the item withs
boolean isRunning(); */
int itemsCount(); void play(int id, String[] options) throws VLCException;
boolean inputIsPlaying();
void next(); /**
void prev(); * Plays the current item
void clear(); */
int add(String uri, String name); void play() throws VLCException;
/**
* Toggles pause for the current item.
*/
void togglePause() throws VLCException;
/**
* Stops the playlist.
*/
void stop() throws VLCException;
/**
* @return True if playlist is not stopped
*/
boolean isRunning() throws VLCException;
/**
* @return Current number of items in the playlist
*/
int itemsCount() throws VLCException;
/**
* @return True if the current input is really playing
*/
boolean inputIsPlaying() throws VLCException;
/**
* Move to next item
*/
void next() throws VLCException;
/**
* Move to previous item
*/
void prev() throws VLCException;
/**
* Clear the playlist
*/
void clear() throws VLCException;
/**
* 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(); void addExtended();
boolean inputHasVout();
/**
* @return True if the current input has spawned a video output window
*/
boolean inputHasVout() throws VLCException;
} }
/*****************************************************************************
* JVLC.java: Main Java Class, represents a libvlc_instance_t object
*****************************************************************************
*
* Copyright (C) 1998-2006 the VideoLAN team
*
* Author: Philippe Morin <phmorin@free.fr>
*
* Created on 18-jul-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.lang.Exception;
public class VLCException extends Exception {
public VLCException() {
super();
}
public VLCException(String message) {
super(message);
}
public VLCException(String message,Throwable cause) {
super(message,cause);
}
public VLCException(Throwable cause) {
super(cause);
}
}
...@@ -29,12 +29,64 @@ ...@@ -29,12 +29,64 @@
package org.videolan.jvlc; package org.videolan.jvlc;
public interface VLMIntf { public interface VLMIntf {
void addBroadcast( String name, String input, String output, String[] options, boolean enabled, boolean loop );
void deleteMedia( String name ); /**
void setEnabled( String name, boolean enabled ); * Add a broadcast, with one input
void setOutput( String name, String output ); * @param mediaName the name of the new broadcast
void setInput( String name, String input ); * @param medInputMRL the input MRL
void setLoop( String name, boolean loop ); * @param mediaOutputURL the output MRL (the parameter to the "sout" variable)
void changeMedia( String name, String input, String output, String[] options, boolean enabled, boolean loop ); * @param additionalOptions additional options
* @param enableBroadcast boolean for enabling the new broadcast
* @param isPlayableInLoop 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 output 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;
} }
...@@ -29,32 +29,25 @@ ...@@ -29,32 +29,25 @@
package org.videolan.jvlc; package org.videolan.jvlc;
/**
* @author little
*
*/
/**
* @author little
*
*/
public interface VideoIntf { public interface VideoIntf {
/** /**
* Toggles the fullscreen. * Toggles the fullscreen.
*/ */
void toggleFullscreen(); void toggleFullscreen() throws VLCException;
/** /**
* Sets fullscreen if fullscreen argument is true. * Sets fullscreen if fullscreen argument is true.
* @param fullscreen * @param fullscreen
*/ */
void setFullscreen( boolean fullscreen ); void setFullscreen( boolean fullscreen ) throws VLCException;
/** /**
* @return True if the current video window is in fullscreen mode. * @return True if the current video window is in fullscreen mode.
*/ */
boolean getFullscreen(); boolean getFullscreen() throws VLCException;
/** /**
...@@ -63,16 +56,16 @@ public interface VideoIntf { ...@@ -63,16 +56,16 @@ public interface VideoIntf {
* If you only give a path, not including the filename, the snapshot will be saved in * If you only give a path, not including the filename, the snapshot will be saved in
* the specified path using vlc naming conventions. * the specified path using vlc naming conventions.
*/ */
void getSnapshot(String filepath); void getSnapshot(String filepath) throws VLCException;
/** /**
* @return The current video window height * @return The current video window height
*/ */
int getVideoHeight(); int getVideoHeight() throws VLCException;
/** /**
* @return The current video window width * @return The current video window width
*/ */
int getVideoWidth(); int getVideoWidth() throws VLCException;
} }
...@@ -26,10 +26,7 @@ ...@@ -26,10 +26,7 @@
#include <jawt.h> #include <jawt.h>
#include <jawt_md.h> #include <jawt_md.h>
#ifndef WIN32
#include <X11/Xlib.h> // for Xlibs graphics functions #include <X11/Xlib.h> // for Xlibs graphics functions
#endif
#include <stdio.h> // for printf #include <stdio.h> // for printf
/* JVLC internal imports, generated by gcjh */ /* JVLC internal imports, generated by gcjh */
...@@ -44,16 +41,10 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLCCanvas_paint (JNIEnv *env, job ...@@ -44,16 +41,10 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLCCanvas_paint (JNIEnv *env, job
JAWT awt; JAWT awt;
JAWT_DrawingSurface* ds; JAWT_DrawingSurface* ds;
JAWT_DrawingSurfaceInfo* dsi; JAWT_DrawingSurfaceInfo* dsi;
#ifdef WIN32
JAWT_Win32DrawingSurfaceInfo* dsi_win;
#else
JAWT_X11DrawingSurfaceInfo* dsi_x11; JAWT_X11DrawingSurfaceInfo* dsi_x11;
GC gc;
#endif
jint lock; jint lock;
GC gc;
vlc_value_t value; vlc_value_t value;
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
* Copyright (C) 1998-2006 the VideoLAN team * Copyright (C) 1998-2006 the VideoLAN team
* *
* Authors: Filippo Carone <filippo@carone.org> * Authors: Filippo Carone <filippo@carone.org>
* Philippe Morin <phmorin@free.fr>
* *
* $Id$ * $Id: vlc-libvlc-jni.cc 140 2006-07-26 13:47:20Z littlejohn $
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
...@@ -38,30 +39,19 @@ ...@@ -38,30 +39,19 @@
jlong getClassInstance (JNIEnv *env, jobject _this); jlong getClassInstance (JNIEnv *env, jobject _this);
jlong getPlaylistInstance (JNIEnv *env, jobject _this); jlong getPlaylistInstance (JNIEnv *env, jobject _this);
JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_JVLC_createInstance__ (JNIEnv *env, jobject _this) { void handle_vlc_exception( JNIEnv* env, libvlc_exception_t* exception ) {
jclass newExcCls;
// res is the pointer to libvlc_instance_t // raise a Java exception
long res; newExcCls = env->FindClass("org/videolan/jvlc/VLCException");
libvlc_exception_t *exception = ( libvlc_exception_t * ) malloc( sizeof( libvlc_exception_t )); if (newExcCls == 0) { /* Unable to find the new exception class, give up. */
char temp_argv[1][5] = {""}; return;
}
libvlc_exception_init( exception ); env->ThrowNew(newExcCls, libvlc_exception_get_message(exception));
res = ( long ) libvlc_new( 0, (char **)temp_argv, exception );
if ( libvlc_exception_raised( exception ))
{
///\TODO: raise java exception
printf("%s\n", libvlc_exception_get_message( exception ));
}
free( exception );
//libvlc_playlist_lock( ( libvlc_instance_t * ) res, NULL);
return res;
} }
JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_JVLC_createInstance___3Ljava_lang_String_2 (JNIEnv *env, jobject _this, jobjectArray args) { JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_JVLC_createInstance___3Ljava_lang_String_2 (JNIEnv *env, jobject _this, jobjectArray args) {
long res; long res;
...@@ -74,7 +64,10 @@ JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_JVLC_createInstance___3Ljava_lang ...@@ -74,7 +64,10 @@ JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_JVLC_createInstance___3Ljava_lang
argc = (int) env->GetArrayLength((jarray) args) + 1; argc = (int) env->GetArrayLength((jarray) args) + 1;
argv = (const char **) malloc(argc * sizeof(char*)); argv = (const char **) malloc(argc * sizeof(char*));
sprintf( (char *) argv[0], "%s", "jvlc" );
argv[0] = "vlc";
for (int i = 0; i < argc - 1; i++) { for (int i = 0; i < argc - 1; i++) {
argv[i+1] = env->GetStringUTFChars((jstring) env->GetObjectArrayElement(args, i), argv[i+1] = env->GetStringUTFChars((jstring) env->GetObjectArrayElement(args, i),
0 0
...@@ -125,8 +118,7 @@ JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_JVLC__1getMute (JNIEnv *env, j ...@@ -125,8 +118,7 @@ JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_JVLC__1getMute (JNIEnv *env, j
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
free( exception ); free( exception );
...@@ -149,8 +141,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1setMute (JNIEnv *env, jobje ...@@ -149,8 +141,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1setMute (JNIEnv *env, jobje
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
free( exception ); free( exception );
...@@ -172,8 +163,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1toggleMute (JNIEnv *env, jo ...@@ -172,8 +163,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1toggleMute (JNIEnv *env, jo
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
free( exception ); free( exception );
...@@ -196,8 +186,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_JVLC__1getVolume (JNIEnv *env, job ...@@ -196,8 +186,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_JVLC__1getVolume (JNIEnv *env, job
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
free( exception ); free( exception );
...@@ -221,8 +210,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1setVolume (JNIEnv *env, job ...@@ -221,8 +210,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1setVolume (JNIEnv *env, job
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
free( exception ); free( exception );
...@@ -250,8 +238,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1toggleFullscreen (JNIEnv *e ...@@ -250,8 +238,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1toggleFullscreen (JNIEnv *e
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
free( exception ); free( exception );
...@@ -273,8 +260,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1setFullscreen (JNIEnv *env, ...@@ -273,8 +260,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1setFullscreen (JNIEnv *env,
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
free( exception ); free( exception );
...@@ -297,8 +283,7 @@ JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_JVLC__1getFullscreen (JNIEnv * ...@@ -297,8 +283,7 @@ JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_JVLC__1getFullscreen (JNIEnv *
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
free( exception ); free( exception );
...@@ -321,16 +306,14 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1getSnapshot (JNIEnv *env, j ...@@ -321,16 +306,14 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1getSnapshot (JNIEnv *env, j
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
libvlc_video_take_snapshot( input, (char *) psz_filepath, exception ); libvlc_video_take_snapshot( input, (char *) psz_filepath, exception );
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
...@@ -357,8 +340,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_JVLC__1getVideoHeight (JNIEnv *env ...@@ -357,8 +340,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_JVLC__1getVideoHeight (JNIEnv *env
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
free( exception ); free( exception );
...@@ -383,8 +365,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_JVLC__1getVideoWidth (JNIEnv *env, ...@@ -383,8 +365,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_JVLC__1getVideoWidth (JNIEnv *env,
if ( libvlc_exception_raised( exception )) if ( libvlc_exception_raised( exception ))
{ {
///\TODO: raise java exception handle_vlc_exception( env, exception );
printf("%s\n", libvlc_exception_get_message( exception ));
} }
free( exception ); free( exception );
...@@ -419,8 +400,17 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Playlist__1playlist_1add (JNIEnv * ...@@ -419,8 +400,17 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Playlist__1playlist_1add (JNIEnv *
env->GetStringUTFChars( ( jstring ) env->GetObjectArrayElement( options, i ), 0 ); env->GetStringUTFChars( ( jstring ) env->GetObjectArrayElement( options, i ), 0 );
} }
res = libvlc_playlist_add_extended( ( libvlc_instance_t * ) instance, psz_uri, psz_name, i_options, ppsz_options, exception ); res = libvlc_playlist_add_extended( ( libvlc_instance_t * ) instance, psz_uri, psz_name, i_options, ppsz_options, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
} else { } else {
res = libvlc_playlist_add( ( libvlc_instance_t * ) instance, psz_uri, psz_name, exception ); res = libvlc_playlist_add( ( libvlc_instance_t * ) instance, psz_uri, psz_name, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
} }
/// \todo check exceptions /// \todo check exceptions
...@@ -451,18 +441,20 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1play (JNIEnv *env, jobj ...@@ -451,18 +441,20 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1play (JNIEnv *env, jobj
libvlc_exception_init( exception ); libvlc_exception_init( exception );
if ( options != NULL ) { if ( options != NULL ) {
i_options = ( int ) env->GetArrayLength( ( jarray ) options ) + 1; i_options = ( int ) env->GetArrayLength( ( jarray ) options );
ppsz_options = ( const char ** ) malloc( i_options * sizeof( char* ) ); ppsz_options = ( const char ** ) malloc( i_options * sizeof( char* ) );
sprintf( ( char * ) ppsz_options[0], "%s", "jvlc" );
for ( int i = 0; i < i_options - 1; i++ ) { for ( int i = 0; i < i_options - 1; i++ ) {
ppsz_options[ i+1 ] = ppsz_options[ i ] =
env->GetStringUTFChars( ( jstring ) env->GetObjectArrayElement( options, i ), 0 ); env->GetStringUTFChars( ( jstring ) env->GetObjectArrayElement( options, i ), 0 );
} }
} }
libvlc_playlist_play( p_instance, id, i_options, ( char ** ) ppsz_options, exception ); libvlc_playlist_play( p_instance, id, i_options, ( char ** ) ppsz_options, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return; return;
} }
...@@ -476,6 +468,10 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1pause (JNIEnv *env, job ...@@ -476,6 +468,10 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1pause (JNIEnv *env, job
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
libvlc_playlist_pause( ( libvlc_instance_t* ) instance, exception ); libvlc_playlist_pause( ( libvlc_instance_t* ) instance, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return; return;
...@@ -488,10 +484,13 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1stop (JNIEnv *env, jobj ...@@ -488,10 +484,13 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1stop (JNIEnv *env, jobj
libvlc_exception_init( exception ); libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
libvlc_playlist_stop( ( libvlc_instance_t* ) instance, exception ); libvlc_playlist_stop( ( libvlc_instance_t* ) instance, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return; return;
} }
JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1next (JNIEnv *env, jobject _this) { JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1next (JNIEnv *env, jobject _this) {
...@@ -501,7 +500,11 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1next (JNIEnv *env, jobj ...@@ -501,7 +500,11 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1next (JNIEnv *env, jobj
libvlc_exception_init( exception ); libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
libvlc_playlist_next( ( libvlc_instance_t* ) instance, exception ); libvlc_playlist_next( ( libvlc_instance_t* ) instance, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return; return;
...@@ -514,6 +517,10 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1prev (JNIEnv *env, jobj ...@@ -514,6 +517,10 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1prev (JNIEnv *env, jobj
libvlc_exception_init( exception ); libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
libvlc_playlist_prev( (libvlc_instance_t*) instance, exception ); libvlc_playlist_prev( (libvlc_instance_t*) instance, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return; return;
...@@ -526,6 +533,10 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1clear (JNIEnv *env, job ...@@ -526,6 +533,10 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1clear (JNIEnv *env, job
libvlc_exception_init( exception ); libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
libvlc_playlist_clear( (libvlc_instance_t*) instance, exception ); libvlc_playlist_clear( (libvlc_instance_t*) instance, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return; return;
...@@ -539,6 +550,10 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1deleteItem (JNIEnv *env ...@@ -539,6 +550,10 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Playlist__1deleteItem (JNIEnv *env
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
libvlc_playlist_delete_item( ( libvlc_instance_t * ) instance, itemID, exception ); libvlc_playlist_delete_item( ( libvlc_instance_t * ) instance, itemID, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return; return;
...@@ -553,6 +568,10 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Playlist__1itemsCount (JNIEnv *env ...@@ -553,6 +568,10 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Playlist__1itemsCount (JNIEnv *env
libvlc_exception_init( exception ); libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
res = libvlc_playlist_items_count( (libvlc_instance_t*) instance, exception ); res = libvlc_playlist_items_count( (libvlc_instance_t*) instance, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return res; return res;
...@@ -567,6 +586,10 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Playlist__1isRunning (JNIEnv *env, ...@@ -567,6 +586,10 @@ JNIEXPORT jint JNICALL Java_org_videolan_jvlc_Playlist__1isRunning (JNIEnv *env,
libvlc_exception_init( exception ); libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
res = libvlc_playlist_isplaying( (libvlc_instance_t*) instance, exception ); res = libvlc_playlist_isplaying( (libvlc_instance_t*) instance, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return res; return res;
...@@ -584,10 +607,16 @@ JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_Playlist__1inputIsPlaying (JNI ...@@ -584,10 +607,16 @@ JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_Playlist__1inputIsPlaying (JNI
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception ); input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception );
/// \todo check exceptions if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
res = libvlc_input_will_play( input, exception ); res = libvlc_input_will_play( input, exception );
/// \todo check exceptions if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return res; return res;
...@@ -604,10 +633,16 @@ JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_Playlist__1inputHasVout (JNIEn ...@@ -604,10 +633,16 @@ JNIEXPORT jboolean JNICALL Java_org_videolan_jvlc_Playlist__1inputHasVout (JNIEn
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception ); input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception );
/// \todo check exceptions if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
res = libvlc_input_has_vout( input, exception ); res = libvlc_input_has_vout( input, exception );
/// \todo check exceptions if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return res; return res;
...@@ -628,9 +663,16 @@ JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_JVLC__1getInputLength (JNIEnv *en ...@@ -628,9 +663,16 @@ JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_JVLC__1getInputLength (JNIEnv *en
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception ); input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception );
/// \todo check exceptions if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
res = libvlc_input_get_length( input, exception ); res = libvlc_input_get_length( input, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return res; return res;
...@@ -647,9 +689,17 @@ JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_JVLC__1getInputTime (JNIEnv *env, ...@@ -647,9 +689,17 @@ JNIEXPORT jlong JNICALL Java_org_videolan_jvlc_JVLC__1getInputTime (JNIEnv *env,
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception ); input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception );
/// \todo check exceptions if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
res = libvlc_input_get_time( input, exception ); res = libvlc_input_get_time( input, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return res; return res;
...@@ -667,9 +717,17 @@ JNIEXPORT jfloat JNICALL Java_org_videolan_jvlc_JVLC__1getInputPosition (JNIEnv ...@@ -667,9 +717,17 @@ JNIEXPORT jfloat JNICALL Java_org_videolan_jvlc_JVLC__1getInputPosition (JNIEnv
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception ); input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
res = libvlc_input_get_position( input, exception ); res = libvlc_input_get_position( input, exception );
/// \todo handle exceptions if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return res; return res;
...@@ -688,15 +746,257 @@ JNIEXPORT jfloat JNICALL Java_org_videolan_jvlc_JVLC__1getInputFPS (JNIEnv *env, ...@@ -688,15 +746,257 @@ JNIEXPORT jfloat JNICALL Java_org_videolan_jvlc_JVLC__1getInputFPS (JNIEnv *env,
instance = getPlaylistInstance( env, _this ); instance = getPlaylistInstance( env, _this );
input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception ); input = libvlc_playlist_get_input( ( libvlc_instance_t* ) instance, exception );
if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
res = libvlc_input_get_fps( input, exception ); res = libvlc_input_get_fps( input, exception );
/// \todo handle exceptions if ( libvlc_exception_raised ( exception ) )
{
handle_vlc_exception( env, exception );
}
free( exception ); free( exception );
return res; return res;
} }
/*
* VLM native functions
*/
/*
* Class: org_videolan_jvlc_JVLC
* Method: _addBroadcast
* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZZ)V
*/
JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1addBroadcast(JNIEnv *env, jobject _this, jstring name,jstring inputmrl, jstring outputmrl, jobjectArray options, jboolean enable, jboolean loop) {
const char* psz_name = env->GetStringUTFChars( name, 0 );
const char* psz_inputmrl = env->GetStringUTFChars( inputmrl, 0 );
const char* psz_outputmrl = env->GetStringUTFChars( outputmrl, 0 );
long instance = 0;
libvlc_exception_t *exception = (libvlc_exception_t *) malloc( sizeof( libvlc_exception_t ));
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_exception_init( exception );
instance = getPlaylistInstance( env, _this );
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 );
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 );
}
handle_vlc_exception(env,exception);
free(exception);
}
/*
* Class: org_videolan_jvlc_JVLC
* Method: _deleteMedia
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1deleteMedia(JNIEnv *env, jobject _this, jstring name) {
long instance = 0;
const char* psz_name = env->GetStringUTFChars( name, 0 );
libvlc_exception_t *exception = (libvlc_exception_t *) malloc( sizeof( libvlc_exception_t ));
libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this );
libvlc_vlm_del_media( (libvlc_instance_t *) instance, (char*)psz_name, exception);
handle_vlc_exception(env,exception);
/* free resources */
free(exception);
if (psz_name != NULL) {
env->ReleaseStringUTFChars( name, psz_name );
}
}
/*
* Class: org_videolan_jvlc_JVLC
* Method: _setEnabled
* Signature: (Ljava/lang/String;Z)V
*/
JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1setEnabled(JNIEnv *env, jobject _this, jstring name, jboolean newStatus) {
long instance = 0;
const char* psz_name = env->GetStringUTFChars( name, 0 );
libvlc_exception_t *exception = (libvlc_exception_t *) malloc( sizeof( libvlc_exception_t ));
libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this );
libvlc_vlm_set_enabled( (libvlc_instance_t *) instance, (char*)psz_name, newStatus, exception);
handle_vlc_exception(env,exception);
/* free resources */
free(exception);
if (psz_name != NULL) {
env->ReleaseStringUTFChars( name, psz_name );
}
}
/*
* Class: org_videolan_jvlc_JVLC
* Method: _setOutput
* Signature: (Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1setOutput(JNIEnv *env, jobject _this, jstring name, jstring mrl) {
long instance = 0;
const char* psz_name = env->GetStringUTFChars( name, 0 );
const char* psz_mrl = env->GetStringUTFChars( mrl, 0 );
libvlc_exception_t *exception = (libvlc_exception_t *) malloc( sizeof( libvlc_exception_t ));
libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this );
libvlc_vlm_set_output((libvlc_instance_t *) instance, (char*)psz_name, (char*)psz_mrl, exception);
handle_vlc_exception(env,exception);
/* free resources */
free(exception);
if (psz_name != NULL) {
env->ReleaseStringUTFChars( name, psz_name );
}
if (psz_mrl != NULL) {
env->ReleaseStringUTFChars( mrl, psz_mrl );
}
}
/*
* Class: org_videolan_jvlc_JVLC
* Method: _setInput
* Signature: (Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1setInput(JNIEnv *env, jobject _this, jstring name, jstring mrl) {
long instance = 0;
const char* psz_name = env->GetStringUTFChars( name, 0 );
const char* psz_mrl = env->GetStringUTFChars( mrl, 0 );
libvlc_exception_t *exception = (libvlc_exception_t *) malloc( sizeof( libvlc_exception_t ));
libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this );
libvlc_vlm_set_input((libvlc_instance_t *) instance, (char*)psz_name, (char*)psz_mrl, exception);
handle_vlc_exception(env,exception);
/* free resources */
free(exception);
if (psz_name != NULL) {
env->ReleaseStringUTFChars( name, psz_name );
}
if (psz_mrl != NULL) {
env->ReleaseStringUTFChars( mrl, psz_mrl );
}
}
/*
* Class: org_videolan_jvlc_JVLC
* Method: _setLoop
* Signature: (Ljava/lang/String;Z)V
*/
JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1setLoop(JNIEnv *env, jobject _this, jstring name, jboolean newStatus) {
long instance = 0;
const char* psz_name = env->GetStringUTFChars( name, 0 );
libvlc_exception_t *exception = (libvlc_exception_t *) malloc( sizeof( libvlc_exception_t ));
libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this );
libvlc_vlm_set_loop((libvlc_instance_t *) instance, (char*)psz_name, newStatus, exception);
handle_vlc_exception(env,exception);
/* free resources */
free(exception);
if (psz_name != NULL) {
env->ReleaseStringUTFChars( name, psz_name );
}
}
/*
* Class: org_videolan_jvlc_JVLC
* Method: _changeMedia
* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZZ)V
*/
JNIEXPORT void JNICALL Java_org_videolan_jvlc_JVLC__1changeMedia(JNIEnv *env, jobject _this, jstring name, jstring inputmrl, jstring outputmrl, jobjectArray options, jboolean enablenewbroadcast, jboolean broadcast) {
int i_options = 0;
const char** ppsz_options = NULL;
long instance = 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 );
}
}
const char* psz_name = env->GetStringUTFChars( name, 0 );
const char* psz_inputmrl = env->GetStringUTFChars( inputmrl, 0 );
const char* psz_outputmrl = env->GetStringUTFChars( outputmrl, 0 );
libvlc_exception_t *exception = (libvlc_exception_t *) malloc( sizeof( libvlc_exception_t ));
libvlc_exception_init( exception );
instance = getPlaylistInstance( env, _this );
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 );
handle_vlc_exception(env,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 );
}
}
/* /*
* Utility functions * Utility functions
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment