]> sjero.net Git - linphone/commitdiff
Load neon liblinphone if fails to load no-neon liblinphone
authorSylvain Berfini <Sylvain.Berfini@Belledonne-Communications.com>
Thu, 10 May 2012 08:46:41 +0000 (10:46 +0200)
committerSylvain Berfini <Sylvain.Berfini@Belledonne-Communications.com>
Thu, 10 May 2012 08:46:41 +0000 (10:46 +0200)
LinphoneCoreFactoryImpl.java

index 99c880e3761ebf118a78749b675419bd3dbd186f..8cc721e90fa979684b747e49d1e9795c7c295819 100644 (file)
@@ -28,21 +28,30 @@ import android.util.Log;
 
 public class LinphoneCoreFactoryImpl extends LinphoneCoreFactory {
 
-       private static void loadOptionalLibrary(String s) {
+       private static boolean loadOptionalLibrary(String s) {
                try {
                        System.loadLibrary(s);
+                       return true;
                } catch (Throwable e) {
                        Log.w("Unable to load optional library lib", s);
                }
+               return false;
        }
 
        static {
                // FFMPEG (audio/video)
                if (!hasNeonInCpuFeatures()) {
-                       loadOptionalLibrary("avutilnoneon");
-                       loadOptionalLibrary("swscalenoneon");
-                       loadOptionalLibrary("avcorenoneon");
-                       loadOptionalLibrary("avcodecnoneon");
+                       boolean noNeonLibrariesLoaded = true;
+                       noNeonLibrariesLoaded = noNeonLibrariesLoaded && loadOptionalLibrary("avutilnoneon");
+                       noNeonLibrariesLoaded = noNeonLibrariesLoaded && loadOptionalLibrary("swscalenoneon");
+                       noNeonLibrariesLoaded = noNeonLibrariesLoaded && loadOptionalLibrary("avcorenoneon");
+                       noNeonLibrariesLoaded = noNeonLibrariesLoaded && loadOptionalLibrary("avcodecnoneon");
+                       if (!noNeonLibrariesLoaded) {
+                               loadOptionalLibrary("avutil");
+                               loadOptionalLibrary("swscale");
+                               loadOptionalLibrary("avcore");
+                               loadOptionalLibrary("avcodec");
+                       }
                } else {
                        loadOptionalLibrary("avutil");
                        loadOptionalLibrary("swscale");
@@ -67,8 +76,13 @@ public class LinphoneCoreFactoryImpl extends LinphoneCoreFactory {
 
                //Main library
                if (!hasNeonInCpuFeatures()) {
-                       System.loadLibrary("linphonenoneon"); 
-                       Log.w("linphone", "No-neon liblinphone loaded");
+                       try {
+                               System.loadLibrary("linphonenoneon"); 
+                               Log.w("linphone", "No-neon liblinphone loaded");
+                       } catch (UnsatisfiedLinkError ule) {
+                               Log.w("linphone", "Failed to load no-neon liblinphone, loading neon liblinphone");
+                               System.loadLibrary("linphone"); 
+                       }
                } else {
                        System.loadLibrary("linphone"); 
                }