From de9e17f44c6e4e702e86c33d194ca2f41a4c73c6 Mon Sep 17 00:00:00 2001
From: Stephane Dallongeville <stephane.dallongeville@pasteur.fr>
Date: Wed, 17 Nov 2021 12:26:27 +0100
Subject: [PATCH] Added XugglerPlugin.init() to help with native library
 loading

---
 .../plugins/stef/library/XugglerPlugin.java   | 45 ++++++++++++++++++-
 1 file changed, 44 insertions(+), 1 deletion(-)

diff --git a/src/main/java/plugins/stef/library/XugglerPlugin.java b/src/main/java/plugins/stef/library/XugglerPlugin.java
index fcc5528..4be5c8d 100644
--- a/src/main/java/plugins/stef/library/XugglerPlugin.java
+++ b/src/main/java/plugins/stef/library/XugglerPlugin.java
@@ -1,5 +1,7 @@
 package plugins.stef.library;
 
+import com.xuggle.ferry.Ferry;
+
 import icy.plugin.abstract_.Plugin;
 import icy.plugin.interface_.PluginLibrary;
 
@@ -10,5 +12,46 @@ import icy.plugin.interface_.PluginLibrary;
  */
 public class XugglerPlugin extends Plugin implements PluginLibrary
 {
-    //
+    static boolean initialized = false;
+
+    /**
+     * Force initialization (native library loading mainly) of Xuggler library
+     */
+    public static synchronized void init()
+    {
+        // we try the easier library loading process
+        if (!initialized)
+        {
+            Throwable error = null;
+
+            if (loadLibrary(XugglerPlugin.class, "xuggle"))
+                initialized = true;
+
+            try
+            {
+
+                Ferry.load();
+                initialized = true;
+            }
+            catch (Throwable t)
+            {
+                error = t;
+            }
+
+            if (!initialized)
+            {
+                if (error != null)
+                    System.err.println(error.getMessage());
+                System.err.println("Xuggler native library load failed.");
+            }
+        }
+    }
+
+    /**
+     * @return true if Xuggler library has been initialized
+     */
+    public static boolean isInitialized()
+    {
+        return initialized;
+    }
 }
-- 
GitLab