diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiRenderSettings.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiRenderSettings.java index efc66d32..503a57db 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/GuiRenderSettings.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/GuiRenderSettings.java @@ -393,6 +393,7 @@ public class GuiRenderSettings extends GuiScreen { } else { commandInput.textboxKeyTyped(typedChar, keyCode); ffmpegArguments.textboxKeyTyped(typedChar, keyCode); + validateInputs(); } super.keyTyped(typedChar, keyCode); } @@ -605,6 +606,22 @@ public class GuiRenderSettings extends GuiScreen { private void validateInputs() { boolean valid = true; + + boolean isPreset = false; + EncodingPreset curPreset = encodingPresetDropdown.getElement(encodingPresetDropdown.getSelectionIndex()); + if(ffmpegArguments.getText().trim().equals(curPreset.getCommandLineArgs())) { + isPreset = true; + } + + if(isPreset) { + if(curPreset.isYuv420()) { + if(getWidthSetting() % 2 != 0 || getHeightSetting() % 2 != 0) { + valid = false; + renderButton.hoverText = I18n.format("replaymod.gui.rendersettings.customresolution.warning.yuv420"); + } + } + } + switch (rendererDropdown.getElement(rendererDropdown.getSelectionIndex())) { case CUBIC: if (getWidthSetting() * 3 / 4 != getHeightSetting() diff --git a/src/main/java/eu/crushedpixel/replaymod/settings/EncodingPreset.java b/src/main/java/eu/crushedpixel/replaymod/settings/EncodingPreset.java index d0f2bbd7..cb37c23c 100644 --- a/src/main/java/eu/crushedpixel/replaymod/settings/EncodingPreset.java +++ b/src/main/java/eu/crushedpixel/replaymod/settings/EncodingPreset.java @@ -38,6 +38,8 @@ public enum EncodingPreset implements GuiEntryListEntry { return commandLineArgs.contains("%BITRATE%"); } + public boolean isYuv420() { return commandLineArgs.contains("-pix_fmt yuv420p"); } + @Override public String getDisplayString() { return getI18nName(); diff --git a/src/main/resources/assets/replaymod/lang/en_US.lang b/src/main/resources/assets/replaymod/lang/en_US.lang index 76ab1cfa..1d23bcc4 100644 --- a/src/main/resources/assets/replaymod/lang/en_US.lang +++ b/src/main/resources/assets/replaymod/lang/en_US.lang @@ -314,6 +314,7 @@ replaymod.gui.rendersettings.renderer.equirectangular.description=Renders the vi replaymod.gui.rendersettings.customresolution=Video Resolution replaymod.gui.rendersettings.customresolution.warning.cubic=Cubic Rendering requires an aspect ratio of 4:3 replaymod.gui.rendersettings.customresolution.warning.equirectangular=Equirectangular Rendering requires an aspect ratio of 2:1 +replaymod.gui.rendersettings.customresolution.warning.yuv420=For this preset, the width and height values need to be even numbers replaymod.gui.rendersettings.resolution=Video Resolution replaymod.gui.rendersettings.interpolation=Path Interpolation replaymod.gui.rendersettings.forcechunks=Force Render Chunks