FF-286 - added unknown/other to subtitle format remover

This commit is contained in:
John Andrews
2022-08-17 16:30:42 +12:00
parent b2e686e74a
commit 07728db65a
2 changed files with 46 additions and 1 deletions
@@ -36,6 +36,7 @@ public class FfmpegBuilderSubtitleFormatRemover : FfmpegBuilderNode
new ListOption { Value = "ttml", Label = "TTML subtitle"},
new ListOption { Value = "mov_text", Label = "TX3G (mov_text)"},
new ListOption { Value = "webvtt", Label = "WebVTT subtitle"},
new ListOption { Value = "OTHER", Label = "Unknown/Other"},
};
}
return _Options;
@@ -55,7 +56,9 @@ public class FfmpegBuilderSubtitleFormatRemover : FfmpegBuilderNode
}
var removeCodecs = SubtitlesToRemove?.Where(x => string.IsNullOrWhiteSpace(x) == false)?.Select(x => x.ToLower())?.ToList() ?? new List<string>();
var removeCodecs = SubtitlesToRemove?.Where(x => x != "OTHER" && string.IsNullOrWhiteSpace(x) == false)?.Select(x => x.ToLower())?.ToList() ?? new List<string>();
bool removeOthers = SubtitlesToRemove.Any(x => x == "OTHER");
var known = Options.Where(x => x.Value.ToString() != "OTHER").Select(x => x.Value.ToString().ToLower()).ToList();
if (removeCodecs.Count == 0)
return 2; // nothing to remove
@@ -72,6 +75,14 @@ public class FfmpegBuilderSubtitleFormatRemover : FfmpegBuilderNode
removing = true;
continue;
}
if(removeOthers && known.Contains(subCodec) == false)
{
args.Logger.ILog("Removing unknown subtitle: " + subCodec);
sub.Deleted = true;
removing = true;
continue;
}
}
return removing ? 1 : 2;
@@ -1415,6 +1415,40 @@ public class FfmpegBuilder_BasicTests : TestBase
Assert.AreEqual(1, result1);
Assert.AreEqual(1, result);
}
[TestMethod]
public void FfmpegBuilder_SubtitleFormatRemover_Unknown()
{
const string file = @"D:\videos\testfiles\pgs.mkv";
var logger = new TestLogger();
const string ffmpeg = @"C:\utils\ffmpeg\ffmpeg.exe";
var vi = new VideoInfoHelper(ffmpeg, logger);
var vii = vi.Read(file);
var args = new NodeParameters(file, logger, false, string.Empty);
args.GetToolPathActual = (string tool) => ffmpeg;
args.TempPath = @"D:\videos\temp";
args.Parameters.Add("VideoInfo", vii);
FfmpegBuilderStart ffStart = new();
ffStart.PreExecute(args);
Assert.AreEqual(1, ffStart.Execute(args));
FfmpegBuilderSubtitleFormatRemover ffSubRemover = new();
ffSubRemover.SubtitlesToRemove = new List<string> { "UNKNOWN" };
ffSubRemover.PreExecute(args);
int result1 = ffSubRemover.Execute(args);
FfmpegBuilderExecutor ffExecutor = new();
ffExecutor.PreExecute(args);
int result = ffExecutor.Execute(args);
string log = logger.ToString();
Assert.AreEqual(2, result1);
Assert.AreEqual(2, result);
}
}
#endif