import org.videolan.jvlc.internal.LibVlc.LibVlcInstance;
import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
-import com.sun.jna.Native;
-
public class JVLC
{
private final LibVlc libvlc = LibVlc.SYNC_INSTANCE;
- private MediaList mediaList;
-
private VLM vlm;
private Audio audio;
private volatile boolean released;
- private MediaListPlayer mediaListPlayer;
+ private Canvas canvas;
public JVLC()
{
- String[] args = new String[] {};
- instance = createInstance(args);
- init();
+ this(new String[] {});
}
public JVLC(String[] args)
{
instance = createInstance(args);
- init();
- }
-
- private void init()
- {
- mediaList = new MediaList(this);
- mediaListPlayer = new MediaListPlayer(this);
- mediaListPlayer.setMediaList(mediaList);
audio = new Audio(this);
}
{
MediaDescriptor mediaDescriptor = new MediaDescriptor(this, media);
MediaPlayer mediaPlayer = new MediaPlayer(mediaDescriptor);
+ if (canvas != null)
+ {
+ mediaPlayer.setParent(canvas);
+ }
mediaPlayer.play();
mediaDescriptor.release();
return mediaPlayer;
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 );
+ this.canvas = canvas;
}
public Logger getLogger()
{
return new Logger(this);
}
-
- /**
- * Returns the mediaList.
- * @return the mediaList
- */
- public MediaList getMediaList()
- {
- return mediaList;
- }
public VLM getVLM()
{
vlm.release();
vlm = null;
}
- mediaList.release();
- mediaListPlayer.release();
libvlc.libvlc_release(instance);
}
super.finalize();
}
-
- /**
- * Returns the mediaListPlayer.
- * @return the mediaListPlayer
- */
- public MediaListPlayer getMediaListPlayer()
- {
- return mediaListPlayer;
- }
-
/**
* @return
*/
package org.videolan.jvlc;
+import java.awt.Canvas;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import org.videolan.jvlc.internal.LibVlc.LibVlcMediaPlayer;
import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
+import com.sun.jna.Native;
+import com.sun.jna.Platform;
+
public class MediaPlayer
{
libvlc_exception_t exception = new libvlc_exception_t();
return libvlc.libvlc_media_player_get_fps(instance, exception);
}
-
+
public boolean isPlaying()
{
libvlc_exception_t exception = new libvlc_exception_t();
- return libvlc.libvlc_media_player_is_playing(instance, exception) == 1? true : false;
+ return libvlc.libvlc_media_player_is_playing(instance, exception) == 1 ? true : false;
}
public void addListener(final MediaPlayerListener listener)
callbacks.add(callback);
}
+ public void setParent(Canvas canvas)
+ {
+ long drawable = Native.getComponentID(canvas);
+ libvlc_exception_t exception = new libvlc_exception_t();
+ if (Platform.isWindows())
+ {
+ libvlc.libvlc_media_player_set_hwnd(instance, drawable, exception);
+ }
+ else
+ {
+ libvlc.libvlc_media_player_set_xwindow(instance, drawable, exception);
+ }
+ }
+
/**
* {@inheritDoc}
*/
released = true;
libvlc_exception_t exception = new libvlc_exception_t();
- for (MediaPlayerCallback callback : callbacks)
+ for (MediaPlayerCallback callback : callbacks)
{
for (LibVlcEventType event : EnumSet.range(
LibVlcEventType.libvlc_MediaPlayerPlaying,
}
}
libvlc.libvlc_media_player_release(instance);
-
+
}
-
+
/**
* Returns the instance.
* @return the instance
String libvlc_get_changeset();
// video
-
- void libvlc_video_set_parent(LibVlcInstance libvlc_instance, long drawable, libvlc_exception_t exception);
+
+ void libvlc_media_player_set_hwnd(LibVlcMediaPlayer mediaplayer_instance, long drawable, libvlc_exception_t exception);
+
+ long libvlc_media_player_get_hwnd(LibVlcMediaPlayer mediaplayer_instance);
+
+ void libvlc_media_player_set_xwindow(LibVlcMediaPlayer mediaplayer_instance, long drawable, libvlc_exception_t exception);
+
+ long libvlc_media_player_get_xwindow(LibVlcMediaPlayer mediaplayer_instance);
void libvlc_toggle_fullscreen(LibVlcMediaPlayer libvlc_instance);
import org.videolan.jvlc.internal.LibVlc.libvlc_event_t;
import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
+import com.sun.jna.Platform;
import com.sun.jna.Pointer;
int drawable = (int) com.sun.jna.Native.getComponentID(canvas);
- libVlc.libvlc_video_set_parent(libvlc_instance_t, drawable, exception);
+ if (Platform.isWindows())
+ {
+ libVlc.libvlc_media_player_set_hwnd(mediaPlayer, drawable, exception);
+ }
+ else
+ {
+ libVlc.libvlc_media_player_set_xwindow(mediaPlayer, drawable, exception);
+ }
libVlc.libvlc_media_player_play(mediaPlayer, exception);
}
}
public void jvlcNew()
{
JVLC jvlc = new JVLC();
- Assert.assertNotNull(jvlc.getMediaList());
+ Assert.assertNotNull(jvlc.getAudio());
}
@Test
for (int i = 0; i < videosNumber; i++)
{
jvlcArray[i].play(filename);
+ jvlcArray[i].setVideoOutput(videoCanvasesArray[i]);
Thread.sleep(500);
}
}