public static void Cancel(string reason = "", bool noMsgBox = false) { canceled = true; Program.mainForm.SetStatus("Canceled."); Program.mainForm.SetProgress(0); AiProcess.Kill(); AvProcess.Kill(); if (!current.stepByStep && !Config.GetBool("keepTempFolder")) { if (false /* IOUtils.GetAmountOfFiles(Path.Combine(current.tempFolder, Paths.resumeDir), true) > 0 */) // TODO: Uncomment for 1.23 { DialogResult dialogResult = MessageBox.Show($"Delete the temp folder (Yes) or keep it for resuming later (No)?", "Delete temporary files?", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { IOUtils.TryDeleteIfExists(current.tempFolder); } } else { IOUtils.TryDeleteIfExists(current.tempFolder); } } AutoEncode.busy = false; Program.mainForm.SetWorking(false); Program.mainForm.SetTab("interpolation"); Logger.LogIfLastLineDoesNotContainMsg("Canceled interpolation."); if (!string.IsNullOrWhiteSpace(reason) && !noMsgBox) { Utils.ShowMessage($"Canceled:\n\n{reason}"); } }
public static async Task CreateOutputVid() { if (!Directory.Exists(current.interpFolder) || IOUtils.GetAmountOfFiles(current.interpFolder, false) < 2) { Cancel($"There are no interpolated frames to encode!\n\nDid you delete the folder?"); return; } if (!(await InterpolateUtils.CheckEncoderValid())) { return; } string[] outFrames = IOUtils.GetFilesSorted(current.interpFolder, $"*.{InterpolateUtils.GetOutExt()}"); if (outFrames.Length > 0 && !IOUtils.CheckImageValid(outFrames[0])) { InterpolateUtils.ShowMessage("Invalid frame files detected!\n\nIf you used Auto-Encode, this is normal, and you don't need to run " + "this step as the video was already created in the \"Interpolate\" step.", "Error"); return; } string outPath = Path.Combine(current.outPath, Path.GetFileNameWithoutExtension(current.inPath) + IOUtils.GetCurrentExportSuffix() + FFmpegUtils.GetExt(current.outMode)); await CreateVideo.Export(current.interpFolder, outPath, current.outMode, true); }
public static async Task ExtractSceneChanges() { string scenesPath = Path.Combine(current.tempFolder, Paths.scenesDir); if (!IOUtils.TryDeleteIfExists(scenesPath)) { InterpolateUtils.ShowMessage("Failed to delete existing scenes folder - Make sure no file is opened in another program!", "Error"); return; } Program.mainForm.SetStatus("Extracting scenes from video..."); await FfmpegExtract.ExtractSceneChanges(current.inPath, scenesPath, current.inFps); await Task.Delay(10); }
public static async Task ExtractFramesStep() { // if (Config.GetBool("scnDetect") && !current.inputIsFrames) // Input is video - extract frames first // await ExtractSceneChanges(); if (!IOUtils.TryDeleteIfExists(current.framesFolder)) { InterpolateUtils.ShowMessage("Failed to delete existing frames folder - Make sure no file is opened in another program!", "Error"); return; } currentInputFrameCount = await InterpolateUtils.GetInputFrameCountAsync(current.inPath); AiProcess.filenameMap.Clear(); await GetFrames(); await PostProcessFrames(true); }
public static async Task DoInterpolate() { if (!InterpolateUtils.CheckAiAvailable(current.ai)) { return; } current.framesFolder = Path.Combine(current.tempFolder, Paths.framesDir); if (!Directory.Exists(current.framesFolder) || IOUtils.GetAmountOfFiles(current.framesFolder, false, "*.png") < 2) { InterpolateUtils.ShowMessage("There are no extracted frames that can be interpolated!\nDid you run the extraction step?", "Error"); return; } if (!IOUtils.TryDeleteIfExists(current.interpFolder)) { InterpolateUtils.ShowMessage("Failed to delete existing frames folder - Make sure no file is opened in another program!", "Error"); return; } currentInputFrameCount = await InterpolateUtils.GetInputFrameCountAsync(current.inPath); // TODO: Check if this works lol, remove if it does //if (Config.GetBool("sbsAllowAutoEnc")) // nextOutPath = Path.Combine(currentOutPath, Path.GetFileNameWithoutExtension(current.inPath) + IOUtils.GetAiSuffix(current.ai, current.interpFactor) + InterpolateUtils.GetExt(current.outMode)); if (Config.GetBool("sbsAllowAutoEnc") && !(await InterpolateUtils.CheckEncoderValid())) { return; } if (canceled) { return; } Program.mainForm.SetStatus("Running AI..."); await RunAi(current.interpFolder, current.ai, true); await IOUtils.ReverseRenaming(current.framesFolder, AiProcess.filenameMap); // Get timestamps back AiProcess.filenameMap.Clear(); Program.mainForm.SetProgress(0); }