diff --git a/src/application/Console.java b/src/application/Console.java
index c2e0d331..7b2fcca9 100644
--- a/src/application/Console.java
+++ b/src/application/Console.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/Donate.java b/src/application/Donate.java
new file mode 100644
index 00000000..639453ff
--- /dev/null
+++ b/src/application/Donate.java
@@ -0,0 +1,213 @@
+/*******************************************************************************************
+* Copyright (C) 2025 PACIFICO PAUL
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License along
+* with this program; if not, write to the Free Software Foundation, Inc.,
+* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+********************************************************************************************/
+
+package application;
+
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Desktop;
+import java.awt.Font;
+import java.awt.MouseInfo;
+import java.awt.Rectangle;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.geom.Area;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.swing.BorderFactory;
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.SwingConstants;
+import javax.swing.border.MatteBorder;
+
+import com.formdev.flatlaf.extras.FlatSVGIcon;
+
+public class Donate {
+
+ private static int MousePositionX;
+ private static int MousePositionY;
+
+ public Donate() {
+
+ JFrame frame = new JFrame();
+ frame.getContentPane().setBackground(new Color(30,30,35));
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ frame.setTitle("Thanks!");
+ frame.setBackground(new Color(30,30,35));
+ frame.setForeground(Color.WHITE);
+ frame.getContentPane().setLayout(null);
+ frame.setSize(280, 305);
+ frame.setResizable(false);
+ frame.setUndecorated(true);
+ frame.getRootPane().setBorder(BorderFactory.createMatteBorder(0, 1, 1, 1, new Color(100, 100, 100)));
+ Area shape1 = new Area(new AntiAliasedRoundRectangle(0, 0, frame.getWidth(), frame.getHeight(), 15, 15));
+ Area shape2 = new Area(new Rectangle(0, frame.getHeight()-15, frame.getWidth(), 15));
+ shape1.add(shape2);
+ frame.setShape(shape1);
+ frame.setAlwaysOnTop(true);
+
+ frame.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("contents/icon.png")).getImage());
+ frame.setLocation(Shutter.frame.getX() + (Shutter.frame.getWidth() - frame.getWidth()) / 2, frame.getHeight() + (Shutter.frame.getHeight() / 2 - frame.getHeight()));
+
+ JPanel topPanel = new JPanel();
+ topPanel.setLayout(null);
+ topPanel.setBackground(new Color(30,30,35));
+ topPanel.setBounds(0, 0, frame.getWidth(), 28);
+
+ JLabel quit = new JLabel(new FlatSVGIcon("contents/quit.svg", 15, 15));
+ quit.setHorizontalAlignment(SwingConstants.CENTER);
+ quit.setBounds(frame.getSize().width - 20, 4, 15, 15);
+ topPanel.add(quit);
+
+ quit.addMouseListener(new MouseListener() {
+
+ private boolean accept = false;
+
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ }
+
+ @Override
+ public void mousePressed(MouseEvent e) {
+
+ quit.setIcon(new FlatSVGIcon("contents/quit_pressed.svg", 15, 15));
+
+ accept = true;
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+
+ if (accept)
+ {
+ System.exit(0);
+ }
+ }
+
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ quit.setIcon(new FlatSVGIcon("contents/quit_hover.svg", 15, 15));
+ }
+
+ @Override
+ public void mouseExited(MouseEvent e) {
+ quit.setIcon(new FlatSVGIcon("contents/quit.svg", 15, 15));
+ accept = false;
+ }
+
+ });
+
+ JLabel title = new JLabel(frame.getTitle());
+ title.setHorizontalAlignment(JLabel.CENTER);
+ title.setBounds(0, 1, frame.getWidth(), 24);
+ title.setFont(new Font(Shutter.freeSansFont, Font.PLAIN, 17));
+ topPanel.add(title);
+
+ JLabel topImage = new JLabel();
+ topImage.setBackground(new Color(35,35,40));
+ topImage.setOpaque(true);
+ topImage.setBorder(new MatteBorder(1, 0, 1, 0, new Color(65, 65, 65)));
+ topImage.setBounds(0, 0, topPanel.getWidth(), 24);
+ topPanel.add(topImage);
+
+ topImage.addMouseListener(new MouseListener() {
+
+ @Override
+ public void mouseClicked(MouseEvent down) {
+ }
+
+ @Override
+ public void mousePressed(MouseEvent down) {
+ MousePositionX = down.getPoint().x;
+ MousePositionY = down.getPoint().y;
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseExited(MouseEvent e) {
+ }
+
+ });
+
+ topImage.addMouseMotionListener(new MouseMotionListener(){
+
+ @Override
+ public void mouseDragged(MouseEvent e) {
+ frame.setLocation(MouseInfo.getPointerInfo().getLocation().x - MousePositionX, MouseInfo.getPointerInfo().getLocation().y - MousePositionY);
+ }
+
+ @Override
+ public void mouseMoved(MouseEvent e) {
+ }
+
+ });
+
+ frame.getContentPane().add(topPanel);
+
+ JLabel qrcode = new JLabel();
+ qrcode.setIcon(new ImageIcon(getClass().getClassLoader().getResource("contents/qrcode.png")));
+ qrcode.setHorizontalAlignment(SwingConstants.CENTER);
+ qrcode.setBounds((frame.getWidth() - 250) / 2, topPanel.getHeight() + 10, 250, 250);
+ frame.getContentPane().add(qrcode);
+
+ qrcode.addMouseListener(new MouseListener() {
+
+ @Override
+ public void mouseClicked(MouseEvent arg0) {
+ try {
+ Desktop.getDesktop().browse(new URI("https://donate.stripe.com/28o29m0QwfRZ4U0cMM"));
+ } catch (IOException | URISyntaxException e) {}
+ }
+
+ @Override
+ public void mouseEntered(MouseEvent arg0) {
+ frame.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+ }
+
+ @Override
+ public void mouseExited(MouseEvent arg0) {
+ frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }
+
+
+ @Override
+ public void mousePressed(MouseEvent arg0) {
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent arg0) {
+ }
+
+ });
+
+ frame.setVisible(true);
+ }
+}
diff --git a/src/application/Ftp.java b/src/application/Ftp.java
index f0f6437a..76d55395 100644
--- a/src/application/Ftp.java
+++ b/src/application/Ftp.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/Functions.java b/src/application/Functions.java
index 1fb477a4..d893bde5 100644
--- a/src/application/Functions.java
+++ b/src/application/Functions.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/GOP.java b/src/application/GOP.java
index ec91989e..c079ef54 100644
--- a/src/application/GOP.java
+++ b/src/application/GOP.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/HashGenerator.java b/src/application/HashGenerator.java
index b6286bd8..cb7878b5 100644
--- a/src/application/HashGenerator.java
+++ b/src/application/HashGenerator.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -594,6 +594,8 @@ private void digestFile(File file, MessageDigest digest) throws IOException {
if (Shutter.cancelled)
break;
}
+
+ dis.close();
}
diff --git a/src/application/Informations.java b/src/application/Informations.java
index 5770909c..b64a7260 100644
--- a/src/application/Informations.java
+++ b/src/application/Informations.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/RecordInputDevice.java b/src/application/RecordInputDevice.java
index 4d459d13..d3e6c268 100644
--- a/src/application/RecordInputDevice.java
+++ b/src/application/RecordInputDevice.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/ReducedWindow.java b/src/application/ReducedWindow.java
index 097b34de..60b46b38 100644
--- a/src/application/ReducedWindow.java
+++ b/src/application/ReducedWindow.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/Renamer.java b/src/application/Renamer.java
index 91377d75..0013ba7e 100644
--- a/src/application/Renamer.java
+++ b/src/application/Renamer.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/RenderQueue.java b/src/application/RenderQueue.java
index 24475361..00fb35a3 100644
--- a/src/application/RenderQueue.java
+++ b/src/application/RenderQueue.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/SceneDetection.java b/src/application/SceneDetection.java
index 2fc3b482..0942ef66 100644
--- a/src/application/SceneDetection.java
+++ b/src/application/SceneDetection.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/Settings.java b/src/application/Settings.java
index ada1353f..25c819ec 100644
--- a/src/application/Settings.java
+++ b/src/application/Settings.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/Shutter.java b/src/application/Shutter.java
index 253c6b1f..af651b0b 100644
--- a/src/application/Shutter.java
+++ b/src/application/Shutter.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -625,7 +625,7 @@ public class Shutter {
public static JTextField TC2;
public static JTextField TC3;
public static JTextField TC4;
- public static JTextField text;
+ public static JTextField overlayText;
public static long textTime = System.currentTimeMillis();
public static Thread changeText;
public static JCheckBox caseShowTimecode;
@@ -792,14 +792,14 @@ else if (System.getProperty("os.name").contains("Linux"))
if (new File("Functions").exists() == false)
documents.mkdirs();
}
-
+
new Shutter();
ImageIO.setUseCache(false); //IMPORTANT use RAM instead of HDD cache
}
public Shutter() {
-
+
Desktop desktop = Desktop.getDesktop();
if( desktop.isSupported( Desktop.Action.APP_ABOUT ) ) {
desktop.setAboutHandler( e -> {
@@ -1116,6 +1116,7 @@ else if (Shutter.comboFonctions.getSelectedItem().toString().equals(Shutter.lang
}
}
});
+
Splash.increment();
frame.addMouseListener(new MouseListener() {
@@ -1463,7 +1464,7 @@ else if (grpSetAudio.isVisible())
Splash.increment();
YOUTUBEDL.update();
- EXIFTOOL.run(""); //Preload the binary
+ EXIFTOOL.run('"' + "" + '"'); //Preload the binary
Splash.increment();
//Right_to_left
@@ -1632,8 +1633,8 @@ public void mouseReleased(MouseEvent e) {
{
VideoPlayer.waveform = null;
}
-
- System.exit(0);
+
+ new Donate();
}
}
@@ -3382,15 +3383,21 @@ public void actionPerformed(ActionEvent e) {
if (comboFonctions.getEditor().getItem().toString().contains("ffmpeg"))
{
if (comboFilter.getEditor().getItem().toString().equals(language.getProperty("aucun"))
- || comboFilter.getEditor().getItem().toString().equals("")
- || comboFilter.getEditor().getItem().toString().equals(" ")
- || comboFilter.getEditor().getItem().toString().contains(".") == false)
+ || comboFilter.getEditor().getItem().toString().equals("")
+ || comboFilter.getEditor().getItem().toString().equals(" ")
+ || comboFilter.getEditor().getItem().toString().contains(".") == false)
+ {
JOptionPane.showMessageDialog(frame, language.getProperty("chooseExtension"),
language.getProperty("extensionError"), JOptionPane.INFORMATION_MESSAGE);
+ }
else
Command.main();
}
+ else if (comboFonctions.getEditor().getItem().toString().contains("exiftool"))
+ {
+ Command.main();
+ }
else
{
//Scan Folder
@@ -3919,7 +3926,7 @@ else if (comboFonctions.getSelectedItem().equals(language.getProperty("itemDownl
@Override
public void keyReleased(KeyEvent e) {
- if (comboFonctions.getEditor().getItem().toString().contains("ffmpeg"))
+ if (comboFonctions.getEditor().getItem().toString().contains("ffmpeg") || comboFonctions.getEditor().getItem().toString().contains("exiftool"))
{
changeFilters();
changeWidth(false);
@@ -6626,84 +6633,87 @@ else if (comboAudioCodec.getSelectedItem().toString().equals(language.getPropert
lblAudioMapping.setLocation(comboAudioCodec.getLocation().x + comboAudioCodec.getWidth() + 7, comboAudioCodec.getLocation().y);
lblAudioMapping.setSize(lblKbs.getLocation().x + lblKbs.getSize().width - 5 - 7 - (comboAudioCodec.getLocation().x + comboAudioCodec.getWidth() + 7) , 16);
grpSetAudio.add(lblAudioMapping);
-
+
lblAudioMapping.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent arg0) {
- if (lblAudioMapping.getSelectedItem().toString().equals("Multi"))
- {
- grpSetAudio.add(lblAudio1);
- grpSetAudio.add(comboAudio1);
- grpSetAudio.add(lblAudio2);
- grpSetAudio.add(comboAudio2);
- grpSetAudio.add(lblAudio3);
- grpSetAudio.add(comboAudio3);
- grpSetAudio.add(lblAudio4);
- grpSetAudio.add(comboAudio4);
- grpSetAudio.add(lblAudio5);
- grpSetAudio.add(comboAudio5);
- grpSetAudio.add(lblAudio6);
- grpSetAudio.add(comboAudio6);
- grpSetAudio.add(lblAudio7);
- grpSetAudio.add(comboAudio7);
- grpSetAudio.add(lblAudio8);
- grpSetAudio.add(comboAudio8);
-
- if (grpSetAudio.getHeight() != 146)
- extendSections(grpSetAudio, 146);
- }
- else if (lblAudioMapping.getSelectedItem().toString().equals("Mix"))
- {
- if (grpSetAudio.getHeight() != 68)
- extendSections(grpSetAudio, 68);
-
- grpSetAudio.remove(lblAudio1);
- grpSetAudio.remove(comboAudio1);
- grpSetAudio.remove(lblAudio2);
- grpSetAudio.remove(comboAudio2);
- grpSetAudio.remove(lblAudio3);
- grpSetAudio.remove(comboAudio3);
- grpSetAudio.remove(lblAudio4);
- grpSetAudio.remove(comboAudio4);
- grpSetAudio.remove(lblAudio5);
- grpSetAudio.remove(comboAudio5);
- grpSetAudio.remove(lblAudio6);
- grpSetAudio.remove(comboAudio6);
- grpSetAudio.remove(lblAudio7);
- grpSetAudio.remove(comboAudio7);
- grpSetAudio.remove(lblAudio8);
- grpSetAudio.remove(comboAudio8);
+ if (lblAudioMapping.isFocusOwner())
+ {
+ if (lblAudioMapping.getSelectedItem().toString().equals("Multi"))
+ {
+ grpSetAudio.add(lblAudio1);
+ grpSetAudio.add(comboAudio1);
+ grpSetAudio.add(lblAudio2);
+ grpSetAudio.add(comboAudio2);
+ grpSetAudio.add(lblAudio3);
+ grpSetAudio.add(comboAudio3);
+ grpSetAudio.add(lblAudio4);
+ grpSetAudio.add(comboAudio4);
+ grpSetAudio.add(lblAudio5);
+ grpSetAudio.add(comboAudio5);
+ grpSetAudio.add(lblAudio6);
+ grpSetAudio.add(comboAudio6);
+ grpSetAudio.add(lblAudio7);
+ grpSetAudio.add(comboAudio7);
+ grpSetAudio.add(lblAudio8);
+ grpSetAudio.add(comboAudio8);
+
+ if (grpSetAudio.getHeight() != 146)
+ extendSections(grpSetAudio, 146);
+ }
+ else if (lblAudioMapping.getSelectedItem().toString().equals("Mix"))
+ {
+ if (grpSetAudio.getHeight() != 68)
+ extendSections(grpSetAudio, 68);
+
+ grpSetAudio.remove(lblAudio1);
+ grpSetAudio.remove(comboAudio1);
+ grpSetAudio.remove(lblAudio2);
+ grpSetAudio.remove(comboAudio2);
+ grpSetAudio.remove(lblAudio3);
+ grpSetAudio.remove(comboAudio3);
+ grpSetAudio.remove(lblAudio4);
+ grpSetAudio.remove(comboAudio4);
+ grpSetAudio.remove(lblAudio5);
+ grpSetAudio.remove(comboAudio5);
+ grpSetAudio.remove(lblAudio6);
+ grpSetAudio.remove(comboAudio6);
+ grpSetAudio.remove(lblAudio7);
+ grpSetAudio.remove(comboAudio7);
+ grpSetAudio.remove(lblAudio8);
+ grpSetAudio.remove(comboAudio8);
+ }
+ else
+ {
+ if (grpSetAudio.getHeight() != 92)
+ extendSections(grpSetAudio, 92);
+
+ grpSetAudio.add(lblAudio1);
+ grpSetAudio.add(comboAudio1);
+ grpSetAudio.add(lblAudio2);
+ grpSetAudio.add(comboAudio2);
+ grpSetAudio.remove(lblAudio3);
+ grpSetAudio.remove(comboAudio3);
+ grpSetAudio.remove(lblAudio4);
+ grpSetAudio.remove(comboAudio4);
+ grpSetAudio.remove(lblAudio5);
+ grpSetAudio.remove(comboAudio5);
+ grpSetAudio.remove(lblAudio6);
+ grpSetAudio.remove(comboAudio6);
+ grpSetAudio.remove(lblAudio7);
+ grpSetAudio.remove(comboAudio7);
+ grpSetAudio.remove(lblAudio8);
+ grpSetAudio.remove(comboAudio8);
+ }
+
+ grpSetAudio.repaint();
+
+ try {
+ FFPROBE.setFilesize();
+ } catch (Exception e1) {}
}
- else
- {
- if (grpSetAudio.getHeight() != 92)
- extendSections(grpSetAudio, 92);
-
- grpSetAudio.add(lblAudio1);
- grpSetAudio.add(comboAudio1);
- grpSetAudio.add(lblAudio2);
- grpSetAudio.add(comboAudio2);
- grpSetAudio.remove(lblAudio3);
- grpSetAudio.remove(comboAudio3);
- grpSetAudio.remove(lblAudio4);
- grpSetAudio.remove(comboAudio4);
- grpSetAudio.remove(lblAudio5);
- grpSetAudio.remove(comboAudio5);
- grpSetAudio.remove(lblAudio6);
- grpSetAudio.remove(comboAudio6);
- grpSetAudio.remove(lblAudio7);
- grpSetAudio.remove(comboAudio7);
- grpSetAudio.remove(lblAudio8);
- grpSetAudio.remove(comboAudio8);
- }
-
- grpSetAudio.repaint();
-
- try {
- FFPROBE.setFilesize();
- } catch (Exception e1) {}
}
});
@@ -7737,7 +7747,7 @@ else if (outputRatio == 2.33f)
height = VideoPlayer.player.getHeight();
selection.setBounds(x, y, width, height);
-
+
} catch (Exception er) {}
}
}
@@ -8079,7 +8089,7 @@ else if (selection.getLocation().x <= 0)
else if (selection.getLocation().y <= 0)
{
selection.setLocation(selection.getLocation().x, 0);
- }
+ }
}
});
@@ -8946,7 +8956,7 @@ else if (System.getProperty("os.name").contains("Windows"))
if (lblTcBackground.getText().equals(language.getProperty("aucun")))
{
- g2.setColor(new Color(foregroundColor.getRed(),foregroundColor.getGreen(),foregroundColor.getBlue(), (int) ( (float) (Integer.parseInt(textNameOpacity.getText()) * 255) / 100)));
+ g2.setColor(new Color(foregroundColor.getRed(),foregroundColor.getGreen(),foregroundColor.getBlue(), (int) ( (float) (Integer.parseInt(textTcOpacity.getText()) * 255) / 100)));
}
else
g2.setColor(foregroundColor);
@@ -9659,17 +9669,17 @@ public void mouseMoved(MouseEvent e) {
caseAddText.setLocation(caseAddTimecode.getX(), lblSizeTC.getY() + lblSizeTC.getHeight() + 8);
grpOverlay.add(caseAddText);
- text = new JTextField("");
- text.setName("text");
- text.setEnabled(false);
- text.setLocation(caseAddText.getLocation().x + caseAddText.getWidth() + 7, caseAddText.getLocation().y + 1);
- text.setSize(grpOverlay.getWidth() - text.getX() - 10, 21);
- text.setHorizontalAlignment(SwingConstants.LEFT);
- text.setFont(new Font("SansSerif", Font.PLAIN, 12));
- text.setToolTipText("{codec/function}
{preset}
{resolution/scale}
{width}
{height}
{ratio/aspect}
{framerate/fps}
{bitrate}
{timecode}
{duration/time}
{date}");
- grpOverlay.add(text);
+ overlayText = new JTextField("");
+ overlayText.setName("overlayText");
+ overlayText.setEnabled(false);
+ overlayText.setLocation(caseAddText.getLocation().x + caseAddText.getWidth() + 7, caseAddText.getLocation().y + 1);
+ overlayText.setSize(grpOverlay.getWidth() - overlayText.getX() - 10, 21);
+ overlayText.setHorizontalAlignment(SwingConstants.LEFT);
+ overlayText.setFont(new Font("SansSerif", Font.PLAIN, 12));
+ overlayText.setToolTipText("{codec/function}
{preset}
{resolution/scale}
{width}
{height}
{ratio/aspect}
{framerate/fps}
{bitrate}
{timecode}
{duration/time}
{date}");
+ grpOverlay.add(overlayText);
- text.addKeyListener(new KeyListener(){
+ overlayText.addKeyListener(new KeyListener(){
@Override
public void keyPressed(KeyEvent e) {
@@ -9737,7 +9747,7 @@ public void run() {
@Override
protected void paintComponent(Graphics g)
{
- if ((caseShowFileName.isSelected() || caseAddText.isSelected() && text.getText().length() > 0) && liste.getSize() > 0 && VideoPlayer.videoPath != null)
+ if ((caseShowFileName.isSelected() || caseAddText.isSelected() && overlayText.getText().length() > 0) && liste.getSize() > 0 && VideoPlayer.videoPath != null)
{
super.paintComponent(g);
@@ -9779,7 +9789,7 @@ protected void paintComponent(Graphics g)
if (caseAddText.isSelected())
{
- str = FunctionUtils.setSuffix(text.getText(), true);
+ str = FunctionUtils.setSuffix(overlayText.getText(), true);
}
Rectangle bounds = getStringBounds(g2, str, 0 ,0);
@@ -10542,9 +10552,9 @@ public void actionPerformed(ActionEvent arg0) {
percent4.setEnabled(true);
caseShowFileName.setSelected(false);
- text.setEnabled(true);
+ overlayText.setEnabled(true);
- if (text.getText().length() > 0)
+ if (overlayText.getText().length() > 0)
{
VideoPlayer.player.add(fileName);
@@ -10573,7 +10583,7 @@ public void actionPerformed(ActionEvent arg0) {
textNameOpacity.setEnabled(false);
percent4.setEnabled(false);
- text.setEnabled(false);
+ overlayText.setEnabled(false);
VideoPlayer.player.remove(fileName);
}
@@ -10605,7 +10615,7 @@ public void actionPerformed(ActionEvent arg0) {
percent4.setEnabled(true);
caseAddText.setSelected(false);
- text.setEnabled(false);
+ overlayText.setEnabled(false);
VideoPlayer.player.add(fileName);
//Overimage need to be the last component added
@@ -15700,7 +15710,7 @@ else if (lblTFF.getText().equals("BFF"))
@Override
public void actionPerformed(ActionEvent arg0) {
- if (comboForcerDesentrelacement.getSelectedItem().toString().equals("detelecine") && lblTFF.getText().equals("x2"))
+ if (comboForcerDesentrelacement.getSelectedItem().toString().equals("detelecine") && lblTFF.getText().contains("x2"))
{
lblTFF.setText("TFF");
if (caseForcerDesentrelacement.isSelected())
@@ -15726,12 +15736,21 @@ public void actionPerformed(ActionEvent arg0) {
@Override
public void mouseClicked(MouseEvent e) {
- if (lblTFF.getText().equals("TFF")) {
+ if (lblTFF.getText().equals("TFF"))
+ {
lblTFF.setText("BFF");
if (caseForcerDesentrelacement.isSelected())
FFPROBE.fieldOrder = "1";
- } else if (lblTFF.getText().equals("BFF") && comboForcerDesentrelacement.getSelectedItem().toString().equals("detelecine") == false) {
- lblTFF.setText("x2");
+ }
+ else if (lblTFF.getText().equals("BFF") && comboForcerDesentrelacement.getSelectedItem().toString().equals("detelecine") == false)
+ {
+ lblTFF.setText("x2 T");
+ if (caseForcerDesentrelacement.isSelected())
+ FFPROBE.fieldOrder = "0";
+ }
+ else if (lblTFF.getText().equals("x2 T") && comboForcerDesentrelacement.getSelectedItem().toString().equals("detelecine") == false)
+ {
+ lblTFF.setText("x2 B");
if (caseForcerDesentrelacement.isSelected())
FFPROBE.fieldOrder = "0";
}
@@ -17017,10 +17036,10 @@ public void actionPerformed(ActionEvent ac) {
@Override
public void keyTyped(KeyEvent e) {
char caracter = e.getKeyChar();
- if (String.valueOf(caracter).matches("[0-9]+") == false && caracter != ''
- || bitrateSize.getText().length() >= 5
- || String.valueOf(caracter).matches("[éèçàù]")
- || lblVBR.getText().equals("CQ") && lblVBR.isVisible())
+ if (String.valueOf(caracter).matches("[0-9]+") == false && caracter != '.' && caracter != ',' && caracter != ''
+ || bitrateSize.getText().length() >= 5
+ || String.valueOf(caracter).matches("[éèçàù]")
+ || lblVBR.getText().equals("CQ") && lblVBR.isVisible())
e.consume();
}
@@ -17046,7 +17065,7 @@ public void keyReleased(KeyEvent e) {
int sec = Integer.parseInt(textS.getText());
int frames = Integer.parseInt(textF.getText());
int audio = Integer.parseInt(debitAudio.getSelectedItem().toString());
- int tailleFinale = Integer.parseInt(bitrateSize.getText());
+ float tailleFinale = Float.parseFloat(bitrateSize.getText().replace(",", "."));
float result = (float) tailleFinale / ((h * 3600) + (min * 60) + sec + (frames * ((float) 1 / FFPROBE.currentFPS)));
float resultAudio = (float) audio / 8 / 1024;
float resultatdebit = (result - resultAudio) * 8 * 1024;
@@ -17461,31 +17480,30 @@ public void mouseReleased(MouseEvent arg0) {
caseNormalizeAudio.doClick();
comboNormalizeAudio.setSelectedIndex(23);
}
+
if (comboFonctions.getSelectedItem().toString().equals("DNxHD")
|| comboFonctions.getSelectedItem().toString().equals("DNxHR")
|| comboFonctions.getSelectedItem().toString().equals("Apple ProRes")
|| comboFonctions.getSelectedItem().toString().equals("QT Animation")
|| comboFonctions.getSelectedItem().toString().equals("GoPro CineForm")
- || comboFonctions.getSelectedItem().toString().equals("Uncompressed")
- || comboFonctions.getSelectedItem().toString().contains("XDCAM")
- || comboFonctions.getSelectedItem().toString().equals("AVC-Intra 100")
- || comboFonctions.getSelectedItem().toString().equals("XAVC")
- || comboFonctions.getSelectedItem().toString().equals("HAP")
- || comboFonctions.getSelectedItem().toString().equals("FFV1"))
+ || comboFonctions.getSelectedItem().toString().equals("Uncompressed") )
{
- if (lblAudioMapping.getItemCount() > 1)
- {
- lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] {"Multi"}));
- lblAudioMapping.setSelectedItem("Multi");
- }
+ lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
+ lblAudioMapping.setSelectedItem("Multi");
+ }
+ else if (comboFonctions.getSelectedItem().toString().contains("XDCAM")
+ || comboFonctions.getSelectedItem().toString().equals("AVC-Intra 100")
+ || comboFonctions.getSelectedItem().toString().equals("XAVC")
+ || comboFonctions.getSelectedItem().toString().equals("HAP")
+ || comboFonctions.getSelectedItem().toString().equals("FFV1"))
+ {
+ lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { "Multi" }));
+ lblAudioMapping.setSelectedItem("Multi");
}
else
{
- if (lblAudioMapping.getItemCount() != 4)
- {
- lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
- lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
- }
+ lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
+ lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
}
lbl48k.setSelectedIndex(2);
@@ -17495,9 +17513,14 @@ public void mouseReleased(MouseEvent arg0) {
comboAudio1.setSelectedIndex(0);
comboAudio2.setSelectedIndex(1);
- comboAudio3.setSelectedIndex(2);
- comboAudio4.setSelectedIndex(3);
- if (comboFonctions.getSelectedItem().toString().contains("XDCAM") || comboFonctions.getSelectedItem().toString().equals("AVC-Intra 100") || comboFonctions.getSelectedItem().toString().equals("XAVC"))
+ comboAudio3.setSelectedIndex(2);
+ comboAudio4.setSelectedIndex(3);
+
+ if (comboFonctions.getSelectedItem().toString().contains("XDCAM")
+ || comboFonctions.getSelectedItem().toString().equals("AVC-Intra 100")
+ || comboFonctions.getSelectedItem().toString().equals("XAVC")
+ || comboFonctions.getSelectedItem().toString().equals("HAP")
+ || comboFonctions.getSelectedItem().toString().equals("FFV1"))
{
comboAudio5.setSelectedIndex(16);
comboAudio6.setSelectedIndex(16);
@@ -17589,7 +17612,7 @@ else if ("MJPEG".equals(comboFonctions.getSelectedItem().toString()))
lbl48k.setLocation(lblKbs.getLocation().x + lblKbs.getSize().width - 5, lblKbs.getLocation().y);
grpSetAudio.add(lblAudioMapping);
- if (grpSetAudio.getHeight() > 92)
+ if (grpSetAudio.getHeight() > 92 || grpSetAudio.getHeight() == 68)
extendSections(grpSetAudio, 92);
}
else if (comboFonctions.getSelectedItem().toString().contains("H.26"))
@@ -17608,7 +17631,7 @@ else if (comboFonctions.getSelectedItem().toString().contains("H.26"))
lbl48k.setLocation(lblKbs.getLocation().x + lblKbs.getSize().width - 5, lblKbs.getLocation().y);
grpSetAudio.add(lblAudioMapping);
- if (grpSetAudio.getHeight() > 92)
+ if (grpSetAudio.getHeight() > 92 || grpSetAudio.getHeight() == 68)
extendSections(grpSetAudio, 92);
}
else if ("WMV".equals(comboFonctions.getSelectedItem().toString()))
@@ -17626,7 +17649,7 @@ else if ("WMV".equals(comboFonctions.getSelectedItem().toString()))
lbl48k.setLocation(lblKbs.getLocation().x + lblKbs.getSize().width - 5, lblKbs.getLocation().y);
grpSetAudio.add(lblAudioMapping);
- if (grpSetAudio.getHeight() > 92)
+ if (grpSetAudio.getHeight() > 92 || grpSetAudio.getHeight() == 68)
extendSections(grpSetAudio, 92);
}
else if ("MPEG-1".equals(comboFonctions.getSelectedItem().toString()) || "MPEG-2".equals(comboFonctions.getSelectedItem().toString()))
@@ -17645,7 +17668,7 @@ else if ("MPEG-1".equals(comboFonctions.getSelectedItem().toString()) || "MPEG-2
lbl48k.setLocation(lblKbs.getLocation().x + lblKbs.getSize().width - 5, lblKbs.getLocation().y);
grpSetAudio.add(lblAudioMapping);
- if (grpSetAudio.getHeight() > 92)
+ if (grpSetAudio.getHeight() > 92 || grpSetAudio.getHeight() == 68)
extendSections(grpSetAudio, 92);
}
else if ("VP8".equals(comboFonctions.getSelectedItem().toString()) || "VP9".equals(comboFonctions.getSelectedItem().toString()))
@@ -17664,7 +17687,7 @@ else if ("VP8".equals(comboFonctions.getSelectedItem().toString()) || "VP9".equa
lbl48k.setLocation(lblKbs.getLocation().x + lblKbs.getSize().width - 5, lblKbs.getLocation().y);
grpSetAudio.add(lblAudioMapping);
- if (grpSetAudio.getHeight() > 92)
+ if (grpSetAudio.getHeight() > 92 || grpSetAudio.getHeight() == 68)
extendSections(grpSetAudio, 92);
}
else if ("AV1".equals(comboFonctions.getSelectedItem().toString()))
@@ -17683,7 +17706,7 @@ else if ("AV1".equals(comboFonctions.getSelectedItem().toString()))
lbl48k.setLocation(lblKbs.getLocation().x + lblKbs.getSize().width - 5, lblKbs.getLocation().y);
grpSetAudio.add(lblAudioMapping);
- if (grpSetAudio.getHeight() > 92)
+ if (grpSetAudio.getHeight() > 92 || grpSetAudio.getHeight() == 68)
extendSections(grpSetAudio, 92);
}
else if ("Theora".equals(comboFonctions.getSelectedItem().toString()))
@@ -17702,7 +17725,7 @@ else if ("Theora".equals(comboFonctions.getSelectedItem().toString()))
lbl48k.setLocation(lblKbs.getLocation().x + lblKbs.getSize().width - 5, lblKbs.getLocation().y);
grpSetAudio.add(lblAudioMapping);
- if (grpSetAudio.getHeight() > 92)
+ if (grpSetAudio.getHeight() > 92 || grpSetAudio.getHeight() == 68)
extendSections(grpSetAudio, 92);
}
else if ("Xvid".equals(comboFonctions.getSelectedItem().toString()))
@@ -17721,7 +17744,7 @@ else if ("Xvid".equals(comboFonctions.getSelectedItem().toString()))
lbl48k.setLocation(lblKbs.getLocation().x + lblKbs.getSize().width - 5, lblKbs.getLocation().y);
grpSetAudio.add(lblAudioMapping);
- if (grpSetAudio.getHeight() > 92)
+ if (grpSetAudio.getHeight() > 92 || grpSetAudio.getHeight() == 68)
extendSections(grpSetAudio, 92);
}
else if (comboFonctions.getSelectedItem().toString().equals("DVD") || comboFonctions.getSelectedItem().toString().equals("Blu-ray"))
@@ -17746,7 +17769,7 @@ else if (comboFonctions.getSelectedItem().toString().equals("DVD") || comboFonct
lbl48k.setLocation(lblKbs.getLocation().x + lblKbs.getSize().width - 5, lblKbs.getLocation().y);
grpSetAudio.add(lblAudioMapping);
- if (grpSetAudio.getHeight() > 92)
+ if (grpSetAudio.getHeight() > 92 || grpSetAudio.getHeight() == 68)
extendSections(grpSetAudio, 92);
}
else if (comboFonctions.getSelectedItem().toString().equals("WAV")
@@ -17820,8 +17843,7 @@ else if (comboFonctions.getSelectedItem().toString().equals("WAV")
|| comboFonctions.getSelectedItem().toString().equals("FFV1"))
{
lblPad.setVisible(true);
- }
-
+ }
// grpAudio
caseSampleRate.setSelected(false);
@@ -18574,7 +18596,7 @@ public void mouseReleased(MouseEvent arg0) {
});
- lblYears = new JLabel("2013-2024");
+ lblYears = new JLabel("2013-2025");
lblYears.setHorizontalAlignment(SwingConstants.RIGHT);
lblYears.setForeground(Color.WHITE);
lblYears.setFont(new Font(freeSansFont, Font.PLAIN, 12));
@@ -19826,8 +19848,9 @@ else if (language.getProperty("functionMerge").equals(function))
if (lblAudioMapping.getItemCount() != 4)
{
lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
- lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
- }
+ }
+ lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
+
comboAudioCodec.setModel(new DefaultComboBoxModel(new String[] { "PCM 32Float", "PCM 32Bits", "PCM 24Bits", "PCM 16Bits", "AAC", "MP3", "AC3", "Opus", "Vorbis", "Dolby Digital Plus", language.getProperty("noAudio") }));
comboAudioCodec.setSelectedIndex(3);
caseNormalizeAudio.setEnabled(false);
@@ -19932,8 +19955,9 @@ else if (language.getProperty("functionMerge").equals(function))
if (lblAudioMapping.getItemCount() != 4)
{
lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
- lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
- }
+ }
+ lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
+
comboAudioCodec.setModel(new DefaultComboBoxModel(new String[] { "PCM 32Float", "PCM 32Bits", "PCM 24Bits", "PCM 16Bits", "AAC", "MP3", "AC3", "Opus", "Vorbis", "Dolby Digital Plus", language.getProperty("noAudio") }));
comboAudioCodec.setSelectedIndex(3);
caseNormalizeAudio.setEnabled(false);
@@ -20188,9 +20212,10 @@ public void run() {
{
if (lblAudioMapping.getItemCount() > 1)
{
- lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] {"Multi"}));
- lblAudioMapping.setSelectedItem("Multi");
- }
+ lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] {"Multi"}));
+ }
+ lblAudioMapping.setSelectedItem("Multi");
+
comboAudioCodec.setModel(new DefaultComboBoxModel(new String[] { "PCM 16Bits", "PCM 24Bits", "PCM 32Bits", language.getProperty("codecCopy"), language.getProperty("noAudio") }));
caseChangeAudioCodec.setSelected(true);
comboAudioCodec.setEnabled(true);
@@ -20287,7 +20312,8 @@ else if (comboAudio1.getSelectedIndex() == 0
// Ajout partie résolution
grpResolution.removeAll();
- grpResolution.setVisible(true);
+ grpResolution.setVisible(true);
+ grpResolution.setLocation(grpResolution.getX(), 30);
grpResolution.add(lblImageSize);
grpResolution.add(comboResolution);
grpResolution.add(lblPad);
@@ -20354,8 +20380,9 @@ else if (comboAudio1.getSelectedIndex() == 0
if (lblAudioMapping.getItemCount() > 1)
{
lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] {"Multi"}));
- lblAudioMapping.setSelectedItem("Multi");
}
+ lblAudioMapping.setSelectedItem("Multi");
+
grpSetAudio.setSize(312, 146);
}
else if (action)
@@ -20562,6 +20589,7 @@ public void run() {
grpResolution.removeAll();
grpResolution.setVisible(true);
+ grpResolution.setLocation(grpResolution.getX(), 30);
grpResolution.add(lblImageSize);
grpResolution.add(comboResolution);
grpResolution.add(lblPad);
@@ -20672,11 +20700,12 @@ public void run() {
grpSetAudio.add(caseChangeAudioCodec);
if (comboAudioCodec.getItemCount() != 5 || comboAudioCodec.getModel().getElementAt(0).equals("PCM 16Bits") == false)
{
- if (lblAudioMapping.getItemCount() > 1)
+ if (lblAudioMapping.getItemCount() != 4)
{
- lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] {"Multi"}));
- lblAudioMapping.setSelectedItem("Multi");
- }
+ lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
+ }
+ lblAudioMapping.setSelectedItem("Multi");
+
comboAudioCodec.setModel(new DefaultComboBoxModel(new String[] { "PCM 16Bits", "PCM 24Bits", "PCM 32Bits", language.getProperty("codecCopy"), language.getProperty("noAudio") }));
caseChangeAudioCodec.setSelected(true);
comboAudioCodec.setEnabled(true);
@@ -20693,12 +20722,18 @@ public void run() {
lblAudio1.setLocation(12, caseNormalizeAudio.getY() + caseNormalizeAudio.getHeight() + 2);
comboAudio1.setLocation(lblAudio1.getX() + lblAudio1.getWidth() + 7, lblAudio1.getLocation().y + 1);
- grpSetAudio.add(lblAudio1);
- grpSetAudio.add(comboAudio1);
+ if (lblAudioMapping.getSelectedItem().toString().equals("Mix") == false)
+ {
+ grpSetAudio.add(lblAudio1);
+ grpSetAudio.add(comboAudio1);
+ }
lblAudio2.setLocation(comboAudio1.getX() + comboAudio1.getWidth() + 12, lblAudio1.getLocation().y);
comboAudio2.setLocation(lblAudio2.getX() + lblAudio2.getWidth() + 7, lblAudio2.getLocation().y + 1);
- grpSetAudio.add(lblAudio2);
- grpSetAudio.add(comboAudio2);
+ if (lblAudioMapping.getSelectedItem().toString().equals("Mix") == false)
+ {
+ grpSetAudio.add(lblAudio2);
+ grpSetAudio.add(comboAudio2);
+ }
lblAudio3.setLocation(lblAudio1.getX(), lblAudio1.getLocation().y + lblAudio1.getHeight() + 2);
comboAudio3.setLocation(lblAudio3.getX() + lblAudio3.getWidth() + 7, lblAudio3.getLocation().y + 1);
@@ -21044,8 +21079,8 @@ else if ("H.266".equals(function) && comboForcePreset.getModel().getSize() != 5)
// Ajout partie résolution
grpResolution.removeAll();
-
grpResolution.setVisible(true);
+ grpResolution.setLocation(grpResolution.getX(), 30);
grpResolution.add(lblImageSize);
grpResolution.add(comboResolution);
grpResolution.add(lblPad);
@@ -21112,9 +21147,10 @@ else if ("H.266".equals(function) && comboForcePreset.getModel().getSize() != 5)
{
if (lblAudioMapping.getItemCount() != 4)
{
- lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
- lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
- }
+ lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
+ }
+ lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
+
comboAudioCodec.setModel(new DefaultComboBoxModel(new String[] {"AAC", "MP3", "AC3", "Opus", "FLAC", "PCM 16Bits", "PCM 24Bits", "PCM 32Bits", "ALAC 16Bits", "ALAC 24Bits", "Dolby Digital Plus", language.getProperty("codecCopy"), language.getProperty("noAudio") }));
comboAudioCodec.setSelectedIndex(0);
caseChangeAudioCodec.setSelected(true);
@@ -21490,6 +21526,7 @@ else if (System.getProperty("os.name").contains("Mac"))
grpResolution.removeAll();
grpResolution.setVisible(true);
+ grpResolution.setLocation(grpResolution.getX(), 30);
grpResolution.add(lblImageSize);
grpResolution.add(comboResolution);
grpResolution.add(lblPad);
@@ -21609,8 +21646,9 @@ else if (System.getProperty("os.name").contains("Mac"))
if (lblAudioMapping.getItemCount() != 4)
{
lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
- lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
}
+ lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
+
comboAudioCodec.setModel(new DefaultComboBoxModel(new String[] { "PCM 16Bits", "PCM 24Bits", "PCM 32Bits", language.getProperty("codecCopy"), language.getProperty("noAudio") }));
comboAudioCodec.setSelectedIndex(0);
debitAudio.setModel(comboAudioBitrate.getModel());
@@ -21621,8 +21659,8 @@ else if ("MJPEG".equals(function) == false)
if (lblAudioMapping.getItemCount() != 4)
{
lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
- lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
}
+ lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
if (comboAudioCodec.getModel().getElementAt(0).equals("WMA") == false && "WMV".equals(function))
{
@@ -22004,7 +22042,8 @@ else if ("MPEG-1".equals(function) || "MPEG-2".equals(function))
// Ajout partie résolution
grpResolution.removeAll();
- grpResolution.setVisible(true);
+ grpResolution.setVisible(true);
+ grpResolution.setLocation(grpResolution.getX(), 30);
grpResolution.add(lblImageSize);
grpResolution.add(comboResolution);
grpResolution.add(lblPad);
@@ -22085,8 +22124,9 @@ else if ("MPEG-1".equals(function) || "MPEG-2".equals(function))
if (lblAudioMapping.getItemCount() != 4)
{
lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
- lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
}
+ lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
+
comboAudioCodec.setModel(new DefaultComboBoxModel(new String[] {"AC3", "Dolby Digital Plus", language.getProperty("codecCopy"), language.getProperty("noAudio") }));
comboAudioCodec.setSelectedIndex(0);
debitAudio.setModel(comboAudioBitrate.getModel());
@@ -22100,8 +22140,9 @@ else if ("MPEG-1".equals(function) || "MPEG-2".equals(function))
if (lblAudioMapping.getItemCount() != 4)
{
lblAudioMapping.setModel(new DefaultComboBoxModel(new String[] { language.getProperty("stereo"), "Multi", language.getProperty("mono"), "Mix" }));
- lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
}
+ lblAudioMapping.setSelectedItem(language.getProperty("stereo"));
+
comboAudioCodec.setModel(new DefaultComboBoxModel(new String[] {"AC3", language.getProperty("codecCopy"), language.getProperty("noAudio") }));
comboAudioCodec.setSelectedIndex(0);
debitAudio.setModel(comboAudioBitrate.getModel());
@@ -22227,7 +22268,8 @@ else if ("MPEG-1".equals(function) || "MPEG-2".equals(function))
// Ajout partie résolution
grpResolution.removeAll();
- grpResolution.setVisible(true);
+ grpResolution.setVisible(true);
+ grpResolution.setLocation(grpResolution.getX(), 30);
grpResolution.add(lblImageSize);
grpResolution.add(comboResolution);
grpResolution.add(caseRotate);
@@ -22510,8 +22552,7 @@ else if (comboFonctions.getEditor().getItem().toString().isEmpty())
VideoPlayer.setMedia();
}
- } catch (Exception e1) {
- }
+ } catch (Exception e1) {}
}
}
});
@@ -23737,7 +23778,7 @@ public static void enableAll() {
if (caseAddText.isSelected() == false)
{
- text.setEnabled(false);
+ overlayText.setEnabled(false);
}
diff --git a/src/application/Splash.java b/src/application/Splash.java
index e86c0061..7b90bfe9 100644
--- a/src/application/Splash.java
+++ b/src/application/Splash.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/SubtitlesEdit.java b/src/application/SubtitlesEdit.java
index e88a8188..235091e3 100644
--- a/src/application/SubtitlesEdit.java
+++ b/src/application/SubtitlesEdit.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/SubtitlesEmbed.java b/src/application/SubtitlesEmbed.java
index bdf8d62a..4c80a476 100644
--- a/src/application/SubtitlesEmbed.java
+++ b/src/application/SubtitlesEmbed.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/SubtitlesHelp.java b/src/application/SubtitlesHelp.java
index 7dfefac0..a8a0ec30 100644
--- a/src/application/SubtitlesHelp.java
+++ b/src/application/SubtitlesHelp.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/SubtitlesTimeline.java b/src/application/SubtitlesTimeline.java
index a3425965..cb3886c1 100644
--- a/src/application/SubtitlesTimeline.java
+++ b/src/application/SubtitlesTimeline.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/Update.java b/src/application/Update.java
index 4e2aea9d..64f3df77 100644
--- a/src/application/Update.java
+++ b/src/application/Update.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/application/Utils.java b/src/application/Utils.java
index 3a11e1a6..9cfc8ff4 100644
--- a/src/application/Utils.java
+++ b/src/application/Utils.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1650,7 +1650,7 @@ else if (p instanceof JTextField)
timecode.setLocation(timecode.getLocation().x, (int) Math.round(Integer.valueOf(textTcPosY.getText()) / Shutter.playerRatio));
if (p.getName().equals("textTcPosX"))
- timecode.setLocation((int) Math.round(Integer.valueOf(textTcPosX.getText()) / Shutter.playerRatio), timecode.getLocation().y);
+ timecode.setLocation((int) Math.round(Integer.valueOf(textTcPosX.getText()) / Shutter.playerRatio), timecode.getLocation().y);
}
else if (p instanceof JSlider)
{
@@ -1859,6 +1859,19 @@ else if (p.getName().equals("panelSubsColor2"))
fileLocX = fileName.getLocation().x;
fileLocY = fileName.getLocation().y;
fileName.setSize(10,10); //Workaround to not reset the location
+
+ VideoPlayer.player.add(fileName);
+
+ //Overimage need to be the last component added
+ if (caseEnableCrop.isSelected())
+ {
+ VideoPlayer.player.remove(selection);
+ VideoPlayer.player.remove(overImage);
+ VideoPlayer.player.add(selection);
+ VideoPlayer.player.add(overImage);
+ }
+
+ fileName.repaint();
}
//grpSubtitles
diff --git a/src/application/VideoPlayer.java b/src/application/VideoPlayer.java
index a51f591e..42a5bcaf 100644
--- a/src/application/VideoPlayer.java
+++ b/src/application/VideoPlayer.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -2195,20 +2195,20 @@ public void run() {
{
if (comboAudioTrack.getSelectedItem() != null && comboAudioTrack.getSelectedItem().equals("Mix"))
{
- FFMPEG.playerWaveform(start + " -v quiet -hide_banner -i " + '"' + videoPath + '"' + " -f lavfi -i color=s=" + size + "x360:c=0x202025"
+ FFMPEG.playerWaveform(start + " -v quiet -hide_banner -i " + '"' + videoPath + '"' + " -f lavfi -i color=s=" + size + "x360:c=0x202024"
+ " -filter_complex " + '"' + "[0:a]amerge=inputs=" + FFPROBE.channels + "," + duration + "aformat=channel_layouts=mono,compand,showwavespic=size=" + size + "x360:colors=green|green[fg];[1:v][fg]overlay=format=rgb" + '"'
+ " -vn -frames:v 1 -c:v bmp -f image2pipe -");
}
else
{
- FFMPEG.playerWaveform(start + " -v quiet -hide_banner -i " + '"' + videoPath + '"' + " -f lavfi -i color=s=" + size + "x360:c=0x202025"
+ FFMPEG.playerWaveform(start + " -v quiet -hide_banner -i " + '"' + videoPath + '"' + " -f lavfi -i color=s=" + size + "x360:c=0x202024"
+ " -filter_complex " + '"' + "[0:a:" + comboAudioTrack.getSelectedIndex() + "]" + duration + "aformat=channel_layouts=mono,compand,showwavespic=size=" + size + "x360:colors=green|green[fg];[1:v][fg]overlay=format=rgb" + '"'
+ " -vn -frames:v 1 -c:v bmp -f image2pipe -");
}
}
else
{
- FFMPEG.playerWaveform(start + " -v quiet -hide_banner -i " + '"' + videoPath + '"' + " -f lavfi -i color=s=" + size + "x360:c=0x202025"
+ FFMPEG.playerWaveform(start + " -v quiet -hide_banner -i " + '"' + videoPath + '"' + " -f lavfi -i color=s=" + size + "x360:c=0x202024"
+ " -filter_complex " + '"' + "[0:a]" + duration + "aformat=channel_layouts=mono,compand,showwavespic=size=" + size + "x360:colors=green|green[fg];[1:v][fg]overlay=format=rgb" + '"'
+ " -vn -frames:v 1 -c:v bmp -f image2pipe -");
}
@@ -4567,15 +4567,6 @@ public static void checkSelection() {
{
Shutter.textCropWidth.setText(String.valueOf(outW));
Shutter.textCropHeight.setText(String.valueOf(outH));
- }
-
- if (Shutter.caseEnableCrop.isSelected())
- {
- Shutter.comboPreset.getEditor().setItem((double) Math.round((double) ((double) outW / outH) * 100.0) / 100.0);
- }
- else
- {
- Shutter.comboPreset.getEditor().setItem(Shutter.language.getProperty("aucun"));
}
}
@@ -5061,7 +5052,7 @@ public void run() {
String alpha = "";
if (FFPROBE.hasAlpha && deinterlace == "")
{
- alpha = " -vf " + '"' + "split=2[bg][fg];[bg]drawbox=c=0x202025:replace=1:t=fill[bg];[bg][fg]overlay=0:0,format=rgb24" + '"';
+ alpha = " -vf " + '"' + "split=2[bg][fg];[bg]drawbox=c=0x202024:replace=1:t=fill[bg];[bg][fg]overlay=0:0,format=rgb24" + '"';
}
//Creating preview file
@@ -5402,7 +5393,7 @@ else if (FFMPEG.vulkanAvailable && yadif == "")
//Alpha channel
if (FFPROBE.hasAlpha)
{
- filter += ",split=2[bg][fg];[bg]drawbox=c=0x202025:replace=1:t=fill[bg];[bg][fg]overlay=0:0,format=rgb24";
+ filter += ",split=2[bg][fg];[bg]drawbox=c=0x202024:replace=1:t=fill[bg];[bg][fg]overlay=0:0,format=rgb24";
}
//Speed
diff --git a/src/application/VideoWeb.java b/src/application/VideoWeb.java
index 39ae6186..e79921f9 100644
--- a/src/application/VideoWeb.java
+++ b/src/application/VideoWeb.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/AudioEncoders.java b/src/functions/AudioEncoders.java
index a1680984..57cbe6c8 100644
--- a/src/functions/AudioEncoders.java
+++ b/src/functions/AudioEncoders.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/AudioNormalization.java b/src/functions/AudioNormalization.java
index 3f99f943..e6dfaf00 100644
--- a/src/functions/AudioNormalization.java
+++ b/src/functions/AudioNormalization.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/BlackDetection.java b/src/functions/BlackDetection.java
index 9e172871..1e54f357 100644
--- a/src/functions/BlackDetection.java
+++ b/src/functions/BlackDetection.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/Command.java b/src/functions/Command.java
index c8086367..8ba53318 100644
--- a/src/functions/Command.java
+++ b/src/functions/Command.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -23,6 +23,7 @@
import application.Ftp;
import application.Shutter;
+import library.EXIFTOOL;
import library.FFMPEG;
import settings.FunctionUtils;
@@ -106,26 +107,42 @@ public void run() {
cmd = " " + comboFonctions.getEditor().getItem().toString().replace("ffmpeg", "").replace("-passlogfile " + '"' + passlogfile[1] + '"', "-passlogfile " + '"' + fileOut + '"') + " -y " ;
}
else
- cmd = " " + comboFonctions.getEditor().getItem().toString().replace("ffmpeg", "") + " -y " ;
+ cmd = " " + comboFonctions.getEditor().getItem().toString().replace("exiftool", "").replace("ffmpeg", "");
- FFMPEG.run(" -i " + '"' + file.toString() + '"' + cmd + '"' + fileOut + '"');
-
- do
+ if (comboFonctions.getEditor().getItem().toString().contains("ffmpeg"))
{
- Thread.sleep(100);
+ cmd += " -y ";
+
+ FFMPEG.run(" -i " + '"' + file.toString() + '"' + cmd + '"' + fileOut + '"');
+
+ do
+ {
+ Thread.sleep(100);
+ } while(FFMPEG.runProcess.isAlive());
+
+ if (cmd.contains("-pass"))
+ {
+ FFMPEG.run(" -i " + '"' + file.toString() + '"' + cmd.replace("-pass 1", "-pass 2") + '"' + fileOut + '"');
+ }
+
+ do
+ {
+ Thread.sleep(100);
+ } while(FFMPEG.runProcess.isAlive());
}
- while(FFMPEG.runProcess.isAlive());
-
- if (cmd.contains("-pass"))
- {
- FFMPEG.run(" -i " + '"' + file.toString() + '"' + cmd.replace("-pass 1", "-pass 2") + '"' + fileOut + '"');
- }
-
- do
+ else if (comboFonctions.getEditor().getItem().toString().contains("exiftool"))
{
- Thread.sleep(100);
+ btnStart.setEnabled(false);
+
+ EXIFTOOL.run(" -tagsfromfile " + '"' + file.toString() + '"' + cmd + " " + '"' + file.toString() + '"');
+
+ do
+ {
+ Thread.sleep(100);
+ } while (EXIFTOOL.isRunning);
+
+ btnStart.setEnabled(true);
}
- while(FFMPEG.runProcess.isAlive());
//Removing temporary files
final File folder = new File(fileOut.getParent());
diff --git a/src/functions/Conform.java b/src/functions/Conform.java
index 41c188ba..ec2bc653 100644
--- a/src/functions/Conform.java
+++ b/src/functions/Conform.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/DVDRIP.java b/src/functions/DVDRIP.java
index d5e4aeff..06968860 100644
--- a/src/functions/DVDRIP.java
+++ b/src/functions/DVDRIP.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/Extract.java b/src/functions/Extract.java
index e6adda4c..97788e6e 100644
--- a/src/functions/Extract.java
+++ b/src/functions/Extract.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/FrameMD5.java b/src/functions/FrameMD5.java
index cd15c1d5..e61a4302 100644
--- a/src/functions/FrameMD5.java
+++ b/src/functions/FrameMD5.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/LoudnessTruePeak.java b/src/functions/LoudnessTruePeak.java
index 24172fc1..74fc9a34 100644
--- a/src/functions/LoudnessTruePeak.java
+++ b/src/functions/LoudnessTruePeak.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/Merge.java b/src/functions/Merge.java
index 5aff4023..df5a1386 100644
--- a/src/functions/Merge.java
+++ b/src/functions/Merge.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/OfflineDetection.java b/src/functions/OfflineDetection.java
index aa08f973..23b9c9a7 100644
--- a/src/functions/OfflineDetection.java
+++ b/src/functions/OfflineDetection.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/Picture.java b/src/functions/Picture.java
index 21812eb0..42e13b17 100644
--- a/src/functions/Picture.java
+++ b/src/functions/Picture.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -130,12 +130,12 @@ public void run() {
//Date filter
if (Filter.dateFilter(file) == false)
continue;
-
- //Framerate
- String frameRate = setFramerate();
-
+
//Deinterlace
String filterComplex = setDeinterlace(extension, isRaw);
+
+ //Framerate
+ filterComplex = setFramerate(filterComplex);
//No GPU acceleration when using this function
FFMPEG.isGPUCompatible = false;
@@ -343,7 +343,7 @@ else if (comboResolution.getSelectedItem().toString().contains("AI"))
String ext = fileOut.getName().substring(fileOut.getName().lastIndexOf("."));
fileOut = new File(upscaleFolder + "/" + fileOut.getName().replace(ext, ".png"));
- FFMPEG.run(InputAndOutput.inPoint + frameRate + inputCodec + " -i " + '"' + file.toString() + '"' + logo + InputAndOutput.outPoint + filterComplex + singleFrame + colorspace + " -an -y " + '"' + fileOut + '"');
+ FFMPEG.run(InputAndOutput.inPoint + inputCodec + " -i " + '"' + file.toString() + '"' + logo + InputAndOutput.outPoint + filterComplex + singleFrame + colorspace + " -an -y " + '"' + fileOut + '"');
do {
Thread.sleep(10);
@@ -366,7 +366,7 @@ else if (comboResolution.getSelectedItem().toString().contains("AI"))
}
else
{
- FFMPEG.run(InputAndOutput.inPoint + frameRate + inputCodec + " -i " + '"' + file.toString() + '"' + logo + InputAndOutput.outPoint + cmd + '"' + fileOut + '"');
+ FFMPEG.run(InputAndOutput.inPoint + inputCodec + " -i " + '"' + file.toString() + '"' + logo + InputAndOutput.outPoint + cmd + '"' + fileOut + '"');
}
if (isRaw)
@@ -404,19 +404,16 @@ else if (comboResolution.getSelectedItem().toString().contains("AI"))
}
- private static String setFramerate() {
+ private static String setFramerate(String filterComplex) {
if (caseCreateSequence.isSelected())
- {
- Float f = (float) FFPROBE.currentFPS / Float.parseFloat(comboInterpret.getSelectedItem().toString().replace(",", "."));
-
- if (f != 1.0f)
- {
- return " -r " + f;
- }
+ {
+ if (filterComplex != "") filterComplex += ",";
+
+ filterComplex += "fps=" + Float.parseFloat(comboInterpret.getSelectedItem().toString().replace(",", "."));
}
-
- return "";
+
+ return filterComplex;
}
private static String setDeinterlace(String extension, boolean isRaw) {
@@ -512,7 +509,7 @@ else if (comboFonctions.getSelectedItem().equals("JPEG") && caseCreateSequence.i
private static String setFrame() {
if (caseCreateSequence.isSelected())
- {
+ {
return "";
}
else if (comboFilter.getSelectedItem().toString().equals(".gif"))
diff --git a/src/functions/ReplaceAudio.java b/src/functions/ReplaceAudio.java
index 11ee4c9b..db064b7e 100644
--- a/src/functions/ReplaceAudio.java
+++ b/src/functions/ReplaceAudio.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -260,8 +260,14 @@ else if (caseChangeAudioCodec.isSelected())
}
else
{
- videoFile = new File(liste.getElementAt(0));
- audioFiles = " -i " + '"' + liste.getElementAt(1) + '"';
+ videoFile = new File(liste.getElementAt(0));
+
+ if (liste.getElementAt(1).contains("lavfi")) //Mute track
+ {
+ audioFiles = liste.getElementAt(1);
+ }
+ else
+ audioFiles = " -i " + '"' + liste.getElementAt(1) + '"';
//Ignore mute tracks
if (liste.getElementAt(1).contains("lavfi") == false)
@@ -269,7 +275,7 @@ else if (caseChangeAudioCodec.isSelected())
audioExt = liste.getElementAt(1).substring(liste.getElementAt(1).lastIndexOf("."));
}
}
-
+
float offset = 0;
if (caseAudioOffset.isSelected())
diff --git a/src/functions/Rewrap.java b/src/functions/Rewrap.java
index 417450e0..4d34999e 100644
--- a/src/functions/Rewrap.java
+++ b/src/functions/Rewrap.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/VMAF.java b/src/functions/VMAF.java
index 84a6d4aa..62f83047 100644
--- a/src/functions/VMAF.java
+++ b/src/functions/VMAF.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/functions/VideoEncoders.java b/src/functions/VideoEncoders.java
index 2dfdb121..94e40b28 100644
--- a/src/functions/VideoEncoders.java
+++ b/src/functions/VideoEncoders.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -663,7 +663,7 @@ else if (comboFonctions.getSelectedItem().toString().equals("DVD"))
//Interlace50p
filterComplex = AdvancedFeatures.setInterlace50p(filterComplex);
-
+
//Force TFF
filterComplex = AdvancedFeatures.setForceTFF(filterComplex);
diff --git a/src/functions/VideoInserts.java b/src/functions/VideoInserts.java
index 570f6dc1..d78e2b98 100644
--- a/src/functions/VideoInserts.java
+++ b/src/functions/VideoInserts.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/library/BMXTRANSWRAP.java b/src/library/BMXTRANSWRAP.java
index 5b9f7a76..fa040bd7 100644
--- a/src/library/BMXTRANSWRAP.java
+++ b/src/library/BMXTRANSWRAP.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/library/DCRAW.java b/src/library/DCRAW.java
index 52d5897c..a1d2a2b9 100644
--- a/src/library/DCRAW.java
+++ b/src/library/DCRAW.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/library/DVDAUTHOR.java b/src/library/DVDAUTHOR.java
index e355c33d..c4233023 100644
--- a/src/library/DVDAUTHOR.java
+++ b/src/library/DVDAUTHOR.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/library/EXIFTOOL.java b/src/library/EXIFTOOL.java
index 42d375f1..7e867cba 100644
--- a/src/library/EXIFTOOL.java
+++ b/src/library/EXIFTOOL.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -39,7 +39,7 @@ public class EXIFTOOL extends Shutter {
private static boolean scanOrientation = true;
private static Boolean horizontal = true;
- public static void run(final String file) {
+ public static void run(final String cmd) {
error = false;
scanOrientation = true;
@@ -50,6 +50,12 @@ public static void run(final String file) {
creationHours = "00:00:00";
exifWidth = "";
exifHeight = "";
+
+ if (cmd != '"' + "" + '"')
+ {
+ Console.consoleEXIFTOOL.append(System.lineSeparator());
+ Console.consoleEXIFTOOL.append(Shutter.language.getProperty("command") + " " + cmd);
+ }
//Watermark scaling
FFPROBE.previousImageWidth = FFPROBE.imageWidth;
@@ -67,14 +73,14 @@ public void run() {
PathToEXIFTOOL = Shutter.class.getProtectionDomain().getCodeSource().getLocation().getPath();
PathToEXIFTOOL = PathToEXIFTOOL.substring(1,PathToEXIFTOOL.length()-1);
PathToEXIFTOOL = '"' + PathToEXIFTOOL.substring(0,(int) (PathToEXIFTOOL.lastIndexOf("/"))).replace("%20", " ") + "/Library/exiftool.exe" + '"';
- processEXIFTOOL = new ProcessBuilder(PathToEXIFTOOL + " " + '"' + file + '"');
+ processEXIFTOOL = new ProcessBuilder(PathToEXIFTOOL + " " + cmd);
}
else
{
PathToEXIFTOOL = Shutter.class.getProtectionDomain().getCodeSource().getLocation().getPath();
PathToEXIFTOOL = PathToEXIFTOOL.substring(0,PathToEXIFTOOL.length()-1);
PathToEXIFTOOL = PathToEXIFTOOL.substring(0,(int) (PathToEXIFTOOL.lastIndexOf("/"))).replace("%20", "\\ ") + "/Library/exiftool";
- processEXIFTOOL = new ProcessBuilder("/bin/bash", "-c" , PathToEXIFTOOL + " " + '"' + file + '"');
+ processEXIFTOOL = new ProcessBuilder("/bin/bash", "-c" , PathToEXIFTOOL + " " + cmd);
}
isRunning = true;
@@ -85,7 +91,10 @@ public void run() {
String line;
- Console.consoleEXIFTOOL.append(System.lineSeparator());
+ if (cmd != '"' + "" + '"')
+ {
+ Console.consoleEXIFTOOL.append(System.lineSeparator());
+ }
//Analyse des données
while ((line = br.readLine()) != null) {
@@ -134,8 +143,6 @@ public void run() {
}
process.waitFor();
- Console.consoleEXIFTOOL.append(System.lineSeparator());
-
//Si il n'y a pas d'exif on lit la date de création système
if (exifDate == "" && exifHours == "")
{
diff --git a/src/library/FFMPEG.java b/src/library/FFMPEG.java
index f98a5bed..6c723ce4 100644
--- a/src/library/FFMPEG.java
+++ b/src/library/FFMPEG.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -210,6 +210,7 @@ else if (caseChangeFolder2.isSelected())
runProcess = new Thread(new Runnable() {
+ @SuppressWarnings("resource")
@Override
public void run() {
diff --git a/src/library/FFPROBE.java b/src/library/FFPROBE.java
index ff2a3289..d911435d 100644
--- a/src/library/FFPROBE.java
+++ b/src/library/FFPROBE.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -114,7 +114,7 @@ public static void Data(final String file) {
}
interlaced = null;
- if (caseForcerDesentrelacement.isSelected() == false || caseForcerDesentrelacement.isSelected() && lblTFF.getText().equals("x2"))
+ if (caseForcerDesentrelacement.isSelected() == false || caseForcerDesentrelacement.isSelected() && lblTFF.getText().contains("x2"))
{
fieldOrder = null;
}
@@ -254,13 +254,13 @@ else if (file.equals("Capture.input.device") && RecordInputDevice.videoDeviceInd
if (line.contains("top first") || line.contains("top coded first"))
{
interlaced = "1";
- if (caseForcerDesentrelacement.isSelected() == false || caseForcerDesentrelacement.isSelected() && lblTFF.getText().equals("x2"))
+ if (caseForcerDesentrelacement.isSelected() == false || caseForcerDesentrelacement.isSelected() && lblTFF.getText().contains("x2"))
fieldOrder = "0";
}
else if (line.contains("bottom first") || line.contains("bottom coded first"))
{
interlaced = "1";
- if (caseForcerDesentrelacement.isSelected() == false || caseForcerDesentrelacement.isSelected() && lblTFF.getText().equals("x2"))
+ if (caseForcerDesentrelacement.isSelected() == false || caseForcerDesentrelacement.isSelected() && lblTFF.getText().contains("x2"))
fieldOrder = "1";
}
@@ -718,7 +718,7 @@ public void run() {
{
String field = line.substring(line.indexOf("top_field_first") + 16);
- if (caseForcerDesentrelacement.isSelected() == false || caseForcerDesentrelacement.isSelected() && lblTFF.getText().equals("x2"))
+ if (caseForcerDesentrelacement.isSelected() == false || caseForcerDesentrelacement.isSelected() && lblTFF.getText().contains("x2"))
{
if (field.equals("1"))
fieldOrder = "0";
@@ -1234,7 +1234,7 @@ public static void setFilesize() {
int min = Integer.parseInt(textM.getText());
int sec = Integer.parseInt(textS.getText());
int audio = Integer.parseInt(debitAudio.getSelectedItem().toString());
- int tailleFinale = Integer.parseInt(bitrateSize.getText());
+ float tailleFinale = Float.parseFloat(bitrateSize.getText().replace(",", "."));
float result = (float) tailleFinale / ((h * 3600) + (min * 60) + sec);
float resultAudio = (float) (audio*multi) / 8 / 1024;
float resultatdebit = (result - resultAudio) * 8 * 1024;
@@ -1256,7 +1256,13 @@ public static void setFilesize() {
float resultVideo = (float) videoBitrate / 8 / 1024;
float resultAudio = (float) (audio*multi) / 8 / 1024;
float resultatdebit = (resultVideo + resultAudio) * ( (h * 3600)+(min * 60)+sec);
- bitrateSize.setText(String.valueOf((int)resultatdebit));
+
+ if (resultatdebit < 10)
+ {
+ bitrateSize.setText(String.valueOf((double) Math.round(resultatdebit * 100.0) / 100.0));
+ }
+ else
+ bitrateSize.setText(String.valueOf((int) resultatdebit));
}
}
else
diff --git a/src/library/MEDIAINFO.java b/src/library/MEDIAINFO.java
index 4e967a86..8005e6fb 100644
--- a/src/library/MEDIAINFO.java
+++ b/src/library/MEDIAINFO.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/library/NCNN.java b/src/library/NCNN.java
index 87763f13..6f853fa5 100644
--- a/src/library/NCNN.java
+++ b/src/library/NCNN.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/library/PDF.java b/src/library/PDF.java
index 80a87d6f..6631e697 100644
--- a/src/library/PDF.java
+++ b/src/library/PDF.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/library/SEVENZIP.java b/src/library/SEVENZIP.java
index 1fbe69eb..e0634b63 100644
--- a/src/library/SEVENZIP.java
+++ b/src/library/SEVENZIP.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/library/TSMUXER.java b/src/library/TSMUXER.java
index 577927a2..6058f44d 100644
--- a/src/library/TSMUXER.java
+++ b/src/library/TSMUXER.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/library/YOUTUBEDL.java b/src/library/YOUTUBEDL.java
index 853e1f5d..e720160e 100644
--- a/src/library/YOUTUBEDL.java
+++ b/src/library/YOUTUBEDL.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/settings/AdvancedFeatures.java b/src/settings/AdvancedFeatures.java
index 088ef1ce..d51e5c09 100644
--- a/src/settings/AdvancedFeatures.java
+++ b/src/settings/AdvancedFeatures.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -40,10 +40,22 @@ else if (FFPROBE.interlaced != null && FFPROBE.interlaced.equals("1") && caseFor
|| caseForcerDesentrelacement.isSelected())
{
int doubler = 0;
- if (lblTFF.getText().equals("x2") && caseForcerDesentrelacement.isSelected())
+ String field = FFPROBE.fieldOrder;
+ if (lblTFF.getText().contains("x2") && caseForcerDesentrelacement.isSelected())
+ {
doubler = 1;
+
+ if (lblTFF.getText().equals("x2 T"))
+ {
+ field = "0";
+ }
+ else if (lblTFF.getText().equals("x2 B"))
+ {
+ field = "1";
+ }
+ }
- return comboForcerDesentrelacement.getSelectedItem().toString() + "=" + doubler + ":" + FFPROBE.fieldOrder + ":0";
+ return comboForcerDesentrelacement.getSelectedItem().toString() + "=" + doubler + ":" + field + ":0";
}
return "";
@@ -275,7 +287,7 @@ else if (comboResolution.getSelectedItem().toString().contains(":"))
int width = Integer.parseInt(s[0]);
int height = Integer.parseInt(s[1]);
- if (width > 1920 || height > 1080)
+ if (width > 1920 || height > 1080 || FFPROBE.currentFPS >= 120.0f)
return " -profile:v " + profile; //level is auto selected by ffmpeg
else
return " -profile:v " + profile + " -level 5.1";
@@ -621,7 +633,7 @@ else if (inputDeviceIsRunning)
return " -vsync vfr";
}
- if (caseForcerDesentrelacement.isSelected() && (lblTFF.getText().equals("x2") || comboForcerDesentrelacement.getSelectedItem().toString().equals("detelecine")))
+ if (caseForcerDesentrelacement.isSelected() && (lblTFF.getText().contains("x2") || comboForcerDesentrelacement.getSelectedItem().toString().equals("detelecine")))
{
//Null
}
@@ -646,10 +658,11 @@ else if (FFPROBE.currentFPS == 23.98f)
public static String setForceTFF(String filterComplex) {
- if (comboFonctions.getSelectedItem().toString().contains("XDCAM") && caseForcerEntrelacement.isSelected())
+ if (caseForcerEntrelacement.isSelected())
{
if (filterComplex != "") filterComplex += ",";
- filterComplex += "setfield=tff";
+
+ filterComplex += "setfield=tff";
}
return filterComplex;
diff --git a/src/settings/AudioSettings.java b/src/settings/AudioSettings.java
index bfb97305..a1c0ac1e 100644
--- a/src/settings/AudioSettings.java
+++ b/src/settings/AudioSettings.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/settings/BitratesAdjustement.java b/src/settings/BitratesAdjustement.java
index b9ab2825..dc994610 100644
--- a/src/settings/BitratesAdjustement.java
+++ b/src/settings/BitratesAdjustement.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/settings/Colorimetry.java b/src/settings/Colorimetry.java
index cf7be7be..079dca14 100644
--- a/src/settings/Colorimetry.java
+++ b/src/settings/Colorimetry.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/settings/Corrections.java b/src/settings/Corrections.java
index a31acac9..78b23a91 100644
--- a/src/settings/Corrections.java
+++ b/src/settings/Corrections.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/settings/Filter.java b/src/settings/Filter.java
index 6391b6ef..8a61016f 100644
--- a/src/settings/Filter.java
+++ b/src/settings/Filter.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/settings/FunctionUtils.java b/src/settings/FunctionUtils.java
index 8a83d340..91e4dfa2 100644
--- a/src/settings/FunctionUtils.java
+++ b/src/settings/FunctionUtils.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -87,7 +87,7 @@ public static boolean analyze(File file, boolean isRaw) throws InterruptedExcept
|| comboFonctions.getSelectedItem().toString().equals("JPEG")
|| comboFonctions.getSelectedItem().toString().equals(language.getProperty("functionPicture")))
{
- EXIFTOOL.run(file.toString());
+ EXIFTOOL.run('"' + file.toString() + '"');
do
{
Thread.sleep(100);
@@ -1101,14 +1101,19 @@ public static String setMetadatas() {
{
if (FFPROBE.audioOnly == false)
{
- metadata = " -map_metadata 0 -map_metadata:s:v 0:s:v";
+ metadata = " -map_metadata 0";
- if (FFPROBE.hasAudio)
+ if (casePreserveSubs.isSelected() == false)
+ {
+ metadata += " -map_metadata:s:v 0:s:v";
+ }
+
+ if (FFPROBE.hasAudio && casePreserveSubs.isSelected() == false)
{
metadata += " -map_metadata:s:a 0:s:a";
}
}
- else
+ else if (casePreserveSubs.isSelected() == false)
{
metadata = " -map_metadata:s:a 0:s:a";
}
diff --git a/src/settings/Image.java b/src/settings/Image.java
index a45064ff..68f9e168 100644
--- a/src/settings/Image.java
+++ b/src/settings/Image.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/settings/ImageSequence.java b/src/settings/ImageSequence.java
index 538023e0..ce87317c 100644
--- a/src/settings/ImageSequence.java
+++ b/src/settings/ImageSequence.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/settings/InputAndOutput.java b/src/settings/InputAndOutput.java
index 26e27e3a..f664aeff 100644
--- a/src/settings/InputAndOutput.java
+++ b/src/settings/InputAndOutput.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/settings/Overlay.java b/src/settings/Overlay.java
index a0020794..af7c7225 100644
--- a/src/settings/Overlay.java
+++ b/src/settings/Overlay.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -146,7 +146,7 @@ else if (Shutter.caseShowTimecode.isSelected() && FFPROBE.timecode1.equals("") =
{
rate = comboFPS.getSelectedItem().toString().replace(",", ".");
}
- else if (caseForcerDesentrelacement.isSelected() && lblTFF.getText().equals("x2"))
+ else if (caseForcerDesentrelacement.isSelected() && lblTFF.getText().contains("x2"))
{
rate = String.valueOf(FFPROBE.currentFPS * 2);
}
@@ -368,7 +368,7 @@ else if (s[1].equals("auto"))
if (Shutter.caseAddText.isSelected())
{
- String text = FunctionUtils.setSuffix(Shutter.text.getText(), true);
+ String text = FunctionUtils.setSuffix(Shutter.overlayText.getText(), true);
if (filterComplex != "") filterComplex += ",";
filterComplex += "drawtext=" + overlayFont + ":text='" + text + "':r=" + rate + ":x=" + Math.round(Integer.parseInt(Shutter.textNamePosX.getText()) / imageRatio) + ":y=" + Math.round(Integer.parseInt(Shutter.textNamePosY.getText()) / imageRatio) + ":fontcolor=0x" + Shutter.foregroundHex + Shutter.foregroundNameAlpha + ":fontsize=" + Math.round(Integer.parseInt(Shutter.textNameSize.getText()) / imageRatio) + ":box=1:boxcolor=0x" + Shutter.backgroundHex + Shutter.backgroundNameAlpha;
diff --git a/src/settings/Timecode.java b/src/settings/Timecode.java
index 34188d5f..5bde07a6 100644
--- a/src/settings/Timecode.java
+++ b/src/settings/Timecode.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/settings/Transitions.java b/src/settings/Transitions.java
index 11549e72..719bb507 100644
--- a/src/settings/Transitions.java
+++ b/src/settings/Transitions.java
@@ -1,5 +1,5 @@
/*******************************************************************************************
-* Copyright (C) 2024 PACIFICO PAUL
+* Copyright (C) 2025 PACIFICO PAUL
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by