From 7e7630579cdd3173698fca75d4eb9f74da41df47 Mon Sep 17 00:00:00 2001 From: John Andrews Date: Thu, 21 Jul 2022 09:10:48 +1200 Subject: [PATCH] adding error handling around videoinfo and making it readonly for ffmpeg builder model --- .../FfmpegBuilderNodes/FfmpegBuilderNode.cs | 15 ++++----------- .../FfmpegBuilderNodes/FfmpegBuilderStart.cs | 15 ++++++++++++++- .../FfmpegBuilderNodes/Models/FfmpegModel.cs | 11 ++++++++--- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderNode.cs b/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderNode.cs index 053444c0..fd82024d 100644 --- a/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderNode.cs +++ b/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderNode.cs @@ -5,7 +5,7 @@ namespace FileFlows.VideoNodes.FfmpegBuilderNodes { public abstract class FfmpegBuilderNode: EncodingNode { - private const string MODEL_KEY = "FfmpegBuilderModel"; + protected const string MODEL_KEY = "FfmpegBuilderModel"; public override int Inputs => 1; public override int Outputs => 1; @@ -13,16 +13,6 @@ namespace FileFlows.VideoNodes.FfmpegBuilderNodes public override FlowElementType Type => FlowElementType.BuildPart; public override string HelpUrl => "https://docs.fileflows.com/plugins/video-nodes/ffmpeg-builder"; - private Dictionary _Variables; - public override Dictionary Variables => _Variables; - public FfmpegBuilderNode() - { - _Variables = new Dictionary() - { - { MODEL_KEY, new FfmpegModel() } - }; - } - public override bool PreExecute(NodeParameters args) { @@ -32,6 +22,9 @@ namespace FileFlows.VideoNodes.FfmpegBuilderNodes if(this is FfmpegBuilderStart == false && Model == null) throw new Exception("FFMPEG Builder Model not set, you must add and use the \"FFMPEG Builder Start\" node first"); + if (this is FfmpegBuilderStart == false && Model.VideoInfo == null) + throw new Exception("FFMPEG Builder VideoInfo is null"); + return true; } diff --git a/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderStart.cs b/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderStart.cs index 694eba8d..4737610d 100644 --- a/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderStart.cs +++ b/VideoNodes/FfmpegBuilderNodes/FfmpegBuilderStart.cs @@ -1,4 +1,6 @@ -namespace FileFlows.VideoNodes.FfmpegBuilderNodes; +using FileFlows.VideoNodes.FfmpegBuilderNodes.Models; + +namespace FileFlows.VideoNodes.FfmpegBuilderNodes; /// /// Node that starts the FFMPEG Builder @@ -30,6 +32,17 @@ public class FfmpegBuilderStart: FfmpegBuilderNode public override FlowElementType Type => FlowElementType.BuildStart; + + private Dictionary _Variables; + public override Dictionary Variables => _Variables; + public FfmpegBuilderStart() + { + _Variables = new Dictionary() + { + { MODEL_KEY, new FfmpegModel(new VideoInfo()) } + }; + } + /// /// Executes the node /// diff --git a/VideoNodes/FfmpegBuilderNodes/Models/FfmpegModel.cs b/VideoNodes/FfmpegBuilderNodes/Models/FfmpegModel.cs index bce17906..de460c6c 100644 --- a/VideoNodes/FfmpegBuilderNodes/Models/FfmpegModel.cs +++ b/VideoNodes/FfmpegBuilderNodes/Models/FfmpegModel.cs @@ -56,12 +56,17 @@ /// /// Gets or sets the video information for this video file /// - public VideoInfo VideoInfo { get; set; } + public VideoInfo VideoInfo => _VideoInfo; + readonly VideoInfo _VideoInfo; + + public FfmpegModel(VideoInfo info) + { + this._VideoInfo = info; + } internal static FfmpegModel CreateModel(VideoInfo info) { - var model = new FfmpegModel(); - model.VideoInfo = info; + var model = new FfmpegModel(info); model.InputFiles.Add(info.FileName); foreach (var item in info.VideoStreams.Select((stream, index) => (stream, index))) {