]> git.sesse.net Git - vlc/blobdiff - bindings/java/core/src/main/java/org/videolan/jvlc/event/MediaPlayerCallback.java
jvlc: errorOccurred callback added
[vlc] / bindings / java / core / src / main / java / org / videolan / jvlc / event / MediaPlayerCallback.java
index db878e71a9e5c0f5dbf08f395b7c1a3d4e63d9ef..849950ca46f522f3daabd3b7aa47efe87660d721 100644 (file)
@@ -25,6 +25,8 @@
 
 package org.videolan.jvlc.event;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.videolan.jvlc.MediaPlayer;
 import org.videolan.jvlc.internal.LibVlc;
 import org.videolan.jvlc.internal.LibVlcEventType;
@@ -39,11 +41,16 @@ public class MediaPlayerCallback implements LibVlcCallback
 {
 
     private MediaPlayerListener listener;
-    private MediaPlayer mediaInstance;
+    private MediaPlayer mediaPlayer;
+
+    /**
+     * Logger.
+     */
+    private Logger log = LoggerFactory.getLogger(MediaPlayerCallback.class);
 
     public MediaPlayerCallback(MediaPlayer mediaInstance, MediaPlayerListener listener)
     {
-        this.mediaInstance = mediaInstance;
+        this.mediaPlayer = mediaInstance;
         this.listener = listener;
     }
     /**
@@ -53,30 +60,39 @@ public class MediaPlayerCallback implements LibVlcCallback
     {
         if (libvlc_event.type == LibVlcEventType.libvlc_MediaPlayerPlaying.ordinal())
         {
-            listener.played(mediaInstance);
+            listener.playing(mediaPlayer);
         }
         else if (libvlc_event.type == LibVlcEventType.libvlc_MediaPlayerPaused.ordinal())
         {
-            listener.paused(mediaInstance);
+            listener.paused(mediaPlayer);
         }
         else if (libvlc_event.type == LibVlcEventType.libvlc_MediaPlayerEndReached.ordinal())
         {
-            listener.endReached(mediaInstance);
+            listener.endReached(mediaPlayer);
         }
         else if (libvlc_event.type == LibVlcEventType.libvlc_MediaPlayerPositionChanged.ordinal())
         {
-            listener.positionChanged(mediaInstance);
+            listener.positionChanged(mediaPlayer);
+        }
+        else if (libvlc_event.type == LibVlcEventType.libvlc_MediaPlayerStopped.ordinal())
+        {
+            listener.stopped(mediaPlayer);
         }
         else if (libvlc_event.type == LibVlcEventType.libvlc_MediaPlayerTimeChanged.ordinal())
         {
             libvlc_event.event_type_specific.setType(LibVlc.media_player_time_changed.class);
             LibVlc.media_player_time_changed timeChanged = (media_player_time_changed) libvlc_event.event_type_specific
                 .readField("media_player_time_changed");
-            listener.timeChanged(mediaInstance, timeChanged.new_time);
+            listener.timeChanged(mediaPlayer, timeChanged.new_time);
+        }
+        else if (libvlc_event.type == LibVlcEventType.libvlc_MediaPlayerEncounteredError.ordinal())
+        {
+            log.warn("Media player encountered error.");
+            listener.errorOccurred(mediaPlayer);
         }
         else
         {
-            throw new RuntimeException("Unsupported event error. Event id: " + libvlc_event.type);
+            log.debug("Unsupported event error. Event id: {}", libvlc_event.type);
         }
     }
 }