public ArgumentCalculator(WorkItem wi, FFmpegPreset preset) { if (wi?.Media?.FFProbeMediaInfo == null) { throw new ArgumentException("MediaInfo is not available"); } AudioStreams = wi.Media.FFProbeMediaInfo.AudioStreams ?? new HashSet <Stream>(); VideoStreams = wi.Media.FFProbeMediaInfo.VideoStreams ?? new HashSet <Stream> (); Preset = preset; ColorPrimaries = wi.Media.FFProbeMediaInfo.VideoStreams?.FirstOrDefault(x => !string.IsNullOrWhiteSpace(x.color_primaries))?.color_primaries; ColorTransfer = wi.Media.FFProbeMediaInfo.VideoStreams?.FirstOrDefault(x => !string.IsNullOrWhiteSpace(x.color_transfer))?.color_transfer; VideoEncoderOptions = new(); foreach (var veo in preset.VideoEncoderOptions) { var eov = new EncoderOptionValue(veo.Name) { AutoCalculate = veo.AutoCalculate, EncoderOption = veo.EncoderOption, Value = veo.Value }; VideoEncoderOptions.Add(eov); } }
public EncoderOptionValueBase(EncoderOptionValue eov) { Name = eov?.Name; Value = eov?.Value; AutoCalculate = eov?.AutoCalculate ?? false; }