public static async Task InitInput(TextBox outputTbox, TextBox inputTbox, TextBox fpsInTbox)
        {
            Program.mainForm.SetTab("interpolate");
            Program.mainForm.ResetInputInfo();
            string path = inputTbox.Text.Trim();

            InterpolateUtils.PathAsciiCheck(path, "input path");

            if (Config.GetBool("clearLogOnInput"))
            {
                Logger.ClearLogBox();
            }

            outputTbox.Text            = inputTbox.Text.Trim().GetParentDir();
            Program.lastInputPath      = path;
            Program.lastInputPathIsSsd = OSUtils.DriveIsSSD(path);

            if (!Program.lastInputPathIsSsd)
            {
                Logger.Log("Your file seems to be on an HDD or USB device. It is recommended to interpolate videos on an SSD drive for best performance.");
            }

            Logger.Log("Loading metadata...");
            Program.mainForm.currInDuration    = FfmpegCommands.GetDuration(path);
            Program.mainForm.currInDurationCut = Program.mainForm.currInDuration;
            int frameCount = await InterpolateUtils.GetInputFrameCountAsync(path);

            string fpsStr = "Not Found";
            float  fps    = await IOUtils.GetFpsFolderOrVideo(path);

            fpsInTbox.Text = fps.ToString();

            if (fps > 0)
            {
                fpsStr = fps.ToString();
            }

            Logger.Log($"Video FPS: {fpsStr} - Total Number Of Frames: {frameCount}", false, true);
            Program.mainForm.GetInputFpsTextbox().ReadOnly = fps > 0;
            Program.mainForm.currInFps    = fps;
            Program.mainForm.currInFrames = frameCount;
            Program.mainForm.UpdateInputInfo();
            CheckExistingFolder(path, outputTbox.Text.Trim());
            await Task.Delay(10);

            await PrintResolution(path);

            Dedupe.ClearCache();
            await Task.Delay(10);

            InterpolateUtils.SetPreviewImg(await GetThumbnail(path));
        }