From 07983abf99be39b8de0feb2c57b0f7bc64f6ee29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brandon=20Pi=C3=B1a?= Date: Sun, 1 May 2022 11:43:05 -0500 Subject: [PATCH] better error handling --- vmaf-gui/Form1.cs | 85 +++++++++++++++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 29 deletions(-) diff --git a/vmaf-gui/Form1.cs b/vmaf-gui/Form1.cs index 27b76b6..8ca4412 100644 --- a/vmaf-gui/Form1.cs +++ b/vmaf-gui/Form1.cs @@ -27,6 +27,8 @@ string ChildProcess(string program_name, string args, bool show) p.StartInfo.FileName = program_name; p.StartInfo.Arguments = args; + p.StartInfo.RedirectStandardError = true; + p.Start(); @@ -39,6 +41,16 @@ string ChildProcess(string program_name, string args, bool show) Console.WriteLine(args); p.WaitForExit(); + + int exitCode = p.ExitCode; + + if(exitCode != 0) + { + throw new Exception(p.StandardError.ReadToEnd()); + } + + + return output; } @@ -135,35 +147,48 @@ private void button1_Click(object sender, EventArgs e) ThreadStart tStart = new ThreadStart( () => { + try + { + // Decompress source video file + lblProgress.Invoke(new Action(delegate () { lblProgress.Text = "Decompressing Source..."; })); + decompressVideo(sourcePath, "./temp/source.y4m"); + prgProgress.Invoke(new Action(delegate () { prgProgress.PerformStep(); })); + + // Decompress compressed video file + lblProgress.Invoke(new Action(delegate () { lblProgress.Text = "Decompressing Compressed..."; })); + decompressVideo(compressedPath, "./temp/compressed.y4m"); + prgProgress.Invoke(new Action(delegate () { prgProgress.PerformStep(); })); + + + // Start vmaf + vmaf(resolution, model, psnr, ssim); + prgProgress.Invoke(new Action(delegate () { prgProgress.PerformStep(); })); + + + // Done + prgProgress.Invoke(new Action(delegate () { prgProgress.PerformStep(); })); + lblProgress.Invoke(new Action(delegate () { lblProgress.Text = "Done."; })); + + // Clean up form controls and delete .yuv files to save disk space + lblProgress.Invoke(new Action(delegate () { lblProgress.Text = ""; })); + File.Delete("./temp/compressed.yuv"); + File.Delete("./temp/source.yuv"); + button1.Invoke(new Action(delegate () { button1.Enabled = true; })); + + // Show Results + results resultsForm = new results(); + resultsForm.showResults("./log.xml"); + resultsForm.ShowDialog(); + }catch + { + prgProgress.Invoke(new Action(delegate () { + prgProgress.Value = 0; + })); + lblProgress.Invoke(new Action(delegate () { lblProgress.Text = "There was a problem running VMAF"; })); + button1.Invoke(new Action(delegate () { button1.Enabled = true; })); + - // Decompress source video file - lblProgress.Invoke(new Action(delegate () { lblProgress.Text = "Decompressing Source..."; })); - decompressVideo(sourcePath, "./temp/source.y4m"); - prgProgress.Invoke(new Action(delegate () { prgProgress.PerformStep(); })); - - // Decompress compressed video file - lblProgress.Invoke(new Action(delegate () { lblProgress.Text = "Decompressing Compressed..."; })); - decompressVideo(compressedPath, "./temp/compressed.y4m"); - prgProgress.Invoke(new Action(delegate () { prgProgress.PerformStep(); })); - - // Start vmaf - vmaf(resolution, model, psnr, ssim); - prgProgress.Invoke(new Action(delegate () { prgProgress.PerformStep(); })); - - // Done - prgProgress.Invoke(new Action(delegate () { prgProgress.PerformStep(); })); - lblProgress.Invoke(new Action(delegate () { lblProgress.Text = "Done."; })); - - // Clean up form controls and delete .yuv files to save disk space - lblProgress.Invoke(new Action(delegate () { lblProgress.Text = ""; })); - File.Delete("./temp/compressed.yuv"); - File.Delete("./temp/source.yuv"); - button1.Invoke(new Action(delegate () { button1.Enabled = true; })); - - // Show Results - results resultsForm = new results(); - resultsForm.showResults("./log.xml"); - resultsForm.ShowDialog(); + } } @@ -175,6 +200,7 @@ private void button1_Click(object sender, EventArgs e) } catch (Exception err) { + MessageBox.Show(err.Message); } } @@ -221,7 +247,8 @@ void vmaf(string resolution, string model, bool psnr, bool ssim) ChildProcess("vmaf.exe", args, false); }catch(Exception err) { - MessageBox.Show(err.Message); + MessageBox.Show(err.Message,"There was a problem with VMAF"); + throw new Exception(); }