[vlc-devel] [PATCH 2/2] Build the iomx shared library for ice cream sandwich, too

Martin Storsjö martin at martin.st
Fri Dec 16 22:47:08 CET 2011


---
I haven't got any proper working ICS device with working
hw decoding yet, but this shows the principle of how to build
different versions of the IOMX plugin into one single apk.

 install.sh                                         |   10 +++++++---
 vlc-android/jni/Android.mk                         |   13 +++++++++++--
 .../src/org/videolan/vlc/android/LibVLC.java       |    6 +++++-
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/install.sh b/install.sh
index d2bec3a..116405c 100644
--- a/install.sh
+++ b/install.sh
@@ -13,9 +13,13 @@ echo "Fetching Android system headers"
 # "Stagefright: Memcpy optimization on output port." (available
 # upstream at https://www.codeaurora.org/gitweb/quic/la/?p=platform/frameworks/base.git;a=commit;h=052368f194c9fc180b9b0335b60114a2f1fb88d8),
 # which adds some vtable entries needed on newer qualcomm devices.
-$GIT clone -b gingerbread --depth=1 git://github.com/CyanogenMod/android_frameworks_base.git android-headers/frameworks/base
-$GIT clone -b gingerbread --depth=1 git://github.com/CyanogenMod/android_system_core.git android-headers/system/core
-export ANDROID_SYS_HEADERS=${PWD}/android-headers
+$GIT clone -b gingerbread --depth=1 git://github.com/CyanogenMod/android_frameworks_base.git android-headers-gingerbread/frameworks/base
+$GIT clone -b gingerbread --depth=1 git://github.com/CyanogenMod/android_system_core.git android-headers-gingerbread/system/core
+$GIT clone -b ics --depth=1 git://github.com/CyanogenMod/android_frameworks_base.git android-headers-gingerbread/frameworks/base
+$GIT clone -b ics --depth=1 git://github.com/CyanogenMod/android_system_core.git android-headers-ics/system/core
+$GIT clone -b ics --depth=1  git://github.com/CyanogenMod/android_hardware_libhardware.git android-headers-ics/hardware/libhardware
+export ANDROID_SYS_HEADERS_GINGERBREAD=${PWD}/android-headers-gingerbread
+export ANDROID_SYS_HEADERS_ICS=${PWD}/android-headers-ics
 
 echo "Fetching Android libraries for linking"
 # Libraries from any froyo/gingerbread device/emulator should work
diff --git a/vlc-android/jni/Android.mk b/vlc-android/jni/Android.mk
index 06b547c..2d0b6a6 100644
--- a/vlc-android/jni/Android.mk
+++ b/vlc-android/jni/Android.mk
@@ -29,9 +29,18 @@ include $(BUILD_SHARED_LIBRARY)
 
 include $(CLEAR_VARS)
 
-LOCAL_MODULE     := libiomx
+LOCAL_MODULE     := libiomx-gingerbread
 LOCAL_SRC_FILES  := ../$(VLC_SRC_DIR)/modules/codec/omxil/iomx.cpp
-LOCAL_C_INCLUDES := $(VLC_SRC_DIR)/modules/codec/omxil $(ANDROID_SYS_HEADERS)/frameworks/base/include $(ANDROID_SYS_HEADERS)/system/core/include
+LOCAL_C_INCLUDES := $(VLC_SRC_DIR)/modules/codec/omxil $(ANDROID_SYS_HEADERS_GINGERBREAD)/frameworks/base/include $(ANDROID_SYS_HEADERS_GINGERBREAD)/system/core/include
+LOCAL_LDLIBS     := -L$(ANDROID_LIBS) -lgcc -lstagefright -lmedia -lutils -lbinder
+
+include $(BUILD_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE     := libiomx-ics
+LOCAL_SRC_FILES  := ../$(VLC_SRC_DIR)/modules/codec/omxil/iomx.cpp
+LOCAL_C_INCLUDES := $(VLC_SRC_DIR)/modules/codec/omxil $(ANDROID_SYS_HEADERS_ICS)/frameworks/base/include $(ANDROID_SYS_HEADERS_ICS)/frameworks/base/native/include $(ANDROID_SYS_HEADERS_ICS)/system/core/include $(ANDROID_SYS_HEADERS_ICS)/hardware/libhardware/include
 LOCAL_LDLIBS     := -L$(ANDROID_LIBS) -lgcc -lstagefright -lmedia -lutils -lbinder
 
 include $(BUILD_SHARED_LIBRARY)
diff --git a/vlc-android/src/org/videolan/vlc/android/LibVLC.java b/vlc-android/src/org/videolan/vlc/android/LibVLC.java
index 8f9b67a..c07c384 100644
--- a/vlc-android/src/org/videolan/vlc/android/LibVLC.java
+++ b/vlc-android/src/org/videolan/vlc/android/LibVLC.java
@@ -4,6 +4,7 @@ import android.util.Log;
 import android.view.Surface;
 import android.preference.PreferenceManager;
 import android.content.SharedPreferences;
+import android.os.Build;
 
 public class LibVLC {
     private static final String TAG = "VLC/LibVLC";
@@ -30,7 +31,10 @@ public class LibVLC {
     /* Load library before object instantiation */
     static {
         try {
-            System.loadLibrary("iomx");
+            if (Build.VERSION.SDK_INT <= 10)
+                System.loadLibrary("iomx-gingerbread");
+            else /* No honeycomb build for now */
+                System.loadLibrary("iomx-ics");
         } catch (Throwable t) {
             t.printStackTrace();
         }
-- 
1.7.2.5




More information about the vlc-devel mailing list