From b13af01383b8eaf4500e89b709975a7f00f87f8a Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Sun, 21 Nov 2021 21:29:11 +0100
Subject: [PATCH] #173 - Add null check for ffmpeg and ffprobe initialization

---
 .../plugin/content/util/FfmpegUtils.scala     | 24 +++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/util/FfmpegUtils.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/util/FfmpegUtils.scala
index d82c9a76..548b5531 100644
--- a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/util/FfmpegUtils.scala
+++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/util/FfmpegUtils.scala
@@ -8,6 +8,7 @@ import de.tobias.playpad.profile.Profile
 import javafx.util.Pair
 import net.bramp.ffmpeg.builder.FFmpegBuilder
 import net.bramp.ffmpeg.{FFmpeg, FFmpegExecutor, FFprobe}
+import org.apache.commons.lang3.StringUtils
 
 import java.nio.file.{Files, Path}
 
@@ -21,11 +22,26 @@ object FfmpegUtils {
 		val profile = Profile.currentProfile()
 		val contentPluginConfiguration = profile.getCustomSettings(ContentPluginMain.zoneConfigurationKey).asInstanceOf[ContentPlayerPluginConfiguration]
 
-		ffmpeg = new FFmpeg(contentPluginConfiguration.ffmpegExecutable)
-		ffprobe = new FFprobe(contentPluginConfiguration.ffprobeExecutable)
+		if (StringUtils.isNotEmpty(contentPluginConfiguration.ffmpegExecutable) && StringUtils.isNotEmpty(contentPluginConfiguration.ffprobeExecutable)) {
+			ffmpeg = new FFmpeg(contentPluginConfiguration.ffmpegExecutable)
+			ffprobe = new FFprobe(contentPluginConfiguration.ffprobeExecutable)
+		}
+	}
+
+	def checkInitialization(): Boolean = {
+		if (ffprobe == null || ffmpeg == null) {
+			initialize()
+
+			return ffprobe != null && ffmpeg != null
+		}
+		true
 	}
 
 	def getResolution(path: Path): Pair[Int, Int] = {
+		if (!checkInitialization()) {
+			return null
+		}
+
 		val probeResult = ffprobe.probe(path.toAbsolutePath.toString)
 
 		val stream = probeResult.streams.head
@@ -36,6 +52,10 @@ object FfmpegUtils {
 	}
 
 	def convertMediaVStack(path: Path): Unit = {
+		if (!checkInitialization()) {
+			return
+		}
+
 		val globalSettings = PlayPadPlugin.getInstance.getGlobalSettings
 		val convertPath = globalSettings.getCachePath.resolve(path.getFileName + ".mp4")
 
-- 
GitLab