diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java index a75af835f..a779a8222 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java @@ -816,7 +816,12 @@ public final class Configuration { @ConfigurationDefaultDouble(1.0) @ConfigurationCategory("display") @ConfigurationName("gui.scale") - public static ConfigurationItem uiScale = null; + public static ConfigurationItem uiScale = null; + + @ConfigurationDefaultBoolean(true) + @ConfigurationName("warning.video.vlc") + @ConfigurationCategory("display") + public static ConfigurationItem warningVideoVlc = null; private enum OSId { WINDOWS, OSX, UNIX diff --git a/libsrc/ffdec_lib/src/com/jpexs/video/SimpleMediaPlayer.java b/libsrc/ffdec_lib/src/com/jpexs/video/SimpleMediaPlayer.java index ea7894a7c..230999818 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/video/SimpleMediaPlayer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/video/SimpleMediaPlayer.java @@ -1,9 +1,7 @@ package com.jpexs.video; -import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.helpers.Helper; import java.awt.image.BufferedImage; -import java.lang.annotation.Native; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; @@ -11,17 +9,7 @@ import com.sun.jna.NativeLibrary; import com.sun.jna.Platform; import com.sun.jna.platform.win32.Advapi32Util; import com.sun.jna.platform.win32.WinReg; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.PrintStream; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.swing.SwingUtilities; import uk.co.caprica.vlcj.factory.MediaPlayerFactory; -import uk.co.caprica.vlcj.factory.discovery.NativeDiscovery; -import uk.co.caprica.vlcj.factory.discovery.provider.DirectoryProviderDiscoveryStrategy; -import uk.co.caprica.vlcj.factory.discovery.strategy.NativeDiscoveryStrategy; import uk.co.caprica.vlcj.media.MediaRef; import uk.co.caprica.vlcj.medialist.MediaList; import uk.co.caprica.vlcj.medialist.MediaListRef; @@ -33,7 +21,6 @@ import uk.co.caprica.vlcj.player.embedded.videosurface.VideoSurfaceAdapters; import uk.co.caprica.vlcj.player.embedded.videosurface.callback.BufferFormat; import uk.co.caprica.vlcj.player.embedded.videosurface.callback.BufferFormatCallback; import uk.co.caprica.vlcj.player.embedded.videosurface.callback.RenderCallback; -import uk.co.caprica.vlcj.player.embedded.videosurface.callback.format.RV32BufferFormat; import uk.co.caprica.vlcj.player.list.MediaListPlayer; import uk.co.caprica.vlcj.player.list.MediaListPlayerEventAdapter; import uk.co.caprica.vlcj.player.list.PlaybackMode; diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index ab3a8f6f3..cfe06a3b1 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -52,6 +52,7 @@ import com.jpexs.decompiler.flash.gui.pipes.FirstInstance; import com.jpexs.decompiler.flash.gui.proxy.ProxyFrame; import com.jpexs.decompiler.flash.helpers.SWFDecompilerPlugin; import com.jpexs.decompiler.flash.tags.DefineBinaryDataTag; +import com.jpexs.decompiler.flash.tags.DefineVideoStreamTag; import com.jpexs.decompiler.flash.tags.DoABC2Tag; import com.jpexs.decompiler.flash.tags.FileAttributesTag; import com.jpexs.decompiler.flash.tags.SetBackgroundColorTag; @@ -1164,6 +1165,8 @@ public class Main { } result.sourceInfo = sourceInfo; + + boolean hasVideoStreams = false; for (Openable openable : result) { openable.setOpenableList(result); @@ -1178,7 +1181,13 @@ public class Main { int height = (int) ((swf.displayRect.Ymax - swf.displayRect.Ymin) / SWF.unitDivisor); logger.log(Level.INFO, "Width: {0}", width); logger.log(Level.INFO, "Height: {0}", height); - + + for (Tag t: swf.getTags()) { + if (t instanceof DefineVideoStreamTag) { + hasVideoStreams = true; + } + } + swf.addEventListener(new EventListener() { @Override public void handleExportingEvent(String type, int index, int count, Object data) { @@ -1224,6 +1233,16 @@ public class Main { }); } } + + if (hasVideoStreams && !DefineVideoStreamTag.displayAvailable()) { + View.execInEventDispatchLater(new Runnable() { + @Override + public void run() { + ViewMessages.showMessageDialog(getDefaultMessagesComponent(), AppStrings.translate("message.video.installvlc").replace("%file%", sourceInfo.getFileTitleOrName()), AppStrings.translate("message.warning"), JOptionPane.WARNING_MESSAGE, Configuration.warningVideoVlc); + } + + }); + } return result; } diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties index fd9bb5cbf..69c78cdda 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties @@ -623,3 +623,6 @@ config.description.flattenASPackages = Make one item per package instead of pack config.name.gui.scale = UI scale factor config.description.gui.scale = Scaling factor of graphics interface. Set this to 2.0 on Mac retina displays. Application true exit (not just restart after asking) is required. + +config.name.warning.video.vlc = Warn on missing VLC +config.description.warning.video.vlc = Show warning about VLC media player required when opening SWFs with DefineVideoStream tags when VLC is not available. diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties index ee8701d3b..ed0bca034 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties @@ -613,3 +613,6 @@ config.description.flattenASPackages = Zobraz\u00ed bal\u00ed\u010dky jako jednu config.name.gui.scale = UI faktor zv\u011bt\u0161en\u00ed config.description.gui.scale = Zv\u011bt\u0161ovac\u00ed faktor grafick\u00e9ho rozhran\u00ed. Nastavte toto na 2.0 na retina displej\u00edch na Macu. Je vy\u017eadov\u00e1no tvrd\u00e9 ukon\u010den\u00ed aplikace (nejen restart po dotazu). + +config.name.warning.video.vlc = Varovat p\u0159i chyb\u011bj\u00edc\u00edm VLC +config.description.warning.video.vlc = Zobrazovat varov\u00e1n\u00ed o vy\u017eadovan\u00e9m VLC media playeru p\u0159i otev\u00edr\u00e1n\u00ed SWF s DefineVideoStream tagy kdy\u017e je VLC nedostupn\u00fd. diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index 9e39381ee..9fc66ae75 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -995,3 +995,7 @@ productinfo.edition.none = None productinfo.version = Version: productinfo.build = Build: productinfo.compileDate = Compilation date: + +message.video.installvlc = The file "%file%" contains video tags (DefineVideoStream).\r\n\ + To properly display them in the decompiler, VLC media player installed is required (minimum version 3.0.0).\r\n\ + You can however still export the videos to FLV file format without it. \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties index b4134e3ee..1c18e3cc2 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties @@ -979,4 +979,8 @@ productinfo.edition = Edice: productinfo.edition.none = \u017d\u00e1dn\u00e1 productinfo.version = Verze: productinfo.build = Sestaven\u00ed: -productinfo.compileDate = Datum kompilace: \ No newline at end of file +productinfo.compileDate = Datum kompilace: + +message.video.installvlc = Soubor "%file%" obsahuje video tagy (DefineVideoStream).\r\n\ + Pro korektn\u00ed zobrazen\u00ed v dekompil\u00e1toru je vy\u017eadov\u00e1n nainstalovan\u00fd VLC media player (v minim\u00e1ln\u00ed verzi 3.0.0).\r\n\ + St\u00e1le nicm\u00e9n\u011b m\u016f\u017eete exportovat videa do FLV form\u00e1tu i bez toho. \ No newline at end of file