diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/AudioBitrate.java b/src/main/java/com/annimon/ffmpegbot/parameters/AudioBitrate.java index 4aa4a7c..8b2b56c 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/AudioBitrate.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/AudioBitrate.java @@ -5,13 +5,14 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class AudioBitrate extends StringParameter { + public static final String ID = "abitrate"; private static final List VALUES = List.of( "4k", "16k", "32k", "", "64k", "128k", "256k", "320k", "512k" ); public AudioBitrate() { - super("abitrate", "\uD83D\uDD08 Bitrate", VALUES, ""); + super(ID, "\uD83D\uDD08 Bitrate", VALUES, ""); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/AudioCrystalizer.java b/src/main/java/com/annimon/ffmpegbot/parameters/AudioCrystalizer.java index 5d21b03..32129e5 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/AudioCrystalizer.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/AudioCrystalizer.java @@ -4,12 +4,13 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class AudioCrystalizer extends StringParameter { + public static final String ID = "crystalizer"; private static final List VALUES = List.of( "-8", "-4", "-2", "0", "2", "4", "8" ); public AudioCrystalizer() { - super("crystalizer", "\uD83D\uDD08 Crystalizer", VALUES, "0"); + super(ID, "\uD83D\uDD08 Crystalizer", VALUES, "0"); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/AudioEffect.java b/src/main/java/com/annimon/ffmpegbot/parameters/AudioEffect.java index a4d0fcb..5f5013c 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/AudioEffect.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/AudioEffect.java @@ -5,6 +5,8 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class AudioEffect extends StringParameter { + public static final String ID = "aeffect"; + public static final String ROBOT = "Robot"; public static final String ECHO = "Echo"; public static final String ECHO_2 = "Echo 2"; @@ -18,7 +20,7 @@ public class AudioEffect extends StringParameter { ); public AudioEffect() { - super("aeffect", "\uD83D\uDD08 Effect", VALUES, ""); + super(ID, "\uD83D\uDD08 Effect", VALUES, ""); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/AudioPitch.java b/src/main/java/com/annimon/ffmpegbot/parameters/AudioPitch.java index dede076..580768c 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/AudioPitch.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/AudioPitch.java @@ -5,6 +5,7 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class AudioPitch extends StringParameter { + public static final String ID = "apitch"; private static final List VALUES = List.of( "0.6", "0.8", "0.9", "1", @@ -12,7 +13,7 @@ public class AudioPitch extends StringParameter { ); public AudioPitch() { - super("apitch", "\uD83D\uDD08 Pitch", VALUES, "1"); + super(ID, "\uD83D\uDD08 Pitch", VALUES, "1"); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/AudioStreamByLanguage.java b/src/main/java/com/annimon/ffmpegbot/parameters/AudioStreamByLanguage.java index 6c485e0..d4a010d 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/AudioStreamByLanguage.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/AudioStreamByLanguage.java @@ -5,12 +5,13 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class AudioStreamByLanguage extends StringParameter { + public static final String ID = "asellang"; private static final List VALUES = List.of( "", "eng", "fra", "ita", "ukr", "spa" ); public AudioStreamByLanguage() { - super("asellang", "Audio Track", VALUES, ""); + super(ID, "Audio Track", VALUES, ""); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/AudioVolume.java b/src/main/java/com/annimon/ffmpegbot/parameters/AudioVolume.java index b2de3be..d4af04a 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/AudioVolume.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/AudioVolume.java @@ -5,6 +5,7 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class AudioVolume extends StringParameter { + public static final String ID = "volume"; private static final List VALUES = List.of( "-15dB", "-10dB", "-5dB", "-2dB", "", "2dB", "5dB", "10dB", @@ -12,7 +13,7 @@ public class AudioVolume extends StringParameter { ); public AudioVolume() { - super("volume", "\uD83D\uDD08 Volume", VALUES, ""); + super(ID, "\uD83D\uDD08 Volume", VALUES, ""); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/Contrast.java b/src/main/java/com/annimon/ffmpegbot/parameters/Contrast.java index abfa02c..e379482 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/Contrast.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/Contrast.java @@ -4,6 +4,7 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class Contrast extends StringParameter { + public static final String ID = "contrast"; private static final List VALUES = List.of( "0.4", "0.6", "0.8", "1", "1.2", "1.4", "1.6", @@ -11,7 +12,7 @@ public class Contrast extends StringParameter { ); public Contrast() { - super("contrast", "Contrast", VALUES, "1"); + super(ID, "Contrast", VALUES, "1"); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/DisableAudio.java b/src/main/java/com/annimon/ffmpegbot/parameters/DisableAudio.java index c686edb..8c42c54 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/DisableAudio.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/DisableAudio.java @@ -3,8 +3,10 @@ package com.annimon.ffmpegbot.parameters; import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; public class DisableAudio extends BooleanParameter { + public static final String ID = "noaud"; + public DisableAudio() { - super("noaud", "Disable audio", false); + super(ID, "Disable audio", false); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/Gamma.java b/src/main/java/com/annimon/ffmpegbot/parameters/Gamma.java index 31908b5..3d87194 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/Gamma.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/Gamma.java @@ -4,6 +4,7 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class Gamma extends StringParameter { + public static final String ID = "gamma"; private static final List VALUES = List.of( "0.2", "0.4", "0.6", "0.8", "1", "1.2", "1.4", "1.6", @@ -11,7 +12,7 @@ public class Gamma extends StringParameter { ); public Gamma() { - super("gamma", "Gamma", VALUES, "1"); + super(ID, "Gamma", VALUES, "1"); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/OutputFormat.java b/src/main/java/com/annimon/ffmpegbot/parameters/OutputFormat.java index dfc0cd0..9d68b7a 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/OutputFormat.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/OutputFormat.java @@ -5,12 +5,14 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class OutputFormat extends StringParameter { + public static final String ID = "output"; + public static final String VIDEO = "VIDEO"; public static final String AUDIO = "AUDIO"; public static final String VIDEO_NOTE = "VIDEO NOTE"; public OutputFormat(List values, String initialValue) { - super("output", "➡\uFE0F Output", values, initialValue); + super(ID, "➡\uFE0F Output", values, initialValue); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/Parameters.java b/src/main/java/com/annimon/ffmpegbot/parameters/Parameters.java index 8616238..a14a9f3 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/Parameters.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/Parameters.java @@ -5,29 +5,41 @@ import java.util.*; public class Parameters extends AbstractCollection> { - private final Map> parameters; + private final Map> enabledParameters; + private final Map> disabledParameters; public Parameters() { - parameters = new LinkedHashMap<>(); + enabledParameters = new LinkedHashMap<>(); + disabledParameters = new LinkedHashMap<>(); } @Override public boolean add(Parameter parameter) { - return !Objects.equals(parameter, parameters.put(parameter.id, parameter)); + return !Objects.equals(parameter, enabledParameters.put(parameter.id, parameter)); } public Parameter findById(String id) { - return parameters.get(id); + return enabledParameters.get(id); + } + + public void disable(String id) { + Optional.ofNullable(findById(id)) + .ifPresent(p -> disabledParameters.put(p.id, p)); + } + + public void enable(String id) { + Optional.ofNullable(disabledParameters.get(id)) + .ifPresent(this::add); } @NotNull @Override public Iterator> iterator() { - return parameters.values().iterator(); + return enabledParameters.values().iterator(); } @Override public int size() { - return parameters.size(); + return enabledParameters.size(); } } diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/Saturation.java b/src/main/java/com/annimon/ffmpegbot/parameters/Saturation.java index b067c16..0302e48 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/Saturation.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/Saturation.java @@ -4,6 +4,7 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class Saturation extends StringParameter { + public static final String ID = "saturation"; private static final List VALUES = List.of( "0", "0.25", "0.5", "0.75", "1", "1.25", "1.5", "1.75", @@ -11,7 +12,7 @@ public class Saturation extends StringParameter { ); public Saturation() { - super("saturation", "Saturation", VALUES, "1"); + super(ID, "Saturation", VALUES, "1"); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/SpeedFactor.java b/src/main/java/com/annimon/ffmpegbot/parameters/SpeedFactor.java index a11f887..64df1ac 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/SpeedFactor.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/SpeedFactor.java @@ -5,6 +5,7 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class SpeedFactor extends StringParameter { + public static final String ID = "speed"; private static final List VALUES = List.of( "0.5", "0.75", "0.8", "0.9", "1", "1.25", "1.4", "1.5", @@ -12,7 +13,7 @@ public class SpeedFactor extends StringParameter { ); public SpeedFactor() { - super("speed", "Speed", VALUES, "1"); + super(ID, "Speed", VALUES, "1"); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/VideoBitrate.java b/src/main/java/com/annimon/ffmpegbot/parameters/VideoBitrate.java index 5b88ac2..293e30b 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/VideoBitrate.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/VideoBitrate.java @@ -5,13 +5,14 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class VideoBitrate extends StringParameter { + public static final String ID = "vbitrate"; private static final List VALUES = List.of( "16k", "32k", "", "64k", "128k", "256k", "512k", "1M", "2M", "4M", "8M", "16M" ); public VideoBitrate() { - super("vbitrate", "Video bitrate", VALUES, ""); + super(ID, "Video bitrate", VALUES, ""); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/VideoFrameRate.java b/src/main/java/com/annimon/ffmpegbot/parameters/VideoFrameRate.java index d01cfb6..86eccc4 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/VideoFrameRate.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/VideoFrameRate.java @@ -5,12 +5,13 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class VideoFrameRate extends StringParameter { + public static final String ID = "vfr"; private static final List VALUES = List.of( "5", "10", "15", "20", "25", "", "30", "45", "60" ); public VideoFrameRate() { - super("vfr", "Frame rate", VALUES, ""); + super(ID, "Frame rate", VALUES, ""); } @Override diff --git a/src/main/java/com/annimon/ffmpegbot/parameters/VideoScale.java b/src/main/java/com/annimon/ffmpegbot/parameters/VideoScale.java index 515c8a3..c0b424b 100644 --- a/src/main/java/com/annimon/ffmpegbot/parameters/VideoScale.java +++ b/src/main/java/com/annimon/ffmpegbot/parameters/VideoScale.java @@ -5,12 +5,13 @@ import com.annimon.ffmpegbot.commands.ffmpeg.Visitor; import java.util.List; public class VideoScale extends StringParameter { + public static final String ID = "scale"; private static final List VALUES = List.of( "144", "240", "360", "", "480", "720", "1080" ); public VideoScale() { - super("scale", "Scale", VALUES, ""); + super(ID, "Scale", VALUES, ""); } @Override