using ErsatzTV.FFmpeg.Environment; namespace ErsatzTV.FFmpeg; public static class CommandGenerator { public static IList GenerateEnvironmentVariables(IEnumerable pipelineSteps) { return pipelineSteps.SelectMany(ps => ps.EnvironmentVariables).ToList(); } public static IList GenerateArguments( IEnumerable inputFiles, IList pipelineSteps) { var arguments = new List(); foreach (IPipelineStep step in pipelineSteps) { arguments.AddRange(step.GlobalOptions); } foreach (InputFile inputFile in inputFiles) { foreach (IPipelineStep step in pipelineSteps) { arguments.AddRange(step.InputOptions); } arguments.AddRange(new[] { "-i", inputFile.Path }); } foreach (IPipelineStep step in pipelineSteps) { arguments.AddRange(step.FilterOptions); } foreach (IPipelineStep step in pipelineSteps) { arguments.AddRange(step.OutputOptions); } return arguments; } }