From 75ca093c51cb752aba46030edfc749db1d5cb207 Mon Sep 17 00:00:00 2001 From: artdeell Date: Wed, 26 Apr 2023 00:00:19 +0300 Subject: [PATCH 1/2] Start working on support for the FFmpeg plugin --- .../src/main/AndroidManifest.xml | 4 ++- .../main/java/net/kdt/pojavlaunch/Tools.java | 2 ++ .../kdt/pojavlaunch/plugins/FFmpegPlugin.java | 27 +++++++++++++++++++ .../net/kdt/pojavlaunch/utils/JREUtils.java | 8 ++++++ 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/plugins/FFmpegPlugin.java 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..d219d02f4 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"); @@ -317,6 +324,7 @@ public class JREUtils { initJavaRuntime(); setupExitTrap(activity.getApplication()); chdir(gameDirectory == null ? Tools.DIR_GAME_NEW : gameDirectory); + FFmpegPlugin.selfTest(); userArgs.add(0,"java"); //argv[0] is the program name according to C standard. final int exitCode = VMLauncher.launchJVM(userArgs.toArray(new String[0])); From d7df183b66063671d0a8985e21d1f0cbc6ec46fd Mon Sep 17 00:00:00 2001 From: ArtDev <45949002+artdeell@users.noreply.github.com> Date: Wed, 26 Apr 2023 00:07:03 +0300 Subject: [PATCH 2/2] Remove self test call --- .../src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java | 1 - 1 file changed, 1 deletion(-) 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 d219d02f4..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 @@ -324,7 +324,6 @@ public class JREUtils { initJavaRuntime(); setupExitTrap(activity.getApplication()); chdir(gameDirectory == null ? Tools.DIR_GAME_NEW : gameDirectory); - FFmpegPlugin.selfTest(); userArgs.add(0,"java"); //argv[0] is the program name according to C standard. final int exitCode = VMLauncher.launchJVM(userArgs.toArray(new String[0]));