public static bool CheckAiAvailable(AI ai)
        {
            if (!PkgUtils.IsAiAvailable(ai))
            {
                ShowMessage("The selected AI is not installed!", "Error");
                I.Cancel("Selected AI not available.", true);
                return(false);
            }

            if (I.current.ai.aiName.ToUpper().Contains("CUDA") && NvApi.gpuList.Count < 1)
            {
                ShowMessage("An Nvidia GPU is required for CUDA implementations!\n\nTry an NCNN implementation instead.", "Error");
                I.Cancel("No CUDA-capable graphics card available.", true);
                return(false);
            }

            return(true);
        }
        static bool EntryIsValid(InterpSettings entry)
        {
            if (entry.inPath == null || (IOUtils.IsPathDirectory(entry.inPath) && !Directory.Exists(entry.inPath)) || (!IOUtils.IsPathDirectory(entry.inPath) && !File.Exists(entry.inPath)))
            {
                Logger.Log("[Queue] Can't process queue entry: Input path is invalid.");
                return(false);
            }

            if (entry.outPath == null || !Directory.Exists(entry.outPath))
            {
                Logger.Log("[Queue] Can't process queue entry: Output path is invalid.");
                return(false);
            }

            if (!PkgUtils.IsAiAvailable(entry.ai))
            {
                Logger.Log("[Queue] Can't process queue entry: Selected AI is not available.");
                return(false);
            }

            return(true);
        }