From 8ec6c30e98e6b481324fa575330393a1a13350be Mon Sep 17 00:00:00 2001 From: John Andrews Date: Wed, 15 Jun 2022 09:17:20 +1200 Subject: [PATCH 1/2] fixed issue with has stream language always failing --- VideoNodes/LogicalNodes/VideoHasStream.cs | 4 +- .../FfmpegBuilder_BasicTests.cs | 13 +++++ VideoNodes/Tests/VideoHasStreamTests.cs | 51 +++++++++++++++++++ VideoNodes/Tests/_TestBase.cs | 1 + 4 files changed, 67 insertions(+), 2 deletions(-) diff --git a/VideoNodes/LogicalNodes/VideoHasStream.cs b/VideoNodes/LogicalNodes/VideoHasStream.cs index 4955a89d..45e0fc30 100644 --- a/VideoNodes/LogicalNodes/VideoHasStream.cs +++ b/VideoNodes/LogicalNodes/VideoHasStream.cs @@ -73,7 +73,7 @@ public class VideoHasStream : VideoNode return false; if (CodecMatches(x.Codec) == MatchResult.NoMatch) return false; - if (LanguageMatches(x.Codec) == MatchResult.NoMatch) + if (LanguageMatches(x.Language) == MatchResult.NoMatch) return false; if (this.Channels > 0 && Math.Abs(x.Channels - this.Channels) > 0.05f) return false; @@ -88,7 +88,7 @@ public class VideoHasStream : VideoNode return false; if (CodecMatches(x.Codec) == MatchResult.NoMatch) return false; - if (LanguageMatches(x.Codec) == MatchResult.NoMatch) + if (LanguageMatches(x.Language) == MatchResult.NoMatch) return false; return true; }).Any(); diff --git a/VideoNodes/Tests/FfmpegBuilderTests/FfmpegBuilder_BasicTests.cs b/VideoNodes/Tests/FfmpegBuilderTests/FfmpegBuilder_BasicTests.cs index 87197c8d..4afd18aa 100644 --- a/VideoNodes/Tests/FfmpegBuilderTests/FfmpegBuilder_BasicTests.cs +++ b/VideoNodes/Tests/FfmpegBuilderTests/FfmpegBuilder_BasicTests.cs @@ -151,32 +151,39 @@ public class FfmpegBuilder_BasicTests FfmpegBuilderStart ffStart = new(); + ffStart.PreExecute(args); Assert.AreEqual(1, ffStart.Execute(args)); FfmpegBuilderVideoCodec ffEncode = new(); ffEncode.VideoCodec = "h264"; + ffEncode.PreExecute(args); ffEncode.Execute(args); FfmpegBuilderAudioTrackRemover ffAudioRemover = new(); ffAudioRemover.RemoveAll = true; + ffAudioRemover.PreExecute(args); ffAudioRemover.Execute(args); FfmpegBuilderAudioAddTrack ffAddAudio = new(); ffAddAudio.Codec = "ac3"; ffAddAudio.Index = 1; + ffAddAudio.PreExecute(args); ffAddAudio.Execute(args); FfmpegBuilderAudioAddTrack ffAddAudio2 = new(); ffAddAudio2.Codec = "aac"; ffAddAudio2.Index = 2; + ffAddAudio2.PreExecute(args); ffAddAudio2.Execute(args); FfmpegBuilderAudioNormalization ffAudioNormalize = new(); ffAudioNormalize.TwoPass = false; ffAudioNormalize.AllAudio = true; + ffAudioNormalize.PreExecute(args); ffAudioNormalize.Execute(args); FfmpegBuilderExecutor ffExecutor = new(); + ffExecutor.PreExecute(args); int result = ffExecutor.Execute(args); string log = logger.ToString(); @@ -608,6 +615,10 @@ public class FfmpegBuilder_BasicTests string log = logger.ToString(); Assert.AreEqual(1, result); + + + var vi2 = new VideoInfoHelper(ffmpeg, logger); + var vii2 = vi.Read(args.WorkingFile); } @@ -1089,6 +1100,8 @@ public class FfmpegBuilder_BasicTests string log = logger.ToString(); Assert.IsTrue(log.Contains("this is a \"testing bobby drake\" blah")); } + + } #endif \ No newline at end of file diff --git a/VideoNodes/Tests/VideoHasStreamTests.cs b/VideoNodes/Tests/VideoHasStreamTests.cs index 121d83bc..cb1e716e 100644 --- a/VideoNodes/Tests/VideoHasStreamTests.cs +++ b/VideoNodes/Tests/VideoHasStreamTests.cs @@ -185,6 +185,57 @@ public class VideoHasStreamTests : TestBase Assert.AreEqual(1, output); } + + + [TestMethod] + public void VideoHasStream_Audio_Lang_Pass() + { + string file = TestFile_MovText_Mp4; + var vi = new VideoInfoHelper(FfmpegPath, new TestLogger()); + var vii = vi.Read(file); + + VideoHasStream node = new(); + node.Language = "ita"; + node.Stream = "Audio"; + + var args = new NodeParameters(file, new TestLogger(), false, string.Empty); + args.GetToolPathActual = (string tool) => FfmpegPath; + args.TempPath = TempPath; + + var vf = new VideoFile(); + vf.PreExecute(args); + Assert.AreEqual(1, vf.Execute(args)); + + node.PreExecute(args); + int output = node.Execute(args); + + Assert.AreEqual(1, output); + } + + [TestMethod] + public void VideoHasStream_Audio_Lang_Fail() + { + string file = TestFile_MovText_Mp4; + var vi = new VideoInfoHelper(FfmpegPath, new TestLogger()); + var vii = vi.Read(file); + + VideoHasStream node = new(); + node.Language = "mao"; + node.Stream = "Audio"; + + var args = new NodeParameters(file, new TestLogger(), false, string.Empty); + args.GetToolPathActual = (string tool) => FfmpegPath; + args.TempPath = TempPath; + + var vf = new VideoFile(); + vf.PreExecute(args); + Assert.AreEqual(1, vf.Execute(args)); + + node.PreExecute(args); + int output = node.Execute(args); + + Assert.AreEqual(2, output); + } } diff --git a/VideoNodes/Tests/_TestBase.cs b/VideoNodes/Tests/_TestBase.cs index 7d66a8e5..22b3d64c 100644 --- a/VideoNodes/Tests/_TestBase.cs +++ b/VideoNodes/Tests/_TestBase.cs @@ -49,6 +49,7 @@ public abstract class TestBase } + protected string TestFile_MovText_Mp4 => Path.Combine(TestPath, "movtext.mp4"); protected string TestFile_BasicMkv => Path.Combine(TestPath, "basic.mkv"); protected string TestFile_Tag => Path.Combine(TestPath, "tag.mp4"); protected string TestFile_Pgs => Path.Combine(TestPath, "pgs.mkv"); From c4610bc9570d32c7f28b46e3d7aa3f1fb71aff1e Mon Sep 17 00:00:00 2001 From: Benedikt Nerb Date: Tue, 28 Jun 2022 10:26:15 +0200 Subject: [PATCH 2/2] Adjust HDR check --- VideoLegacyNodes/VideoInfoHelper.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/VideoLegacyNodes/VideoInfoHelper.cs b/VideoLegacyNodes/VideoInfoHelper.cs index 3a186b3e..e499f08c 100644 --- a/VideoLegacyNodes/VideoInfoHelper.cs +++ b/VideoLegacyNodes/VideoInfoHelper.cs @@ -249,7 +249,9 @@ namespace FileFlows.VideoNodes logger?.ILog("Failed to read duration for VideoStream: " + info); } - vs.HDR = info.Contains("bt2020nc") && info.Contains("smpte2084"); + // As per https://video.stackexchange.com/a/33827 + // "HDR is only the new transfer function" (PQ or HLG) + vs.HDR = info.Contains("arib-std-b67") || info.Contains("smpte2084"); return vs; }