From bc91ae254696f20b615a5306874a5ef3941a8640 Mon Sep 17 00:00:00 2001 From: Filippo Carone Date: Sun, 20 Jul 2008 10:59:49 +0200 Subject: [PATCH] MediaInstance renamed to MediaPlayer --- .../main/java/org/videolan/jvlc/Audio.java | 4 +- .../src/main/java/org/videolan/jvlc/JVLC.java | 4 +- .../org/videolan/jvlc/MediaDescriptor.java | 4 +- .../org/videolan/jvlc/MediaListPlayer.java | 2 +- .../java/org/videolan/jvlc/MediaPlayer.java | 196 ++++++++++++++++++ .../main/java/org/videolan/jvlc/Playlist.java | 4 +- .../main/java/org/videolan/jvlc/Video.java | 18 +- .../jvlc/event/MediaInstanceCallback.java | 6 +- .../jvlc/event/MediaInstanceListener.java | 12 +- .../org/videolan/jvlc/example/VLCExample.java | 14 +- .../test/java/org/videolan/jvlc/JVLCTest.java | 2 +- 11 files changed, 231 insertions(+), 35 deletions(-) create mode 100644 bindings/java/core/src/main/java/org/videolan/jvlc/MediaPlayer.java diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/Audio.java b/bindings/java/core/src/main/java/org/videolan/jvlc/Audio.java index 09cf270c23..70a19cdb3b 100644 --- a/bindings/java/core/src/main/java/org/videolan/jvlc/Audio.java +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/Audio.java @@ -66,13 +66,13 @@ public class Audio this.jvlc = jvlc; } - public int getTrack(MediaInstance mediaInstance) + public int getTrack(MediaPlayer mediaInstance) { libvlc_exception_t exception = new libvlc_exception_t(); return jvlc.getLibvlc().libvlc_audio_get_track(mediaInstance.getInstance(), exception); } - public void setTrack(MediaInstance mediaInstance, int track) + public void setTrack(MediaPlayer mediaInstance, int track) { libvlc_exception_t exception = new libvlc_exception_t(); jvlc.getLibvlc().libvlc_audio_set_track(mediaInstance.getInstance(), track, exception); diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/JVLC.java b/bindings/java/core/src/main/java/org/videolan/jvlc/JVLC.java index 23dcfebcf8..6c826234a1 100644 --- a/bindings/java/core/src/main/java/org/videolan/jvlc/JVLC.java +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/JVLC.java @@ -76,10 +76,10 @@ public class JVLC return libvlc.libvlc_new(args.length, args, exception); } - public MediaInstance play(String media) + public MediaPlayer play(String media) { MediaDescriptor mediaDescriptor = new MediaDescriptor(this, media); - MediaInstance mediaInstance = new MediaInstance(mediaDescriptor); + MediaPlayer mediaInstance = new MediaPlayer(mediaDescriptor); mediaInstance.play(); mediaDescriptor.release(); return mediaInstance; diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/MediaDescriptor.java b/bindings/java/core/src/main/java/org/videolan/jvlc/MediaDescriptor.java index 727f157bca..34e672fb35 100644 --- a/bindings/java/core/src/main/java/org/videolan/jvlc/MediaDescriptor.java +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/MediaDescriptor.java @@ -69,9 +69,9 @@ public class MediaDescriptor return libvlc.libvlc_media_get_mrl(instance); } - public MediaInstance getMediaInstance() + public MediaPlayer getMediaInstance() { - return new MediaInstance(this); + return new MediaPlayer(this); } /** diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/MediaListPlayer.java b/bindings/java/core/src/main/java/org/videolan/jvlc/MediaListPlayer.java index 565de72e68..2a073b9821 100644 --- a/bindings/java/core/src/main/java/org/videolan/jvlc/MediaListPlayer.java +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/MediaListPlayer.java @@ -160,7 +160,7 @@ public class MediaListPlayer } } - public void setMediaInstance(MediaInstance mediaInstance) + public void setMediaInstance(MediaPlayer mediaInstance) { libvlc_exception_t exception = new libvlc_exception_t(); jvlc.getLibvlc().libvlc_media_list_player_set_media_player(instance, mediaInstance.getInstance(), exception); diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/MediaPlayer.java b/bindings/java/core/src/main/java/org/videolan/jvlc/MediaPlayer.java new file mode 100644 index 0000000000..66bbb1fdab --- /dev/null +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/MediaPlayer.java @@ -0,0 +1,196 @@ +/***************************************************************************** + * MediaInstance.java: VLC Java Bindings Media Instance + ***************************************************************************** + * Copyright (C) 1998-2008 the VideoLAN team + * + * Authors: Filippo Carone + * + * + * $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 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 MediaPlayer +{ + + private final LibVlcMediaInstance instance; + + private final LibVlc libvlc; + + private final LibVlcEventManager eventManager; + + private List callbacks = new ArrayList(); + + private MediaDescriptor mediaDescriptor; + + MediaPlayer(JVLC jvlc, LibVlcMediaInstance instance) + { + libvlc_exception_t exception = new libvlc_exception_t(); + this.instance = instance; + libvlc = jvlc.getLibvlc(); + eventManager = libvlc.libvlc_media_player_event_manager(instance, exception); + } + + public MediaPlayer(MediaDescriptor mediaDescriptor) + { + libvlc_exception_t exception = new libvlc_exception_t(); + libvlc = mediaDescriptor.getLibvlc(); + instance = libvlc.libvlc_media_player_new_from_media(mediaDescriptor.getInstance(), exception); + eventManager = libvlc.libvlc_media_player_event_manager(instance, exception); + this.mediaDescriptor = mediaDescriptor; + } + + public MediaDescriptor getMediaDescriptor() + { + return mediaDescriptor; + } + + public void play() + { + libvlc_exception_t exception = new libvlc_exception_t(); + libvlc.libvlc_media_player_play(instance, exception); + } + + public void stop() + { + libvlc_exception_t exception = new libvlc_exception_t(); + libvlc.libvlc_media_player_stop(instance, exception); + } + + public void pause() + { + libvlc_exception_t exception = new libvlc_exception_t(); + libvlc.libvlc_media_player_pause(instance, exception); + } + + public long getLength() + { + libvlc_exception_t exception = new libvlc_exception_t(); + return libvlc.libvlc_media_player_get_length(instance, exception); + } + + public long getTime() + { + libvlc_exception_t exception = new libvlc_exception_t(); + return libvlc.libvlc_media_player_get_time(instance, exception); + } + + public void setTime(long time) + { + libvlc_exception_t exception = new libvlc_exception_t(); + libvlc.libvlc_media_player_set_time(instance, time, exception); + } + + public float getPosition() + { + libvlc_exception_t exception = new libvlc_exception_t(); + return libvlc.libvlc_media_player_get_position(instance, exception); + } + + public void setPosition(float position) + { + libvlc_exception_t exception = new libvlc_exception_t(); + libvlc.libvlc_media_player_set_position(instance, position, exception); + } + + public boolean willPlay() + { + libvlc_exception_t exception = new libvlc_exception_t(); + return (libvlc.libvlc_media_player_will_play(instance, exception) == 1); + } + + public float getRate() + { + libvlc_exception_t exception = new libvlc_exception_t(); + return libvlc.libvlc_media_player_get_rate(instance, exception); + } + + public void setRate(float rate) + { + libvlc_exception_t exception = new libvlc_exception_t(); + libvlc.libvlc_media_player_set_rate(instance, rate, exception); + } + + public boolean hasVideoOutput() + { + libvlc_exception_t exception = new libvlc_exception_t(); + return (libvlc.libvlc_media_player_has_vout(instance, exception) == 1); + } + + public float getFPS() + { + libvlc_exception_t exception = new libvlc_exception_t(); + return libvlc.libvlc_media_player_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_MediaPlayerPlayed, + LibVlcEventType.libvlc_MediaPlayerTimeChanged)) + { + 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_MediaPlayerPlayed, + LibVlcEventType.libvlc_MediaPlayerPositionChanged)) + { + libvlc.libvlc_event_detach(eventManager, event.ordinal(), callback, null, exception); + } + } + libvlc.libvlc_media_player_release(instance); + super.finalize(); + } + + /** + * Returns the instance. + * @return the instance + */ + LibVlcMediaInstance getInstance() + { + return instance; + } + +} diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/Playlist.java b/bindings/java/core/src/main/java/org/videolan/jvlc/Playlist.java index 2fc7367216..2820e92c10 100644 --- a/bindings/java/core/src/main/java/org/videolan/jvlc/Playlist.java +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/Playlist.java @@ -116,11 +116,11 @@ public class Playlist { libvlc.libvlc_playlist_loop(libvlcInstance, loop? 1 : 0, exception); } - public MediaInstance getMediaInstance() + public MediaPlayer getMediaInstance() { libvlc_exception_t exception = new libvlc_exception_t(); LibVlcMediaInstance mi = libvlc.libvlc_playlist_get_media_player(libvlcInstance, exception); - return new MediaInstance(jvlc, mi); + return new MediaPlayer(jvlc, mi); } } diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/Video.java b/bindings/java/core/src/main/java/org/videolan/jvlc/Video.java index 402083081a..89a1d06976 100644 --- a/bindings/java/core/src/main/java/org/videolan/jvlc/Video.java +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/Video.java @@ -49,7 +49,7 @@ public class Video /* (non-Javadoc) * @see org.videolan.jvlc.VideoIntf#destroyVideo() */ - public void destroyVideo(MediaInstance media) + public void destroyVideo(MediaPlayer media) { libvlc_exception_t exception = new libvlc_exception_t(); libvlc.libvlc_video_destroy(media.getInstance(), exception ); @@ -59,7 +59,7 @@ public class Video /* (non-Javadoc) * @see org.videolan.jvlc.VideoIntf#getFullscreen() */ - public boolean getFullscreen(MediaInstance media) { + public boolean getFullscreen(MediaPlayer media) { libvlc_exception_t exception = new libvlc_exception_t(); return libvlc.libvlc_get_fullscreen(media.getInstance(), exception) == 1 ? true : false; } @@ -67,7 +67,7 @@ public class Video /* (non-Javadoc) * @see org.videolan.jvlc.VideoIntf#getSnapshot(java.lang.String) */ - public void getSnapshot(MediaInstance media, String filepath, int width, int height) { + public void getSnapshot(MediaPlayer media, String filepath, int width, int height) { libvlc_exception_t exception = new libvlc_exception_t(); libvlc.libvlc_video_take_snapshot(media.getInstance(), filepath, width, height, exception); } @@ -75,7 +75,7 @@ public class Video /* (non-Javadoc) * @see org.videolan.jvlc.VideoIntf#getVideoHeight() */ - public int getHeight(MediaInstance media) { + public int getHeight(MediaPlayer media) { libvlc_exception_t exception = new libvlc_exception_t(); return libvlc.libvlc_video_get_height(media.getInstance(), exception); } @@ -83,7 +83,7 @@ public class Video /* (non-Javadoc) * @see org.videolan.jvlc.VideoIntf#getVideoWidth() */ - public int getWidth(MediaInstance media) { + public int getWidth(MediaPlayer media) { libvlc_exception_t exception = new libvlc_exception_t(); return libvlc.libvlc_video_get_height(media.getInstance(), exception); } @@ -91,7 +91,7 @@ public class Video /* (non-Javadoc) * @see org.videolan.jvlc.VideoIntf#reparentVideo(java.awt.Component) */ - public void reparent(MediaInstance media, java.awt.Canvas canvas) { + public void reparent(MediaPlayer media, java.awt.Canvas canvas) { libvlc_exception_t exception = new libvlc_exception_t(); long drawable = com.sun.jna.Native.getComponentID(canvas); libvlc.libvlc_video_reparent(media.getInstance(), drawable, exception); @@ -108,7 +108,7 @@ public class Video /* (non-Javadoc) * @see org.videolan.jvlc.VideoIntf#setFullscreen(boolean) */ - public void setFullscreen(MediaInstance media, boolean fullscreen) { + public void setFullscreen(MediaPlayer media, boolean fullscreen) { libvlc_exception_t exception = new libvlc_exception_t(); libvlc.libvlc_set_fullscreen(media.getInstance(), fullscreen? 1 : 0, exception); } @@ -116,7 +116,7 @@ public class Video /* (non-Javadoc) * @see org.videolan.jvlc.VideoIntf#toggleFullscreen() */ - public void toggleFullscreen(MediaInstance media) { + public void toggleFullscreen(MediaPlayer media) { libvlc_exception_t exception = new libvlc_exception_t(); libvlc.libvlc_toggle_fullscreen(media.getInstance(), exception); } @@ -124,7 +124,7 @@ public class Video /* (non-Javadoc) * @see org.videolan.jvlc.VideoIntf#getSize() */ - public Dimension getSize(MediaInstance media) { + public Dimension getSize(MediaPlayer media) { return new Dimension (getWidth(media), getHeight(media)); } diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/event/MediaInstanceCallback.java b/bindings/java/core/src/main/java/org/videolan/jvlc/event/MediaInstanceCallback.java index c9a9c596d3..397d46fc20 100644 --- a/bindings/java/core/src/main/java/org/videolan/jvlc/event/MediaInstanceCallback.java +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/event/MediaInstanceCallback.java @@ -25,7 +25,7 @@ package org.videolan.jvlc.event; -import org.videolan.jvlc.MediaInstance; +import org.videolan.jvlc.MediaPlayer; import org.videolan.jvlc.internal.LibVlc; import org.videolan.jvlc.internal.LibVlcEventType; import org.videolan.jvlc.internal.LibVlc.LibVlcCallback; @@ -39,9 +39,9 @@ public class MediaInstanceCallback implements LibVlcCallback { private MediaInstanceListener listener; - private MediaInstance mediaInstance; + private MediaPlayer mediaInstance; - public MediaInstanceCallback(MediaInstance mediaInstance, MediaInstanceListener listener) + public MediaInstanceCallback(MediaPlayer mediaInstance, MediaInstanceListener listener) { this.mediaInstance = mediaInstance; this.listener = listener; diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/event/MediaInstanceListener.java b/bindings/java/core/src/main/java/org/videolan/jvlc/event/MediaInstanceListener.java index 784aa94800..23f671d2e2 100644 --- a/bindings/java/core/src/main/java/org/videolan/jvlc/event/MediaInstanceListener.java +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/event/MediaInstanceListener.java @@ -25,20 +25,20 @@ package org.videolan.jvlc.event; -import org.videolan.jvlc.MediaInstance; +import org.videolan.jvlc.MediaPlayer; public interface MediaInstanceListener { - void played(MediaInstance mediaInstance); + void played(MediaPlayer mediaInstance); - void paused(MediaInstance mediaInstance); + void paused(MediaPlayer mediaInstance); - void endReached(MediaInstance mediaInstance); + void endReached(MediaPlayer mediaInstance); - void timeChanged(MediaInstance mediaInstance, long newTime); + void timeChanged(MediaPlayer mediaInstance, long newTime); - void positionChanged(MediaInstance mediaInstance); + void positionChanged(MediaPlayer mediaInstance); } diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/example/VLCExample.java b/bindings/java/core/src/main/java/org/videolan/jvlc/example/VLCExample.java index 53cac89fb3..263712f725 100644 --- a/bindings/java/core/src/main/java/org/videolan/jvlc/example/VLCExample.java +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/example/VLCExample.java @@ -3,7 +3,7 @@ package org.videolan.jvlc.example; import org.videolan.jvlc.Audio; import org.videolan.jvlc.JVLC; import org.videolan.jvlc.MediaDescriptor; -import org.videolan.jvlc.MediaInstance; +import org.videolan.jvlc.MediaPlayer; import org.videolan.jvlc.VLCException; import org.videolan.jvlc.Video; import org.videolan.jvlc.event.MediaInstanceListener; @@ -31,32 +31,32 @@ public class VLCExample System.out.println("... done."); MediaDescriptor mediaDescriptor = new MediaDescriptor(jvlc, "/home/carone/apps/a.avi"); - MediaInstance mediaInstance = mediaDescriptor.getMediaInstance(); + MediaPlayer mediaInstance = mediaDescriptor.getMediaInstance(); mediaInstance.addListener(new MediaInstanceListener() { - public void endReached(MediaInstance mediaInstance) + public void endReached(MediaPlayer mediaInstance) { System.out.println("Media instance end reached. MRL: " + mediaInstance.getMediaDescriptor().getMrl()); } - public void paused(MediaInstance mediaInstance) + public void paused(MediaPlayer mediaInstance) { System.out.println("Media instance paused. MRL: " + mediaInstance.getMediaDescriptor().getMrl()); } - public void played(MediaInstance mediaInstance) + public void played(MediaPlayer mediaInstance) { System.out.println("Media instance played. MRL: " + mediaInstance.getMediaDescriptor().getMrl()); } - public void positionChanged(MediaInstance mediaInstance) + public void positionChanged(MediaPlayer mediaInstance) { // TODO Auto-generated method stub } - public void timeChanged(MediaInstance mediaInstance, long newTime) + public void timeChanged(MediaPlayer mediaInstance, long newTime) { System.out.println("new time: " + newTime); } diff --git a/bindings/java/core/src/test/java/org/videolan/jvlc/JVLCTest.java b/bindings/java/core/src/test/java/org/videolan/jvlc/JVLCTest.java index 17ec661131..451ae8ccf3 100644 --- a/bindings/java/core/src/test/java/org/videolan/jvlc/JVLCTest.java +++ b/bindings/java/core/src/test/java/org/videolan/jvlc/JVLCTest.java @@ -46,7 +46,7 @@ public class JVLCTest public void jvlcPlay() { JVLC jvlc = new JVLC(); - MediaInstance instance = jvlc.play(mrl); + MediaPlayer instance = jvlc.play(mrl); Assert.assertNotNull(instance); } -- 2.39.2