2020-11-23 16:51:05 +01:00
using Flowframes.IO ;
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.Collections.Generic ;
using System.ComponentModel ;
using System.Data ;
using System.Drawing ;
using System.Linq ;
using System.Text ;
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 )
{
LoadSettings ( ) ;
initialized = true ;
2021-01-15 22:43:13 +01:00
CheckModelCacheSize ( ) ;
2021-01-14 15:28:31 +01:00
}
2021-01-15 22:43:13 +01:00
public async Task CheckModelCacheSize ( )
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 ( ) ;
2021-02-21 12:39:25 +01:00
Program . mainForm . UpdateStepByStepControls ( ) ;
2021-02-23 15:53:32 +01:00
Program . mainForm . LoadQuickSettings ( ) ;
2020-11-23 16:51:05 +01:00
}
void SaveSettings ( )
{
2020-11-25 17:27:15 +01:00
// Clamp...
2020-12-23 16:32:29 +01:00
h264Crf . Text = h264Crf . GetInt ( ) . Clamp ( 0 , 51 ) . ToString ( ) ;
h265Crf . Text = h265Crf . GetInt ( ) . Clamp ( 0 , 51 ) . ToString ( ) ;
2020-12-23 18:39:27 +01:00
vp9Crf . Text = vp9Crf . GetInt ( ) . Clamp ( 0 , 63 ) . ToString ( ) ;
2020-11-25 17:27:15 +01:00
// Remove spaces...
2020-11-23 16:51:05 +01:00
torchGpus . Text = torchGpus . Text . Replace ( " " , "" ) ;
ncnnGpus . Text = ncnnGpus . Text . Replace ( " " , "" ) ;
// General
2020-11-29 16:10:31 +01:00
ConfigParser . SaveComboxIndex ( processingMode ) ;
2021-01-21 11:47:53 +01:00
ConfigParser . SaveGuiElement ( maxVidHeight , ConfigParser . StringMode . Int ) ;
2021-01-18 15:32:45 +01:00
ConfigParser . SaveGuiElement ( enableAlpha ) ;
2020-11-23 16:51:05 +01:00
ConfigParser . SaveComboxIndex ( tempFolderLoc ) ;
ConfigParser . SaveGuiElement ( keepTempFolder ) ;
2021-03-03 21:53:17 +01:00
ConfigParser . SaveGuiElement ( exportNamePattern ) ;
ConfigParser . SaveGuiElement ( exportNamePatternLoop ) ;
2020-12-08 21:46:17 +01:00
ConfigParser . SaveGuiElement ( delLogsOnStartup ) ;
2021-01-06 21:58:37 +01:00
ConfigParser . SaveGuiElement ( clearLogOnInput ) ;
2021-01-14 00:19:21 +01:00
ConfigParser . SaveGuiElement ( modelSuffix ) ;
2020-11-23 16:51:05 +01:00
// Interpolation
2021-01-16 14:42:47 +01:00
ConfigParser . SaveGuiElement ( keepAudio ) ;
ConfigParser . SaveGuiElement ( keepSubs ) ;
2020-11-23 16:51:05 +01:00
ConfigParser . SaveComboxIndex ( dedupMode ) ;
2020-11-25 12:40:17 +01:00
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 ) ;
2020-11-26 20:17:18 +01:00
ConfigParser . SaveGuiElement ( scnDetect ) ;
2021-01-16 00:17:58 +01:00
ConfigParser . SaveGuiElement ( scnDetectValue ) ;
2020-12-06 18:49:53 +01:00
ConfigParser . SaveComboxIndex ( autoEncMode ) ;
2020-12-07 12:34:12 +01:00
ConfigParser . SaveGuiElement ( sbsAllowAutoEnc ) ;
2020-11-23 16:51:05 +01:00
// AI
ConfigParser . SaveGuiElement ( torchGpus ) ;
ConfigParser . SaveGuiElement ( ncnnGpus ) ;
2020-11-25 17:27:15 +01:00
ConfigParser . SaveGuiElement ( ncnnThreads ) ;
2020-12-17 23:26:25 +01:00
ConfigParser . SaveGuiElement ( uhdThresh ) ;
2021-02-21 11:26:18 +01:00
ConfigParser . SaveGuiElement ( rifeCudaFp16 ) ;
2021-01-21 11:47:53 +01:00
ConfigParser . SaveGuiElement ( dainNcnnTilesize , ConfigParser . StringMode . Int ) ;
2020-11-23 16:51:05 +01:00
// Video Export
ConfigParser . SaveGuiElement ( minOutVidLength , ConfigParser . StringMode . Int ) ;
ConfigParser . SaveComboxIndex ( mp4Enc ) ;
ConfigParser . SaveGuiElement ( h264Crf ) ;
ConfigParser . SaveGuiElement ( h265Crf ) ;
2020-12-23 16:32:29 +01:00
ConfigParser . SaveGuiElement ( vp9Crf ) ;
ConfigParser . SaveComboxIndex ( proResProfile ) ;
2020-12-08 15:22:46 +01:00
ConfigParser . SaveGuiElement ( gifColors ) ;
2021-01-06 17:41:18 +01:00
ConfigParser . SaveGuiElement ( aviCodec ) ;
ConfigParser . SaveGuiElement ( aviColors ) ;
2020-11-23 16:51:05 +01:00
ConfigParser . SaveGuiElement ( maxFps ) ;
ConfigParser . SaveComboxIndex ( maxFpsMode ) ;
2020-11-26 21:18:31 +01:00
ConfigParser . SaveComboxIndex ( loopMode ) ;
2020-11-23 16:51:05 +01:00
// Debugging
ConfigParser . SaveComboxIndex ( cmdDebugMode ) ;
ConfigParser . SaveGuiElement ( autoDedupFrames ) ;
2021-03-13 14:01:43 +01:00
ConfigParser . SaveGuiElement ( mdlBaseUrl ) ;
2021-03-03 22:27:43 +01:00
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 ) ;
2020-12-23 16:13:04 +01:00
ConfigParser . SaveGuiElement ( ffEncArgs ) ;
2020-11-23 16:51:05 +01:00
ConfigParser . SaveGuiElement ( ffprobeCountFrames ) ;
}
void LoadSettings ( )
{
// General
2020-11-29 16:10:31 +01:00
ConfigParser . LoadComboxIndex ( processingMode ) ;
2020-11-23 16:51:05 +01:00
ConfigParser . LoadGuiElement ( maxVidHeight ) ;
2021-01-18 15:32:45 +01:00
ConfigParser . LoadGuiElement ( enableAlpha ) ;
2020-11-23 16:51:05 +01:00
ConfigParser . LoadComboxIndex ( tempFolderLoc ) ; ConfigParser . LoadGuiElement ( tempDirCustom ) ;
2020-12-08 21:46:17 +01:00
ConfigParser . LoadGuiElement ( delLogsOnStartup ) ;
2020-11-23 16:51:05 +01:00
ConfigParser . LoadGuiElement ( keepTempFolder ) ;
2021-03-03 21:53:17 +01:00
ConfigParser . LoadGuiElement ( exportNamePattern ) ;
ConfigParser . LoadGuiElement ( exportNamePatternLoop ) ;
2021-01-06 21:58:37 +01:00
ConfigParser . LoadGuiElement ( clearLogOnInput ) ;
2021-01-14 00:19:21 +01:00
ConfigParser . LoadGuiElement ( modelSuffix ) ;
2020-11-23 16:51:05 +01:00
// Interpolation
2021-01-16 14:42:47 +01:00
ConfigParser . LoadGuiElement ( keepAudio ) ;
ConfigParser . LoadGuiElement ( keepSubs ) ;
2020-11-23 16:51:05 +01:00
ConfigParser . LoadComboxIndex ( dedupMode ) ;
2020-11-25 12:40:17 +01:00
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 ) ;
2020-11-26 20:17:18 +01:00
ConfigParser . LoadGuiElement ( scnDetect ) ;
ConfigParser . LoadGuiElement ( scnDetectValue ) ;
2020-12-06 18:49:53 +01:00
ConfigParser . LoadComboxIndex ( autoEncMode ) ;
2020-12-07 12:34:12 +01:00
ConfigParser . LoadGuiElement ( sbsAllowAutoEnc ) ;
2020-11-23 16:51:05 +01:00
// AI
ConfigParser . LoadGuiElement ( torchGpus ) ;
ConfigParser . LoadGuiElement ( ncnnGpus ) ;
2020-11-25 17:27:15 +01:00
ConfigParser . LoadGuiElement ( ncnnThreads ) ;
2020-12-17 23:26:25 +01:00
ConfigParser . LoadGuiElement ( uhdThresh ) ;
2021-02-21 11:26:18 +01:00
ConfigParser . LoadGuiElement ( rifeCudaFp16 ) ;
2021-01-21 11:47:53 +01:00
ConfigParser . LoadGuiElement ( dainNcnnTilesize ) ;
2020-11-23 16:51:05 +01:00
// Video Export
ConfigParser . LoadGuiElement ( minOutVidLength ) ;
ConfigParser . LoadComboxIndex ( mp4Enc ) ;
ConfigParser . LoadGuiElement ( h264Crf ) ;
ConfigParser . LoadGuiElement ( h265Crf ) ;
2020-12-23 16:32:29 +01:00
ConfigParser . LoadGuiElement ( vp9Crf ) ;
ConfigParser . LoadComboxIndex ( proResProfile ) ;
2020-12-08 15:22:46 +01:00
ConfigParser . LoadGuiElement ( gifColors ) ;
2021-01-06 17:41:18 +01:00
ConfigParser . LoadGuiElement ( aviCodec ) ;
ConfigParser . LoadGuiElement ( aviColors ) ;
2020-11-23 16:51:05 +01:00
ConfigParser . LoadGuiElement ( maxFps ) ;
ConfigParser . LoadComboxIndex ( maxFpsMode ) ;
2020-11-26 21:18:31 +01:00
ConfigParser . LoadComboxIndex ( loopMode ) ;
2020-11-23 16:51:05 +01:00
// Debugging
ConfigParser . LoadComboxIndex ( cmdDebugMode ) ;
ConfigParser . LoadGuiElement ( autoDedupFrames ) ;
2021-03-13 14:01:43 +01:00
ConfigParser . LoadGuiElement ( mdlBaseUrl ) ;
2021-03-03 22:27:43 +01:00
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 ) ;
2020-12-23 16:13:04 +01:00
ConfigParser . LoadGuiElement ( ffEncArgs ) ;
2020-11-23 16:51:05 +01:00
ConfigParser . LoadGuiElement ( ffprobeCountFrames ) ;
}
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" ) ;
}
2020-11-25 12:40:17 +01:00
private void dedupMode_SelectedIndexChanged ( object sender , EventArgs e )
{
2021-01-18 15:32:45 +01:00
dedupeSensLabel . Visible = dedupMode . SelectedIndex ! = 0 ;
2020-11-25 12:40:17 +01:00
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" ;
2021-01-15 22:43:13 +01:00
CheckModelCacheSize ( ) ;
2021-01-14 15:28:31 +01:00
}
2020-11-23 16:51:05 +01:00
}
}