package eu.crushedpixel.replaymod.settings; import eu.crushedpixel.replaymod.holders.GuiEntryListEntry; import lombok.AllArgsConstructor; import lombok.Getter; import net.minecraft.client.resources.I18n; @AllArgsConstructor public enum EncodingPreset implements GuiEntryListEntry { MP4CUSTOM("replaymod.gui.rendersettings.presets.mp4.custom", "-y -f rawvideo -pix_fmt rgb24 -s %WIDTH%x%HEIGHT% -r %FPS% -i - -an -c:v libx264 -b:v %BITRATE% -pix_fmt yuv420p \"%FILENAME%.mp4\"", "mp4"), MP4HIGH("replaymod.gui.rendersettings.presets.mp4.high", "-y -f rawvideo -pix_fmt rgb24 -s %WIDTH%x%HEIGHT% -r %FPS% -i - -an -c:v libx264 -preset ultrafast -qp 1 -pix_fmt yuv420p \"%FILENAME%.mp4\"", "mp4"), MP4DEFAULT("replaymod.gui.rendersettings.presets.mp4.default", "-y -f rawvideo -pix_fmt rgb24 -s %WIDTH%x%HEIGHT% -r %FPS% -i - -an -c:v libx264 -preset ultrafast -pix_fmt yuv420p \"%FILENAME%.mp4\"", "mp4"), MP4POTATO("replaymod.gui.rendersettings.presets.mp4.potato", "-y -f rawvideo -pix_fmt rgb24 -s %WIDTH%x%HEIGHT% -r %FPS% -i - -an -c:v libx264 -preset ultrafast -crf 51 -pix_fmt yuv420p \"%FILENAME%.mp4\"", "mp4"), WEBMCUSTOM("replaymod.gui.rendersettings.presets.webm.custom", "-y -f rawvideo -pix_fmt rgb24 -s %WIDTH%x%HEIGHT% -r %FPS% -i - -an -c:v libvpx -b:v %BITRATE% \"%FILENAME%.webm\"", "webm"), MKVLOSSLESS("replaymod.gui.rendersettings.presets.mkv.lossless", "-y -f rawvideo -pix_fmt rgb24 -s %WIDTH%x%HEIGHT% -r %FPS% -i - -an -c:v libx264 -preset ultrafast -qp 0 \"%FILENAME%.mkv\"", "mkv"), PNGSEQUENCE("replaymod.gui.rendersettings.presets.png", "-y -f rawvideo -pix_fmt rgb24 -s %WIDTH%x%HEIGHT% -r %FPS% -i - \"%FILENAME%-%06d.png\"", "png"); private String name; @Getter private String commandLineArgs; @Getter private String fileExtension; public boolean hasBitrateSetting() { return commandLineArgs.contains("%BITRATE%"); } public boolean isYuv420() { return commandLineArgs.contains("-pix_fmt yuv420p"); } @Override public String getDisplayString() { return getI18nName(); } public String getI18nName() { return I18n.format(name); } }