diff --git a/Code/AudioVideo/FFmpegCommands.cs b/Code/AudioVideo/FFmpegCommands.cs index a6c3477..6b845cd 100644 --- a/Code/AudioVideo/FFmpegCommands.cs +++ b/Code/AudioVideo/FFmpegCommands.cs @@ -18,22 +18,22 @@ namespace Flowframes static string mpDecDef = "\"mpdecimate\""; static string mpDecAggr = "\"mpdecimate=hi=64*32:lo=64*32:frac=0.1\""; - public static async Task VideoToFrames(string inputFile, string frameFolderPath, bool deDupe, bool delSrc) + public static async Task VideoToFrames(string inputFile, string frameFolderPath, bool deDupe, bool delSrc, bool timecodes = true) { - await VideoToFrames(inputFile, frameFolderPath, deDupe, delSrc, new Size()); + await VideoToFrames(inputFile, frameFolderPath, deDupe, delSrc, new Size(), timecodes); } - public static async Task VideoToFrames(string inputFile, string frameFolderPath, bool deDupe, bool delSrc, Size size) + public static async Task VideoToFrames(string inputFile, string frameFolderPath, bool deDupe, bool delSrc, Size size, bool timecodes = true) { - string sizeStr = ""; - if (size.Width > 1 && size.Height > 1) sizeStr = $"-s {size.Width}x{size.Height}"; + string sizeStr = (size.Width > 1 && size.Height > 1) ? $"-s {size.Width}x{size.Height}" : ""; if (!Directory.Exists(frameFolderPath)) Directory.CreateDirectory(frameFolderPath); - string args = $"-i {inputFile.Wrap()} {pngComprArg} -vsync 0 -pix_fmt rgb24 -copyts -r 1000 -frame_pts true -vf {divisionFilter} {sizeStr} \"{frameFolderPath}/%08d.png\""; + string timecodeStr = timecodes ? "-copyts -r 1000 -frame_pts true" : ""; + string args = $"-i {inputFile.Wrap()} {pngComprArg} -vsync 0 -pix_fmt rgb24 {timecodeStr} -vf {divisionFilter} {sizeStr} \"{frameFolderPath}/%08d.png\""; if (deDupe) { string mpStr = (Config.GetInt("mpdecimateMode") == 0) ? mpDecDef : mpDecAggr; - args = $"-i {inputFile.Wrap()} -copyts -r 1000 {pngComprArg} -vsync 0 -pix_fmt rgb24 -frame_pts true -vf {mpStr},{divisionFilter} {sizeStr} \"{frameFolderPath}/%08d.png\""; + args = $"-i {inputFile.Wrap()} {pngComprArg} -vsync 0 -pix_fmt rgb24 {timecodeStr} -vf {mpStr},{divisionFilter} {sizeStr} \"{frameFolderPath}/%08d.png\""; } await AvProcess.RunFfmpeg(args, AvProcess.LogMode.OnlyLastLine); await Task.Delay(1); diff --git a/Code/AudioVideo/FFmpegStrings.cs b/Code/AudioVideo/FFmpegStrings.cs deleted file mode 100644 index 4926349..0000000 --- a/Code/AudioVideo/FFmpegStrings.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Flowframes -{ - class FFmpegStrings - { - - } -} diff --git a/Code/Flowframes.csproj b/Code/Flowframes.csproj index d4ab1da..e2417bf 100644 --- a/Code/Flowframes.csproj +++ b/Code/Flowframes.csproj @@ -197,7 +197,6 @@ - Form @@ -221,6 +220,7 @@ + @@ -280,6 +280,8 @@ + + diff --git a/Code/Form1.Designer.cs b/Code/Form1.Designer.cs index 72dde4b..db48f59 100644 --- a/Code/Form1.Designer.cs +++ b/Code/Form1.Designer.cs @@ -32,7 +32,6 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); this.titleLabel = new System.Windows.Forms.Label(); this.tilesize = new System.Windows.Forms.ComboBox(); - this.tileSizeInfoLabel = new System.Windows.Forms.Label(); this.aiCombox = new System.Windows.Forms.ComboBox(); this.label13 = new System.Windows.Forms.Label(); this.outModeCombox = new System.Windows.Forms.ComboBox(); @@ -95,6 +94,15 @@ this.longProgBar = new HTAlt.WinForms.HTProgressBar(); this.cancelBtn = new System.Windows.Forms.Button(); this.mainTabControl = new HTAlt.WinForms.HTTabControl(); + this.welcomeTab = new System.Windows.Forms.TabPage(); + this.label22 = new System.Windows.Forms.Label(); + this.panel8 = new System.Windows.Forms.Panel(); + this.patronsLabel = new System.Windows.Forms.Label(); + this.label21 = new System.Windows.Forms.Label(); + this.panel6 = new System.Windows.Forms.Panel(); + this.newsLabel = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); this.interpOptsTab = new System.Windows.Forms.TabPage(); this.tilesizeNotAvailLabel = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); @@ -115,6 +123,9 @@ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.info1)).BeginInit(); this.mainTabControl.SuspendLayout(); + this.welcomeTab.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel6.SuspendLayout(); this.interpOptsTab.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); this.videoUtilsTab.SuspendLayout(); @@ -156,18 +167,6 @@ this.tilesize.TabIndex = 25; this.tilesize.SelectedIndexChanged += new System.EventHandler(this.tilesize_SelectedIndexChanged); // - // tileSizeInfoLabel - // - this.tileSizeInfoLabel.AutoSize = true; - this.tileSizeInfoLabel.ForeColor = System.Drawing.Color.Silver; - this.tileSizeInfoLabel.Location = new System.Drawing.Point(532, 135); - this.tileSizeInfoLabel.Margin = new System.Windows.Forms.Padding(8, 0, 3, 0); - this.tileSizeInfoLabel.Name = "tileSizeInfoLabel"; - this.tileSizeInfoLabel.Size = new System.Drawing.Size(327, 15); - this.tileSizeInfoLabel.TabIndex = 24; - this.tileSizeInfoLabel.Text = "Note: You can use much higher values with CAIN than DAIN."; - this.tileSizeInfoLabel.Visible = false; - // // aiCombox // this.aiCombox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); @@ -637,6 +636,7 @@ // logBox // this.logBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.logBox.Cursor = System.Windows.Forms.Cursors.Arrow; this.logBox.ForeColor = System.Drawing.Color.White; this.logBox.Location = new System.Drawing.Point(221, 357); this.logBox.MinimumSize = new System.Drawing.Size(4, 21); @@ -928,6 +928,7 @@ this.mainTabControl.AllowDrop = true; this.mainTabControl.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); this.mainTabControl.BorderTabLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(122)))), ((int)(((byte)(204))))); + this.mainTabControl.Controls.Add(this.welcomeTab); this.mainTabControl.Controls.Add(this.interpOptsTab); this.mainTabControl.Controls.Add(this.videoUtilsTab); this.mainTabControl.Controls.Add(this.previewTab); @@ -936,7 +937,7 @@ this.mainTabControl.DisableDragging = true; this.mainTabControl.Font = new System.Drawing.Font("Segoe UI", 9F); this.mainTabControl.HoverTabButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(82)))), ((int)(((byte)(176)))), ((int)(((byte)(239))))); - this.mainTabControl.HoverTabColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(151)))), ((int)(((byte)(234))))); + this.mainTabControl.HoverTabColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(63)))), ((int)(((byte)(70))))); this.mainTabControl.HoverUnselectedTabButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(85)))), ((int)(((byte)(85))))); this.mainTabControl.Location = new System.Drawing.Point(13, 62); this.mainTabControl.Name = "mainTabControl"; @@ -952,33 +953,133 @@ this.mainTabControl.UnselectedTabColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(63)))), ((int)(((byte)(70))))); this.mainTabControl.UpDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(63)))), ((int)(((byte)(70))))); this.mainTabControl.UpDownTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(112))))); + this.mainTabControl.SelectedIndexChanged += new System.EventHandler(this.mainTabControl_SelectedIndexChanged); this.mainTabControl.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop); this.mainTabControl.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter); // + // welcomeTab + // + this.welcomeTab.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + this.welcomeTab.Controls.Add(this.label22); + this.welcomeTab.Controls.Add(this.panel8); + this.welcomeTab.Controls.Add(this.panel6); + this.welcomeTab.Controls.Add(this.label11); + this.welcomeTab.Location = new System.Drawing.Point(4, 27); + this.welcomeTab.Name = "welcomeTab"; + this.welcomeTab.Padding = new System.Windows.Forms.Padding(3); + this.welcomeTab.Size = new System.Drawing.Size(901, 258); + this.welcomeTab.TabIndex = 4; + this.welcomeTab.Text = "Welcome"; + // + // label22 + // + this.label22.AutoSize = true; + this.label22.Font = new System.Drawing.Font("Yu Gothic UI", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label22.ForeColor = System.Drawing.Color.Gray; + this.label22.Location = new System.Drawing.Point(142, 3); + this.label22.Margin = new System.Windows.Forms.Padding(3, 0, 3, 10); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(478, 40); + this.label22.TabIndex = 5; + this.label22.Text = "Click The Interpolation Tab To Begin."; + // + // panel8 + // + this.panel8.AutoScroll = true; + this.panel8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.panel8.Controls.Add(this.patronsLabel); + this.panel8.Controls.Add(this.label21); + this.panel8.Location = new System.Drawing.Point(593, 57); + this.panel8.Margin = new System.Windows.Forms.Padding(5); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(300, 193); + this.panel8.TabIndex = 4; + // + // patronsLabel + // + this.patronsLabel.AutoSize = true; + this.patronsLabel.ForeColor = System.Drawing.Color.White; + this.patronsLabel.Location = new System.Drawing.Point(8, 31); + this.patronsLabel.Margin = new System.Windows.Forms.Padding(8, 8, 3, 0); + this.patronsLabel.Name = "patronsLabel"; + this.patronsLabel.Size = new System.Drawing.Size(0, 15); + this.patronsLabel.TabIndex = 9; + // + // label21 + // + this.label21.AutoSize = true; + this.label21.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label21.ForeColor = System.Drawing.Color.White; + this.label21.Location = new System.Drawing.Point(8, 8); + this.label21.Margin = new System.Windows.Forms.Padding(8, 8, 3, 0); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(119, 15); + this.label21.TabIndex = 8; + this.label21.Text = "Patreon Supporters:"; + // + // panel6 + // + this.panel6.AutoScroll = true; + this.panel6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.panel6.Controls.Add(this.newsLabel); + this.panel6.Controls.Add(this.label15); + this.panel6.Location = new System.Drawing.Point(8, 57); + this.panel6.Margin = new System.Windows.Forms.Padding(5); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(575, 193); + this.panel6.TabIndex = 3; + // + // newsLabel + // + this.newsLabel.AutoSize = true; + this.newsLabel.ForeColor = System.Drawing.Color.White; + this.newsLabel.Location = new System.Drawing.Point(8, 31); + this.newsLabel.Margin = new System.Windows.Forms.Padding(8, 8, 3, 0); + this.newsLabel.Name = "newsLabel"; + this.newsLabel.Size = new System.Drawing.Size(0, 15); + this.newsLabel.TabIndex = 8; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label15.ForeColor = System.Drawing.Color.White; + this.label15.Location = new System.Drawing.Point(8, 8); + this.label15.Margin = new System.Windows.Forms.Padding(8, 8, 3, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(41, 15); + this.label15.TabIndex = 7; + this.label15.Text = "News:"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("Yu Gothic UI", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label11.ForeColor = System.Drawing.Color.White; + this.label11.Location = new System.Drawing.Point(6, 3); + this.label11.Margin = new System.Windows.Forms.Padding(3, 0, 3, 10); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(143, 40); + this.label11.TabIndex = 1; + this.label11.Text = "Welcome!"; + // // interpOptsTab // this.interpOptsTab.AllowDrop = true; this.interpOptsTab.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); this.interpOptsTab.Controls.Add(this.tilesizeNotAvailLabel); - this.interpOptsTab.Controls.Add(this.panel7); this.interpOptsTab.Controls.Add(this.label1); this.interpOptsTab.Controls.Add(this.browseOutBtn); this.interpOptsTab.Controls.Add(this.browseInputFileBtn); this.interpOptsTab.Controls.Add(this.browseInputBtn); this.interpOptsTab.Controls.Add(this.label4); - this.interpOptsTab.Controls.Add(this.pictureBox4); this.interpOptsTab.Controls.Add(this.label2); - this.interpOptsTab.Controls.Add(this.pictureBox3); this.interpOptsTab.Controls.Add(this.label3); - this.interpOptsTab.Controls.Add(this.pictureBox2); this.interpOptsTab.Controls.Add(this.inputTbox); - this.interpOptsTab.Controls.Add(this.pictureBox1); this.interpOptsTab.Controls.Add(this.outputTbox); - this.interpOptsTab.Controls.Add(this.info1); this.interpOptsTab.Controls.Add(this.interpFactorCombox); this.interpOptsTab.Controls.Add(this.tilesize); this.interpOptsTab.Controls.Add(this.fpsInTbox); - this.interpOptsTab.Controls.Add(this.tileSizeInfoLabel); this.interpOptsTab.Controls.Add(this.fpsOutTbox); this.interpOptsTab.Controls.Add(this.label5); this.interpOptsTab.Controls.Add(this.aiCombox); @@ -988,6 +1089,12 @@ this.interpOptsTab.Controls.Add(this.label8); this.interpOptsTab.Controls.Add(this.label9); this.interpOptsTab.Controls.Add(this.outModeCombox); + this.interpOptsTab.Controls.Add(this.panel7); + this.interpOptsTab.Controls.Add(this.pictureBox4); + this.interpOptsTab.Controls.Add(this.pictureBox3); + this.interpOptsTab.Controls.Add(this.pictureBox2); + this.interpOptsTab.Controls.Add(this.pictureBox1); + this.interpOptsTab.Controls.Add(this.info1); this.interpOptsTab.Location = new System.Drawing.Point(4, 27); this.interpOptsTab.Name = "interpOptsTab"; this.interpOptsTab.Padding = new System.Windows.Forms.Padding(3); @@ -1217,6 +1324,12 @@ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.info1)).EndInit(); this.mainTabControl.ResumeLayout(false); + this.welcomeTab.ResumeLayout(false); + this.welcomeTab.PerformLayout(); + this.panel8.ResumeLayout(false); + this.panel8.PerformLayout(); + this.panel6.ResumeLayout(false); + this.panel6.PerformLayout(); this.interpOptsTab.ResumeLayout(false); this.interpOptsTab.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); @@ -1258,7 +1371,6 @@ private System.Windows.Forms.Label statusLabel; private System.Windows.Forms.ComboBox aiCombox; private System.Windows.Forms.Label label13; - private System.Windows.Forms.Label tileSizeInfoLabel; private System.Windows.Forms.ComboBox tilesize; private System.Windows.Forms.Label label14; private System.Windows.Forms.Button debugExtractFramesBtn; @@ -1311,6 +1423,15 @@ private System.Windows.Forms.Panel panel2; private System.Windows.Forms.Panel panel3; private HTAlt.WinForms.HTButton updateBtn; + private System.Windows.Forms.TabPage welcomeTab; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Panel panel8; + private System.Windows.Forms.Label patronsLabel; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.Label newsLabel; + private System.Windows.Forms.Label label22; } } diff --git a/Code/Form1.cs b/Code/Form1.cs index 032d0fb..b27e8ad 100644 --- a/Code/Form1.cs +++ b/Code/Form1.cs @@ -53,6 +53,8 @@ namespace Flowframes Setup.Init(); Initialized(); + GetWebInfo.LoadNews(newsLabel); + GetWebInfo.LoadPatronList(patronsLabel); Updater.AsyncUpdateCheck(); } @@ -60,6 +62,17 @@ namespace Flowframes public bool IsInFocus() { return (ActiveForm == this); } + public void SetTab (string tabName) + { + foreach(TabPage tab in mainTabControl.TabPages) + { + if (tab.Text.ToLower() == tabName.ToLower()) + mainTabControl.SelectedTab = tab; + } + mainTabControl.Refresh(); + mainTabControl.Update(); + } + public BatchEntry GetBatchEntry() { return new BatchEntry(inputTbox.Text.Trim(), outputTbox.Text.Trim(), GetAi(), fpsInTbox.GetFloat(), interpFactorCombox.GetInt(), GetOutMode()); @@ -158,7 +171,7 @@ namespace Flowframes public void runBtn_Click(object sender, EventArgs e) { if (!BatchProcessing.busy) - mainTabControl.SelectedIndex = 0; + SetTab("interpolation"); if (fpsInTbox.Visible) Interpolate.SetFps(fpsInTbox.GetFloat()); if (interpFactorCombox.Visible) @@ -245,7 +258,6 @@ namespace Flowframes private void aiCombox_SelectedIndexChanged(object sender, EventArgs e) { tilesize.Visible = GetAi().supportsTiling; - tileSizeInfoLabel.Visible = tilesize.Visible; tilesizeNotAvailLabel.Visible = !tilesize.Visible; interpFactorCombox_SelectedIndexChanged(null, null); if(GetAi().supportsTiling) @@ -282,7 +294,7 @@ namespace Flowframes private void Form1_DragDrop(object sender, DragEventArgs e) { if (Program.busy) return; - mainTabControl.SelectedIndex = 0; // Select main tab + SetTab("interpolation"); string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); inputTbox.Text = files[0]; Logger.Log("Selected video/directory: " + Path.GetFileName(files[0])); @@ -311,7 +323,7 @@ namespace Flowframes private void cancelBtn_Click(object sender, EventArgs e) { - mainTabControl.SelectedIndex = 0; + SetTab("interpolation"); Interpolate.Cancel(); } @@ -368,5 +380,10 @@ namespace Flowframes if (!initialized || !GetAi().supportsTiling) return; Config.Set($"tilesize_{GetAi().aiName}", tilesize.GetInt().ToString()); } + + private void mainTabControl_SelectedIndexChanged(object sender, EventArgs e) + { + mainTabControl.Refresh(); + } } } diff --git a/Code/Form1.resx b/Code/Form1.resx index 69f1b21..501f1a2 100644 --- a/Code/Form1.resx +++ b/Code/Form1.resx @@ -123,7 +123,8 @@ Based on: - dain-ncnn-vulkan by nihui, originally based on DAIN (Depth-Aware Video Frame Interpolation) by baowenbo - cain-ncnn-vulkan by nihui, originally based on and CAIN (Channel Attention Is All You Need for Video Frame Interpolation) by myungsub -- RIFE by hzwer +- RIFE by hzwer +- rife-ncnn-vulkan by nihui 17, 17 diff --git a/Code/Forms/SettingsForm.Designer.cs b/Code/Forms/SettingsForm.Designer.cs index 50a4cc8..9ad5112 100644 --- a/Code/Forms/SettingsForm.Designer.cs +++ b/Code/Forms/SettingsForm.Designer.cs @@ -69,6 +69,10 @@ this.enableAudio = new System.Windows.Forms.CheckBox(); this.label1 = new System.Windows.Forms.Label(); this.aiOptsPage = new Cyotek.Windows.Forms.TabListPage(); + this.panel12 = new System.Windows.Forms.Panel(); + this.label44 = new System.Windows.Forms.Label(); + this.ncnnThreads = new System.Windows.Forms.ComboBox(); + this.label43 = new System.Windows.Forms.Label(); this.panel2 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel(); this.torchGpus = new System.Windows.Forms.ComboBox(); @@ -108,6 +112,10 @@ this.label8 = new System.Windows.Forms.Label(); this.minOutVidLength = new System.Windows.Forms.ComboBox(); this.debugTab = new Cyotek.Windows.Forms.TabListPage(); + this.ffEncPreset = new System.Windows.Forms.ComboBox(); + this.label47 = new System.Windows.Forms.Label(); + this.label46 = new System.Windows.Forms.Label(); + this.label45 = new System.Windows.Forms.Label(); this.label41 = new System.Windows.Forms.Label(); this.ffprobeCountFrames = new System.Windows.Forms.CheckBox(); this.label40 = new System.Windows.Forms.Label(); @@ -122,14 +130,6 @@ this.cmdDebugMode = new System.Windows.Forms.ComboBox(); this.titleLabel = new System.Windows.Forms.Label(); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.label43 = new System.Windows.Forms.Label(); - this.ncnnThreads = new System.Windows.Forms.ComboBox(); - this.label44 = new System.Windows.Forms.Label(); - this.panel12 = new System.Windows.Forms.Panel(); - this.label45 = new System.Windows.Forms.Label(); - this.label46 = new System.Windows.Forms.Label(); - this.label47 = new System.Windows.Forms.Label(); - this.ffEncPreset = new System.Windows.Forms.ComboBox(); this.settingsTabList.SuspendLayout(); this.generalTab.SuspendLayout(); this.tabListPage2.SuspendLayout(); @@ -204,15 +204,12 @@ // tempDirBrowseBtn // this.tempDirBrowseBtn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); - this.tempDirBrowseBtn.FlatAppearance.BorderSize = 0; - this.tempDirBrowseBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.tempDirBrowseBtn.ForeColor = System.Drawing.Color.White; this.tempDirBrowseBtn.Location = new System.Drawing.Point(709, 66); this.tempDirBrowseBtn.Name = "tempDirBrowseBtn"; this.tempDirBrowseBtn.Size = new System.Drawing.Size(50, 23); this.tempDirBrowseBtn.TabIndex = 70; this.tempDirBrowseBtn.Text = "Browse"; - this.tempDirBrowseBtn.UseVisualStyleBackColor = false; this.tempDirBrowseBtn.Click += new System.EventHandler(this.tempDirBrowseBtn_Click); // // tempDirCustom @@ -627,6 +624,53 @@ this.aiOptsPage.Size = new System.Drawing.Size(762, 419); this.aiOptsPage.Text = "AI Specific Settings"; // + // panel12 + // + this.panel12.BackgroundImage = global::Flowframes.Properties.Resources.baseline_create_white_18dp_semiTransparent; + this.panel12.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.panel12.Location = new System.Drawing.Point(336, 187); + this.panel12.Name = "panel12"; + this.panel12.Size = new System.Drawing.Size(21, 21); + this.panel12.TabIndex = 58; + this.toolTip1.SetToolTip(this.panel12, "Allows custom input."); + // + // label44 + // + this.label44.AutoSize = true; + this.label44.ForeColor = System.Drawing.Color.Silver; + this.label44.Location = new System.Drawing.Point(370, 191); + this.label44.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); + this.label44.Name = "label44"; + this.label44.Size = new System.Drawing.Size(358, 13); + this.label44.TabIndex = 60; + this.label44.Text = "Use 1 for small videos, 2 for >1080p, higher values might cause slowdown!"; + // + // ncnnThreads + // + this.ncnnThreads.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.ncnnThreads.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ncnnThreads.ForeColor = System.Drawing.Color.White; + this.ncnnThreads.FormattingEnabled = true; + this.ncnnThreads.Items.AddRange(new object[] { + "1", + "2", + "3", + "4"}); + this.ncnnThreads.Location = new System.Drawing.Point(280, 187); + this.ncnnThreads.Name = "ncnnThreads"; + this.ncnnThreads.Size = new System.Drawing.Size(50, 21); + this.ncnnThreads.TabIndex = 59; + // + // label43 + // + this.label43.AutoSize = true; + this.label43.Location = new System.Drawing.Point(10, 190); + this.label43.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); + this.label43.Name = "label43"; + this.label43.Size = new System.Drawing.Size(135, 13); + this.label43.TabIndex = 58; + this.label43.Text = "NCNN Processing Threads"; + // // panel2 // this.panel2.BackgroundImage = global::Flowframes.Properties.Resources.baseline_create_white_18dp_semiTransparent; @@ -1122,11 +1166,63 @@ this.debugTab.Size = new System.Drawing.Size(762, 419); this.debugTab.Text = "Debugging / Experimental"; // + // ffEncPreset + // + this.ffEncPreset.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.ffEncPreset.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.ffEncPreset.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ffEncPreset.ForeColor = System.Drawing.Color.White; + this.ffEncPreset.FormattingEnabled = true; + this.ffEncPreset.Items.AddRange(new object[] { + "veryfast", + "faster", + "fast", + "medium", + "slow", + "slower", + "veryslow"}); + this.ffEncPreset.Location = new System.Drawing.Point(280, 217); + this.ffEncPreset.Name = "ffEncPreset"; + this.ffEncPreset.Size = new System.Drawing.Size(250, 21); + this.ffEncPreset.TabIndex = 78; + // + // label47 + // + this.label47.AutoSize = true; + this.label47.Location = new System.Drawing.Point(10, 220); + this.label47.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); + this.label47.Name = "label47"; + this.label47.Size = new System.Drawing.Size(85, 13); + this.label47.TabIndex = 77; + this.label47.Text = "Encoding Preset"; + // + // label46 + // + this.label46.AutoSize = true; + this.label46.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label46.Location = new System.Drawing.Point(10, 160); + this.label46.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); + this.label46.Name = "label46"; + this.label46.Size = new System.Drawing.Size(65, 16); + this.label46.TabIndex = 76; + this.label46.Text = "FFmpeg"; + // + // label45 + // + this.label45.AutoSize = true; + this.label45.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label45.Location = new System.Drawing.Point(10, 10); + this.label45.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); + this.label45.Name = "label45"; + this.label45.Size = new System.Drawing.Size(63, 16); + this.label45.TabIndex = 75; + this.label45.Text = "General"; + // // label41 // this.label41.AutoSize = true; this.label41.ForeColor = System.Drawing.Color.Silver; - this.label41.Location = new System.Drawing.Point(308, 280); + this.label41.Location = new System.Drawing.Point(308, 250); this.label41.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); this.label41.Name = "label41"; this.label41.Size = new System.Drawing.Size(423, 13); @@ -1137,7 +1233,7 @@ // ffprobeCountFrames // this.ffprobeCountFrames.AutoSize = true; - this.ffprobeCountFrames.Location = new System.Drawing.Point(280, 280); + this.ffprobeCountFrames.Location = new System.Drawing.Point(280, 250); this.ffprobeCountFrames.Name = "ffprobeCountFrames"; this.ffprobeCountFrames.Size = new System.Drawing.Size(15, 14); this.ffprobeCountFrames.TabIndex = 73; @@ -1146,7 +1242,7 @@ // label40 // this.label40.AutoSize = true; - this.label40.Location = new System.Drawing.Point(10, 280); + this.label40.Location = new System.Drawing.Point(10, 250); this.label40.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); this.label40.Name = "label40"; this.label40.Size = new System.Drawing.Size(162, 13); @@ -1157,7 +1253,7 @@ // this.label38.AutoSize = true; this.label38.ForeColor = System.Drawing.Color.Silver; - this.label38.Location = new System.Drawing.Point(570, 224); + this.label38.Location = new System.Drawing.Point(570, 194); this.label38.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); this.label38.Name = "label38"; this.label38.Size = new System.Drawing.Size(131, 13); @@ -1168,7 +1264,7 @@ // this.panel11.BackgroundImage = global::Flowframes.Properties.Resources.baseline_create_white_18dp_semiTransparent; this.panel11.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.panel11.Location = new System.Drawing.Point(536, 220); + this.panel11.Location = new System.Drawing.Point(536, 190); this.panel11.Name = "panel11"; this.panel11.Size = new System.Drawing.Size(21, 21); this.panel11.TabIndex = 61; @@ -1178,7 +1274,7 @@ // this.ffEncThreads.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.ffEncThreads.ForeColor = System.Drawing.Color.White; - this.ffEncThreads.Location = new System.Drawing.Point(280, 220); + this.ffEncThreads.Location = new System.Drawing.Point(280, 190); this.ffEncThreads.MinimumSize = new System.Drawing.Size(4, 21); this.ffEncThreads.Name = "ffEncThreads"; this.ffEncThreads.Size = new System.Drawing.Size(250, 21); @@ -1187,7 +1283,7 @@ // label37 // this.label37.AutoSize = true; - this.label37.Location = new System.Drawing.Point(10, 220); + this.label37.Location = new System.Drawing.Point(10, 190); this.label37.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); this.label37.Name = "label37"; this.label37.Size = new System.Drawing.Size(204, 13); @@ -1271,105 +1367,6 @@ this.titleLabel.TabIndex = 1; this.titleLabel.Text = "Settings"; // - // label43 - // - this.label43.AutoSize = true; - this.label43.Location = new System.Drawing.Point(10, 190); - this.label43.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); - this.label43.Name = "label43"; - this.label43.Size = new System.Drawing.Size(135, 13); - this.label43.TabIndex = 58; - this.label43.Text = "NCNN Processing Threads"; - // - // ncnnThreads - // - this.ncnnThreads.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); - this.ncnnThreads.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.ncnnThreads.ForeColor = System.Drawing.Color.White; - this.ncnnThreads.FormattingEnabled = true; - this.ncnnThreads.Items.AddRange(new object[] { - "1", - "2", - "3", - "4"}); - this.ncnnThreads.Location = new System.Drawing.Point(280, 187); - this.ncnnThreads.Name = "ncnnThreads"; - this.ncnnThreads.Size = new System.Drawing.Size(50, 21); - this.ncnnThreads.TabIndex = 59; - // - // label44 - // - this.label44.AutoSize = true; - this.label44.ForeColor = System.Drawing.Color.Silver; - this.label44.Location = new System.Drawing.Point(370, 191); - this.label44.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); - this.label44.Name = "label44"; - this.label44.Size = new System.Drawing.Size(358, 13); - this.label44.TabIndex = 60; - this.label44.Text = "Use 1 for small videos, 2 for >1080p, higher values might cause slowdown!"; - // - // panel12 - // - this.panel12.BackgroundImage = global::Flowframes.Properties.Resources.baseline_create_white_18dp_semiTransparent; - this.panel12.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.panel12.Location = new System.Drawing.Point(336, 187); - this.panel12.Name = "panel12"; - this.panel12.Size = new System.Drawing.Size(21, 21); - this.panel12.TabIndex = 58; - this.toolTip1.SetToolTip(this.panel12, "Allows custom input."); - // - // label45 - // - this.label45.AutoSize = true; - this.label45.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label45.Location = new System.Drawing.Point(10, 10); - this.label45.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); - this.label45.Name = "label45"; - this.label45.Size = new System.Drawing.Size(63, 16); - this.label45.TabIndex = 75; - this.label45.Text = "General"; - // - // label46 - // - this.label46.AutoSize = true; - this.label46.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label46.Location = new System.Drawing.Point(10, 190); - this.label46.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); - this.label46.Name = "label46"; - this.label46.Size = new System.Drawing.Size(65, 16); - this.label46.TabIndex = 76; - this.label46.Text = "FFmpeg"; - // - // label47 - // - this.label47.AutoSize = true; - this.label47.Location = new System.Drawing.Point(10, 250); - this.label47.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); - this.label47.Name = "label47"; - this.label47.Size = new System.Drawing.Size(85, 13); - this.label47.TabIndex = 77; - this.label47.Text = "Encoding Preset"; - // - // ffEncPreset - // - this.ffEncPreset.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); - this.ffEncPreset.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.ffEncPreset.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.ffEncPreset.ForeColor = System.Drawing.Color.White; - this.ffEncPreset.FormattingEnabled = true; - this.ffEncPreset.Items.AddRange(new object[] { - "veryfast", - "faster", - "fast", - "medium", - "slow", - "slower", - "veryslow"}); - this.ffEncPreset.Location = new System.Drawing.Point(280, 247); - this.ffEncPreset.Name = "ffEncPreset"; - this.ffEncPreset.Size = new System.Drawing.Size(250, 21); - this.ffEncPreset.TabIndex = 78; - // // SettingsForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/Code/Forms/UpdaterForm.cs b/Code/Forms/UpdaterForm.cs index 170d222..3bbdc81 100644 --- a/Code/Forms/UpdaterForm.cs +++ b/Code/Forms/UpdaterForm.cs @@ -32,8 +32,16 @@ namespace Flowframes.Forms } else { - updateBtn.Text = "Update To Latest Version!"; - statusLabel.Text = "Update Available!"; + if(installed < latest) + { + updateBtn.Text = "Update To Latest Version!"; + statusLabel.Text = "Update Available!"; + } + else + { + updateBtn.Text = "Rollback To Public Version"; + statusLabel.Text = "Using Newer Version Than Latest Public Release."; + } } updateBtn.Enabled = true; diff --git a/Code/Main/BatchProcessing.cs b/Code/Main/BatchProcessing.cs index eb76ecc..1a1e214 100644 --- a/Code/Main/BatchProcessing.cs +++ b/Code/Main/BatchProcessing.cs @@ -19,7 +19,7 @@ namespace Flowframes.Main public static async void Start() { stopped = false; - Program.mainForm.GetMainTabControl().SelectedIndex = 2; + Program.mainForm.SetTab("preview"); int initTaskCount = Program.batchQueue.Count; for (int i = 0; i < initTaskCount; i++) @@ -35,7 +35,7 @@ namespace Flowframes.Main } Logger.Log("[Queue] Finished queue processing."); SetBusy(false); - Program.mainForm.GetMainTabControl().SelectedIndex = 0; + Program.mainForm.SetTab("interpolation"); } public static void Stop() diff --git a/Code/Main/Interpolate.cs b/Code/Main/Interpolate.cs index 6f20c9c..cf7138d 100644 --- a/Code/Main/Interpolate.cs +++ b/Code/Main/Interpolate.cs @@ -20,7 +20,7 @@ namespace Flowframes { public class Interpolate { - public enum OutMode { VidMp4, VidGif, ImgPng, ImgJpg } + public enum OutMode { VidMp4, VidGif, ImgPng } public static string currentTempDir; static string framesPath; @@ -29,6 +29,7 @@ namespace Flowframes public static float currentOutFps; public static string lastInputPath; + public static AI lastAi; public static bool canceled = false; @@ -52,6 +53,7 @@ namespace Flowframes if (!Utils.CheckDeleteOldTempFolder()) return; // Try to delete temp folder if an old one exists if(!Utils.CheckPathValid(inPath)) return; // Check if input path/file is valid Utils.PathAsciiCheck(inPath, outDir); + lastAi = ai; Program.mainForm.SetStatus("Starting..."); Program.mainForm.SetWorking(true); await Task.Delay(10); @@ -131,8 +133,6 @@ namespace Flowframes if (Config.GetInt("dedupMode") == 1) await MagickDedupe.Run(framesPath); - //await Task.Delay(10000); - if (Config.GetInt("timingMode") == 1 && Config.GetInt("dedupMode") != 0) await VfrDedupe.CreateTimecodeFile(framesPath, Config.GetBool("enableLoop"), interpFactor, firstFrameFix); @@ -140,8 +140,11 @@ namespace Flowframes MagickDedupe.RenameCounterDir(framesPath, "png"); MagickDedupe.ZeroPadDir(framesPath, "png", 8); - if (firstFrameFix) - IOUtils.TryCopy(new DirectoryInfo(framesPath).GetFiles("*.png")[0].FullName, Path.Combine(framesPath, "00000000.png"), true); + if (lastAi.aiName == Networks.rifeCuda.aiName) + { + bool s = IOUtils.TryCopy(new DirectoryInfo(framesPath).GetFiles("*.png")[0].FullName, Path.Combine(framesPath, "00000000.png"), true); + Logger.Log("FirstFrameFix TryCopy Success:" + s, true); + } } static async Task RunAi(string outpath, int targetFrames, int tilesize, AI ai) @@ -170,7 +173,7 @@ namespace Flowframes if (AiProcess.processTime.IsRunning && Directory.Exists(outdir)) { if (firstProgUpd && Program.mainForm.IsInFocus()) - Program.mainForm.GetMainTabControl().SelectedIndex = 2; + Program.mainForm.SetTab("preview"); firstProgUpd = false; string[] frames = Directory.GetFiles(outdir, $"*.{Utils.lastExt}"); if (frames.Length > 1) @@ -197,7 +200,7 @@ namespace Flowframes if(!Config.GetBool("keepTempFolder")) IOUtils.TryDeleteIfExists(currentTempDir); Program.mainForm.SetWorking(false); - Program.mainForm.mainTabControl.SelectedIndex = 0; + Program.mainForm.SetTab("interpolation"); Logger.Log("Canceled interpolation."); if (!string.IsNullOrWhiteSpace(reason) && !noMsgBox) Utils.ShowMessage($"Canceled:\n\n{reason}"); diff --git a/Code/OS/AiProcess.cs b/Code/OS/AiProcess.cs index afecab6..6f4dfde 100644 --- a/Code/OS/AiProcess.cs +++ b/Code/OS/AiProcess.cs @@ -22,10 +22,9 @@ namespace Flowframes public static int lastStartupTimeMs = 1000; - static void Init (Process proc, int startupTimeMs, string defaultExt = "png", bool needsFirstFrameFix = false) + static void Init (Process proc, int startupTimeMs, string defaultExt = "png") { lastStartupTimeMs = startupTimeMs; - Interpolate.firstFrameFix = needsFirstFrameFix; InterpolateUtils.lastExt = defaultExt; if (Config.GetBool("jpegInterps")) InterpolateUtils.lastExt = "jpg"; processTime.Restart(); @@ -134,8 +133,7 @@ namespace Flowframes string rifeDir = Path.Combine(Paths.GetPkgPath(), Path.GetFileNameWithoutExtension(Packages.rifeCuda.fileName)); Process rifePy = OSUtils.NewProcess(!OSUtils.ShowHiddenCmd()); - Logger.Log("HIDDEN: " + !OSUtils.ShowHiddenCmd()); - Init(rifePy, 3000, "png", true); + Init(rifePy, 3000, "png"); string args = $" --input {framesPath.Wrap()} --times {(int)Math.Log(interpFactor, 2)}"; rifePy.StartInfo.Arguments = $"{OSUtils.GetHiddenCmdArg()} cd /D {rifeDir.Wrap()} & " + $"set CUDA_VISIBLE_DEVICES={Config.Get("torchGpus")} & {Python.GetPyCmd()} {script} {args} --imgformat {InterpolateUtils.lastExt}"; diff --git a/Code/OS/Updater.cs b/Code/OS/Updater.cs index 26bef09..52405cd 100644 --- a/Code/OS/Updater.cs +++ b/Code/OS/Updater.cs @@ -82,7 +82,7 @@ namespace Flowframes.OS int latest = latestVer.GetInt(); int installed = GetInstalledVer(); - if (installed != latest) + if (installed < latest) Logger.Log("An update for Flowframes is available! Download it using the Updater."); else Logger.Log("Flowframes is up to date."); diff --git a/Code/Program.cs b/Code/Program.cs index 8541d73..b89dd6d 100644 --- a/Code/Program.cs +++ b/Code/Program.cs @@ -12,7 +12,7 @@ namespace Flowframes { static class Program { - public const int version = 15; + public const int version = 16; public static Form1 mainForm; diff --git a/Code/Properties/Resources.Designer.cs b/Code/Properties/Resources.Designer.cs index ed254c2..f72b81d 100644 --- a/Code/Properties/Resources.Designer.cs +++ b/Code/Properties/Resources.Designer.cs @@ -170,6 +170,16 @@ namespace Flowframes.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap flowframesIcoNew_512px { + get { + object obj = ResourceManager.GetObject("flowframesIcoNew_512px", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/Code/Properties/Resources.resx b/Code/Properties/Resources.resx index 6a6d8a1..739a066 100644 --- a/Code/Properties/Resources.resx +++ b/Code/Properties/Resources.resx @@ -121,9 +121,6 @@ ..\Resources\baseline_image_white_48dp-4x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\baseline_image_white_48dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\baseline_queue_white_48dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -139,6 +136,9 @@ ..\Resources\baseline_system_update_alt_white_48dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\patreon256px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\questmark-72px-bordeer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -157,8 +157,8 @@ ..\Resources\separatorTest1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\patreon256px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\baseline_image_white_48dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\baseline_create_white_18dp-semiTransparent.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -169,4 +169,7 @@ ..\Resources\baseline_image_white_48dp-4x-25pcAlpha.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\flowframesIcoNew-512px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Code/Resources/flowframesIcoNew-512px.png b/Code/Resources/flowframesIcoNew-512px.png new file mode 100644 index 0000000..1e78c39 Binary files /dev/null and b/Code/Resources/flowframesIcoNew-512px.png differ diff --git a/Code/Resources/flowframesIcoNew.png b/Code/Resources/flowframesIcoNew.png new file mode 100644 index 0000000..2d8579a Binary files /dev/null and b/Code/Resources/flowframesIcoNew.png differ diff --git a/Code/UI/GetWebInfo.cs b/Code/UI/GetWebInfo.cs new file mode 100644 index 0000000..5c35d4f --- /dev/null +++ b/Code/UI/GetWebInfo.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Flowframes.UI +{ + class GetWebInfo + { + public static async Task LoadNews (Label newsLabel) + { + string url = $"https://dl.nmkd.de/flowframes/changelog.txt"; + var client = new WebClient(); + var str = await client.DownloadStringTaskAsync(new Uri(url)); + newsLabel.Text = str; + } + + public static async Task LoadPatronList(Label patronsLabel) + { + string url = $"https://dl.nmkd.de/flowframes/patreon.txt"; + var client = new WebClient(); + var str = await client.DownloadStringTaskAsync(new Uri(url)); + patronsLabel.Text = str; + } + } +} diff --git a/Code/UI/UtilsTab.cs b/Code/UI/UtilsTab.cs index 4a901b5..e3bab53 100644 --- a/Code/UI/UtilsTab.cs +++ b/Code/UI/UtilsTab.cs @@ -19,7 +19,7 @@ namespace Flowframes.UI { string outPath = Path.ChangeExtension(videoPath, null) + "-extracted"; Program.mainForm.SetWorking(true); - await FFmpegCommands.VideoToFrames(videoPath, Path.Combine(outPath, "frames"), false, false); + await FFmpegCommands.VideoToFrames(videoPath, Path.Combine(outPath, "frames"), false, false, false); File.WriteAllText(Path.Combine(outPath, "fps.ini"), Interpolate.currentInFps.ToString()); if (withAudio) await FFmpegCommands.ExtractAudio(videoPath, Path.Combine(outPath, "audio"));