diff --git a/app_pojavlauncher/src/main/AndroidManifest.xml b/app_pojavlauncher/src/main/AndroidManifest.xml index 976b7bfae..353881623 100644 --- a/app_pojavlauncher/src/main/AndroidManifest.xml +++ b/app_pojavlauncher/src/main/AndroidManifest.xml @@ -120,5 +120,7 @@ android:name=".services.GameService" android:process=":game" /> - + + + \ No newline at end of file diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index da806624f..bae59ab7a 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -18,6 +18,7 @@ import java.util.*; import net.kdt.pojavlaunch.extra.ExtraConstants; import net.kdt.pojavlaunch.extra.ExtraCore; import net.kdt.pojavlaunch.multirt.MultiRTUtils; +import net.kdt.pojavlaunch.plugins.FFmpegPlugin; import net.kdt.pojavlaunch.prefs.*; import net.kdt.pojavlaunch.utils.*; import net.kdt.pojavlaunch.value.*; @@ -179,6 +180,7 @@ public final class Tools { javaArgList.add(versionInfo.mainClass); javaArgList.addAll(Arrays.asList(launchArgs)); // ctx.appendlnToLog("full args: "+javaArgList.toString()); + FFmpegPlugin.discover(activity); JREUtils.launchJavaVM(activity, gamedirPath, javaArgList); } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/plugins/FFmpegPlugin.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/plugins/FFmpegPlugin.java new file mode 100644 index 000000000..dcfab2927 --- /dev/null +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/plugins/FFmpegPlugin.java @@ -0,0 +1,27 @@ +package net.kdt.pojavlaunch.plugins; + +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.util.Log; + +import net.kdt.pojavlaunch.Tools; + +import java.io.File; +import java.io.IOException; +import java.util.Scanner; + +public class FFmpegPlugin { + public static boolean isAvailable = false; + public static String libraryPath; + public static void discover(Context context) { + PackageManager manager = context.getPackageManager(); + try { + PackageInfo ffmpegPluginInfo = manager.getPackageInfo("net.kdt.pojavlaunch.ffmpeg", PackageManager.GET_SHARED_LIBRARY_FILES); + libraryPath = ffmpegPluginInfo.applicationInfo.nativeLibraryDir; + isAvailable = true; + }catch (Exception e) { + Log.i("FFmpegPlugin", "Failed to discover plugin", e); + } + } +} diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java index 87368a6d8..fb64170d5 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java @@ -20,6 +20,7 @@ import java.util.*; import net.kdt.pojavlaunch.*; import net.kdt.pojavlaunch.extra.ExtraConstants; import net.kdt.pojavlaunch.extra.ExtraCore; +import net.kdt.pojavlaunch.plugins.FFmpegPlugin; import net.kdt.pojavlaunch.prefs.*; import org.lwjgl.glfw.*; @@ -174,6 +175,9 @@ public class JREUtils { String libName = is64BitsDevice() ? "lib64" : "lib"; StringBuilder ldLibraryPath = new StringBuilder(); + if(FFmpegPlugin.isAvailable) { + ldLibraryPath.append(FFmpegPlugin.libraryPath+":"); + } ldLibraryPath.append( Tools.DIR_HOME_JRE + "/" + Tools.DIRNAME_HOME_JRE + "/jli:" + Tools.DIR_HOME_JRE + "/" + Tools.DIRNAME_HOME_JRE + ":" @@ -223,6 +227,9 @@ public class JREUtils { envMap.put("LD_LIBRARY_PATH", LD_LIBRARY_PATH); envMap.put("PATH", Tools.DIR_HOME_JRE + "/bin:" + Os.getenv("PATH")); + if(FFmpegPlugin.isAvailable) { + envMap.put("PATH", FFmpegPlugin.libraryPath+":"+envMap.get("PATH")); + } envMap.put("REGAL_GL_VENDOR", "Android"); envMap.put("REGAL_GL_RENDERER", "Regal");