Files
flowframes/Code/Forms/SettingsForm.cs

234 lines
9.7 KiB
C#
Raw Normal View History

2020-11-23 16:51:05 +01:00
using Flowframes.IO;
using Flowframes.Media;
2021-01-14 15:28:31 +01:00
using Flowframes.MiscUtils;
2020-11-23 16:51:05 +01:00
using Microsoft.WindowsAPICodePack.Dialogs;
using System;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Flowframes.Forms
{
public partial class SettingsForm : Form
{
bool initialized = false;
public SettingsForm()
{
2021-01-15 16:20:25 +01:00
AutoScaleMode = AutoScaleMode.None;
2020-11-23 16:51:05 +01:00
InitializeComponent();
}
private void SettingsForm_Load(object sender, EventArgs e)
{
2021-03-30 13:07:57 +02:00
MinimumSize = new Size(Width, Height);
MaximumSize = new Size(Width, (Height * 1.5f).RoundToInt());
2020-11-23 16:51:05 +01:00
LoadSettings();
initialized = true;
Task.Run(() => CheckModelCacheSize());
2021-01-14 15:28:31 +01:00
}
public async Task CheckModelCacheSize ()
2021-01-14 15:28:31 +01:00
{
await Task.Delay(200);
2021-01-14 15:28:31 +01:00
long modelFoldersBytes = 0;
foreach (string modelFolder in ModelDownloader.GetAllModelFolders())
modelFoldersBytes += IOUtils.GetDirSize(modelFolder, true);
if (modelFoldersBytes > 1024 * 1024)
clearModelCacheBtn.Text = $"Clear Model Cache ({FormatUtils.Bytes(modelFoldersBytes)})";
else
clearModelCacheBtn.Enabled = false;
2020-11-23 16:51:05 +01:00
}
private void SettingsForm_FormClosing(object sender, FormClosingEventArgs e)
{
SaveSettings();
Program.mainForm.UpdateStepByStepControls();
2021-02-23 15:53:32 +01:00
Program.mainForm.LoadQuickSettings();
2020-11-23 16:51:05 +01:00
}
void SaveSettings ()
{
// Clamp...
mp4Crf.Text = ((int)mp4Crf.Value).Clamp(0, 50).ToString();
vp9Crf.Text = ((int)vp9Crf.Value).Clamp(0, 63).ToString();
// Remove spaces...
2020-11-23 16:51:05 +01:00
torchGpus.Text = torchGpus.Text.Replace(" ", "");
ncnnGpus.Text = ncnnGpus.Text.Replace(" ", "");
// General
ConfigParser.SaveComboxIndex(processingMode);
2021-01-21 11:47:53 +01:00
ConfigParser.SaveGuiElement(maxVidHeight, ConfigParser.StringMode.Int);
2020-11-23 16:51:05 +01:00
ConfigParser.SaveComboxIndex(tempFolderLoc);
ConfigParser.SaveGuiElement(keepTempFolder);
ConfigParser.SaveGuiElement(exportNamePattern);
ConfigParser.SaveGuiElement(exportNamePatternLoop);
ConfigParser.SaveGuiElement(delLogsOnStartup);
ConfigParser.SaveGuiElement(clearLogOnInput);
2020-11-23 16:51:05 +01:00
// Interpolation
2021-01-16 14:42:47 +01:00
ConfigParser.SaveGuiElement(keepAudio);
ConfigParser.SaveGuiElement(keepSubs);
ConfigParser.SaveGuiElement(keepMeta);
2021-04-22 16:58:37 +02:00
ConfigParser.SaveGuiElement(enableAlpha);
ConfigParser.SaveGuiElement(jpegFrames);
2020-11-23 16:51:05 +01:00
ConfigParser.SaveComboxIndex(dedupMode);
ConfigParser.SaveComboxIndex(mpdecimateMode);
2021-01-16 00:17:58 +01:00
ConfigParser.SaveGuiElement(dedupThresh);
2020-11-23 16:51:05 +01:00
ConfigParser.SaveGuiElement(enableLoop);
ConfigParser.SaveGuiElement(scnDetect);
2021-01-16 00:17:58 +01:00
ConfigParser.SaveGuiElement(scnDetectValue);
ConfigParser.SaveComboxIndex(sceneChangeFillMode);
ConfigParser.SaveComboxIndex(autoEncMode);
ConfigParser.SaveGuiElement(sbsAllowAutoEnc);
2020-11-23 16:51:05 +01:00
// AI
ConfigParser.SaveGuiElement(torchGpus);
ConfigParser.SaveGuiElement(ncnnGpus);
ConfigParser.SaveGuiElement(ncnnThreads);
ConfigParser.SaveGuiElement(uhdThresh);
ConfigParser.SaveGuiElement(rifeCudaFp16);
2021-01-21 11:47:53 +01:00
ConfigParser.SaveGuiElement(dainNcnnTilesize, ConfigParser.StringMode.Int);
// Export
2020-11-23 16:51:05 +01:00
ConfigParser.SaveGuiElement(minOutVidLength, ConfigParser.StringMode.Int);
ConfigParser.SaveGuiElement(maxFps);
ConfigParser.SaveComboxIndex(maxFpsMode);
ConfigParser.SaveComboxIndex(loopMode);
ConfigParser.SaveGuiElement(fixOutputDuration);
// Encoding
2020-11-23 16:51:05 +01:00
ConfigParser.SaveComboxIndex(mp4Enc);
Config.Set(mp4CrfConfigKey, mp4Crf.Value.ToString());
ConfigParser.SaveGuiElement(vp9Crf);
ConfigParser.SaveComboxIndex(proResProfile);
ConfigParser.SaveGuiElement(aviCodec);
ConfigParser.SaveGuiElement(aviColors);
ConfigParser.SaveGuiElement(gifColors);
ConfigParser.SaveGuiElement(gifDitherType);
ConfigParser.SaveGuiElement(imgSeqFormat);
2020-11-23 16:51:05 +01:00
// Debugging
ConfigParser.SaveComboxIndex(cmdDebugMode);
ConfigParser.SaveGuiElement(autoDedupFrames);
ConfigParser.SaveGuiElement(mdlBaseUrl);
ConfigParser.SaveComboxIndex(audioSubTransferMode);
2021-01-21 11:47:53 +01:00
ConfigParser.SaveGuiElement(ffEncThreads, ConfigParser.StringMode.Int);
2020-11-25 17:48:27 +01:00
ConfigParser.SaveGuiElement(ffEncPreset);
ConfigParser.SaveGuiElement(ffEncArgs);
2020-11-23 16:51:05 +01:00
}
void LoadSettings()
{
// General
ConfigParser.LoadComboxIndex(processingMode);
2020-11-23 16:51:05 +01:00
ConfigParser.LoadGuiElement(maxVidHeight);
ConfigParser.LoadComboxIndex(tempFolderLoc); ConfigParser.LoadGuiElement(tempDirCustom);
ConfigParser.LoadGuiElement(delLogsOnStartup);
2020-11-23 16:51:05 +01:00
ConfigParser.LoadGuiElement(keepTempFolder);
ConfigParser.LoadGuiElement(exportNamePattern);
ConfigParser.LoadGuiElement(exportNamePatternLoop);
ConfigParser.LoadGuiElement(clearLogOnInput);
2020-11-23 16:51:05 +01:00
// Interpolation
2021-01-16 14:42:47 +01:00
ConfigParser.LoadGuiElement(keepAudio);
ConfigParser.LoadGuiElement(keepSubs);
ConfigParser.LoadGuiElement(keepMeta);
2021-04-22 16:58:37 +02:00
ConfigParser.LoadGuiElement(enableAlpha);
ConfigParser.LoadGuiElement(jpegFrames);
2020-11-23 16:51:05 +01:00
ConfigParser.LoadComboxIndex(dedupMode);
ConfigParser.LoadComboxIndex(mpdecimateMode);
2021-01-16 00:17:58 +01:00
ConfigParser.LoadGuiElement(dedupThresh);
2020-11-23 16:51:05 +01:00
ConfigParser.LoadGuiElement(enableLoop);
ConfigParser.LoadGuiElement(scnDetect);
ConfigParser.LoadGuiElement(scnDetectValue);
ConfigParser.LoadComboxIndex(sceneChangeFillMode);
ConfigParser.LoadComboxIndex(autoEncMode);
ConfigParser.LoadGuiElement(sbsAllowAutoEnc);
2020-11-23 16:51:05 +01:00
// AI
ConfigParser.LoadGuiElement(torchGpus);
ConfigParser.LoadGuiElement(ncnnGpus);
ConfigParser.LoadGuiElement(ncnnThreads);
ConfigParser.LoadGuiElement(uhdThresh);
ConfigParser.LoadGuiElement(rifeCudaFp16);
2021-01-21 11:47:53 +01:00
ConfigParser.LoadGuiElement(dainNcnnTilesize);
// Export
2020-11-23 16:51:05 +01:00
ConfigParser.LoadGuiElement(minOutVidLength);
ConfigParser.LoadGuiElement(maxFps);
ConfigParser.LoadComboxIndex(maxFpsMode);
ConfigParser.LoadComboxIndex(loopMode);
ConfigParser.LoadGuiElement(fixOutputDuration);
// Encoding
2020-11-23 16:51:05 +01:00
ConfigParser.LoadComboxIndex(mp4Enc);
ConfigParser.LoadGuiElement(vp9Crf);
ConfigParser.LoadComboxIndex(proResProfile);
ConfigParser.LoadGuiElement(aviCodec);
ConfigParser.LoadGuiElement(aviColors);
ConfigParser.LoadGuiElement(gifColors);
ConfigParser.LoadGuiElement(gifDitherType);
ConfigParser.LoadGuiElement(imgSeqFormat);
2020-11-23 16:51:05 +01:00
// Debugging
ConfigParser.LoadComboxIndex(cmdDebugMode);
ConfigParser.LoadGuiElement(autoDedupFrames);
ConfigParser.LoadGuiElement(mdlBaseUrl);
ConfigParser.LoadComboxIndex(audioSubTransferMode);
2020-11-23 16:51:05 +01:00
ConfigParser.LoadGuiElement(ffEncThreads);
2020-11-25 17:48:27 +01:00
ConfigParser.LoadGuiElement(ffEncPreset);
ConfigParser.LoadGuiElement(ffEncArgs);
2020-11-23 16:51:05 +01:00
}
private void tempFolderLoc_SelectedIndexChanged(object sender, EventArgs e)
{
tempDirBrowseBtn.Visible = tempFolderLoc.SelectedIndex == 4;
tempDirCustom.Visible = tempFolderLoc.SelectedIndex == 4;
}
private void tempDirBrowseBtn_Click(object sender, EventArgs e)
{
CommonOpenFileDialog dialog = new CommonOpenFileDialog();
dialog.InitialDirectory = tempDirCustom.Text.Trim();
dialog.IsFolderPicker = true;
if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
tempDirCustom.Text = dialog.FileName;
ConfigParser.SaveGuiElement(tempDirCustom);
}
private void cmdDebugMode_SelectedIndexChanged(object sender, EventArgs e)
{
if (initialized && cmdDebugMode.SelectedIndex == 2)
MessageBox.Show("If you enable this, you need to close the CMD window manually after the process has finished, otherwise processing will be paused!", "Notice");
}
private void dedupMode_SelectedIndexChanged(object sender, EventArgs e)
{
dedupeSensLabel.Visible = dedupMode.SelectedIndex != 0;
magickDedupePanel.Visible = dedupMode.SelectedIndex == 1;
mpDedupePanel.Visible = dedupMode.SelectedIndex == 2;
}
2021-01-14 15:28:31 +01:00
private void clearModelCacheBtn_Click(object sender, EventArgs e)
{
ModelDownloader.DeleteAllModels();
clearModelCacheBtn.Text = "Clear Model Cache";
CheckModelCacheSize();
2021-01-14 15:28:31 +01:00
}
string mp4CrfConfigKey;
private void mp4Enc_SelectedIndexChanged(object sender, EventArgs e)
{
string text = mp4Enc.Text.ToUpper().Remove(" ");
if (text.Contains(FFmpegUtils.Codec.H264.ToString().ToUpper()))
mp4CrfConfigKey = "h264Crf";
if (text.Contains(FFmpegUtils.Codec.H265.ToString().ToUpper()))
mp4CrfConfigKey = "h265Crf";
if (text.Contains(FFmpegUtils.Codec.AV1.ToString().ToUpper()))
mp4CrfConfigKey = "av1Crf";
mp4Crf.Value = Config.GetInt(mp4CrfConfigKey);
}
2020-11-23 16:51:05 +01:00
}
}