[Android] LibVLC: factorize, only one way to know if we use direct rendering

Thomas Guillem git at videolan.org
Thu Oct 9 14:32:56 CEST 2014


vlc-ports/android | branch: tv | Thomas Guillem <thomas.guillem at gmail.com> | Wed Oct  8 12:00:02 2014 +0200| [e36ac772bc1873ae5006f07b2ca103e363efcebb] | committer: Geoffrey Métais

LibVLC: factorize, only one way to know if we use direct rendering

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc-ports/android.git/?a=commit;h=e36ac772bc1873ae5006f07b2ca103e363efcebb
---

 vlc-android/jni/libvlcjni.c                              |   14 +++++---------
 vlc-android/src/org/videolan/libvlc/LibVLC.java          |    5 +++++
 .../org/videolan/vlc/gui/video/VideoPlayerActivity.java  |    4 ++--
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/vlc-android/jni/libvlcjni.c b/vlc-android/jni/libvlcjni.c
index 1e2d7d6..8406a87 100644
--- a/vlc-android/jni/libvlcjni.c
+++ b/vlc-android/jni/libvlcjni.c
@@ -43,10 +43,6 @@
 #define VOUT_ANDROID_SURFACE 0
 #define VOUT_OPENGLES2       1
 
-#define HW_ACCELERATION_DISABLED 0
-#define HW_ACCELERATION_DECODING 1
-#define HW_ACCELERATION_FULL     2
-
 #define LOG_TAG "VLC/JNI/main"
 #include "log.h"
 
@@ -270,10 +266,10 @@ void Java_org_videolan_libvlc_LibVLC_nativeInit(JNIEnv *env, jobject thiz)
     methodId = (*env)->GetMethodID(env, cls, "isVerboseMode", "()Z");
     verbosity = (*env)->CallBooleanMethod(env, thiz, methodId);
 
-    methodId = (*env)->GetMethodID(env, cls, "getHardwareAcceleration", "()I");
-    int hardwareAcceleration = (*env)->CallIntMethod(env, thiz, methodId);
+    methodId = (*env)->GetMethodID(env, cls, "isDirectRendering", "()Z");
+    bool direct_rendering = (*env)->CallBooleanMethod(env, thiz, methodId);
     /* With the MediaCodec opaque mode we cannot use the OpenGL ES vout. */
-    if (hardwareAcceleration == HW_ACCELERATION_FULL)
+    if (direct_rendering)
         use_opengles2 = false;
 
     methodId = (*env)->GetMethodID(env, cls, "getCachePath", "()Ljava/lang/String;");
@@ -311,8 +307,8 @@ void Java_org_videolan_libvlc_LibVLC_nativeInit(JNIEnv *env, jobject thiz)
         use_opengles2 ? "--vout=gles2" : "--vout=androidsurface",
         "--androidsurface-chroma", chromastr != NULL && chromastr[0] != 0 ? chromastr : "RV32",
         /* XXX: we can't recover from direct rendering failure */
-        (hardwareAcceleration == HW_ACCELERATION_FULL) ? "" : "--no-mediacodec-dr",
-        (hardwareAcceleration == HW_ACCELERATION_FULL) ? "" : NO_IOMX_DR,
+        direct_rendering ? "" : "--no-mediacodec-dr",
+        direct_rendering ? "" : NO_IOMX_DR,
 
         /* Reconnect on lost HTTP streams, e.g. network change */
         enable_http_reconnect ? "--http-reconnect" : "",
diff --git a/vlc-android/src/org/videolan/libvlc/LibVLC.java b/vlc-android/src/org/videolan/libvlc/LibVLC.java
index 62a16a9..c30f61c 100644
--- a/vlc-android/src/org/videolan/libvlc/LibVLC.java
+++ b/vlc-android/src/org/videolan/libvlc/LibVLC.java
@@ -293,6 +293,11 @@ public class LibVLC {
         }
     }
 
+
+    public boolean isDirectRendering() {
+        return this.hardwareAcceleration == HW_ACCELERATION_FULL;
+    }
+
     public String[] getMediaOptions(boolean noHardwareAcceleration, boolean noVideo) {
         if (!noHardwareAcceleration)
             noHardwareAcceleration = getHardwareAcceleration() == HW_ACCELERATION_DISABLED;
diff --git a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
index a4335df..c8df820 100644
--- a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
+++ b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
@@ -427,7 +427,7 @@ public class VideoPlayerActivity extends Activity implements IVideoPlayer {
                         + Integer.toString(mLibVLC.getHardwareAcceleration()));
 
         /* Only show the subtitles surface when using "Full Acceleration" mode */
-        if (mLibVLC.getHardwareAcceleration() == LibVLC.HW_ACCELERATION_FULL)
+        if (mLibVLC.isDirectRendering())
             mSubtitlesSurface.setVisibility(View.VISIBLE);
         // Signal to LibVLC that the videoPlayerActivity was created, thus the
         // SurfaceView is now available for MediaCodec direct rendering.
@@ -2397,7 +2397,7 @@ public class VideoPlayerActivity extends Activity implements IVideoPlayer {
             mSubtitlesSurfaceHolder.addCallback(activity.mSubtitlesSurfaceCallback);
 
             /* Only show the subtitles surface when using "Full Acceleration" mode */
-            if (mLibVLC != null && mLibVLC.getHardwareAcceleration() == LibVLC.HW_ACCELERATION_FULL)
+            if (mLibVLC != null && mLibVLC.isDirectRendering())
                 mSubtitlesSurface.setVisibility(View.VISIBLE);
             Log.i(TAG, "Secondary display created");
         }



More information about the Android mailing list