integrate patch from Ticket #725. needs testing.
authorFilippo Carone <littlejohn@videolan.org>
Tue, 24 Oct 2006 22:23:49 +0000 (22:23 +0000)
committerFilippo Carone <littlejohn@videolan.org>
Tue, 24 Oct 2006 22:23:49 +0000 (22:23 +0000)
org/videolan/jvlc/VLM.java
src/video-jni.cc
src/vlm-jni.cc

index e16fd6a..5a38a8c 100644 (file)
@@ -19,6 +19,15 @@ public class VLM implements VLMIntf {
        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;
@@ -68,6 +77,43 @@ public class VLM implements VLMIntf {
                _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;
        }
index 1f01bba..e14fbf6 100644 (file)
@@ -200,7 +200,7 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_Video__1reparent (JNIEnv *env, job
     XSetBackground(dsi_x11->display, gc, 0);
 
     /* and reparent */
-    libvlc_video_reparent( input, dsi_x11->drawable, exception );
+    libvlc_video_reparent( input, (libvlc_drawable_t)dsi_x11->drawable, exception );
 
     CHECK_EXCEPTION_FREE ;
 
index c43db60..637d93c 100644 (file)
@@ -217,3 +217,61 @@ JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1pauseMedia (JNIEnv *env, job
     }    
 }
 
+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_FREE ;
+
+    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_FREE ;
+
+    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_FREE ; \
+    \
+    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