public static CommandOutput SetupCommandOutputMaps <TOutputType>(CommandStage stage, SettingsCollection settings, string fileName) where TOutputType : class, IContainer, new() { var settingsCopy = settings.Copy(); var commandOutput = CommandOutput.Create(Resource.CreateOutput <TOutputType>(), settingsCopy); stage.StreamIdentifiers.ForEach(streamId => { var theStream = StreamFromStreamIdentifier(stage.Command, streamId); var theResource = CommandInputFromStreamIdentifier(stage.Command, streamId); if (theResource == null) { commandOutput.Settings.Merge(new Map(streamId), FFmpegMergeOptionType.NewWins); } else { var resourceIndex = IndexOfResource(stage.Command, streamId); commandOutput.Settings.Merge(new Map(string.Format("{0}:{1}", resourceIndex, theStream.ResourceIndicator)), FFmpegMergeOptionType.NewWins); } commandOutput.Resource.Streams.Add(theStream.Copy()); }); if (!string.IsNullOrWhiteSpace(fileName)) { commandOutput.Resource.Name = fileName; } return(commandOutput); }
private void WriteOutputSettings(CommandOutput output) { if (output == null) { throw new ArgumentNullException("output"); } var settingsData = Validate.GetSettingCollectionData(output.Settings); output.Settings.SettingsList.ForEach(setting => { var settingInfoData = settingsData[setting.GetType()]; if (settingInfoData == null) { return; } if (!settingInfoData.PreDeclaration) { return; } if (settingInfoData.ResourceType != SettingsCollectionResourceType.Output) { return; } _builderBase.Append(" "); _builderBase.Append(setting.GetAndValidateString()); }); }
private void WriteOutput(CommandOutput output) { if (output == null) { throw new ArgumentNullException("output"); } WriteOutputSettings(output); BuilderBase.AppendFormat(" {0}", Helpers.EscapePath(output.Resource)); }
private void WriteOutputSettings(CommandOutput output) { if (output == null) { throw new ArgumentNullException("output"); } output.Settings.SettingsList.ForEach(setting => { BuilderBase.Append(" "); BuilderBase.Append(SettingSerializer.Serialize(setting)); }); }
public static CommandOutput SetupCommandOutput <TOutputType>(FFmpegCommand command, SettingsCollection settings, string fileName) where TOutputType : class, IContainer, new() { var settingsCopy = settings.Copy(); var commandOutput = CommandOutput.Create(Resource.CreateOutput <TOutputType>(), settingsCopy); commandOutput.Resource.Streams.AddRange(command.Inputs.SelectMany(i => i.Resource.Streams.Select(s => s.Copy()))); if (!string.IsNullOrWhiteSpace(fileName)) { commandOutput.Resource.Name = fileName; } return(commandOutput); }
public void Add(CommandOutput output) { if (output == null) { throw new ArgumentNullException("output"); } output.Owner = Owner; if (Owner.Objects.ContainsOutput(output)) { throw new ArgumentException("Cannot add the same command output twice to command.", "output"); } Owner.Objects.Outputs.Add(output); }
public bool ContainsOutput(CommandOutput commandOutput) { return(Outputs.Any(output => output.Id == commandOutput.Id)); }