public static GlobalExportProgress BuildFromRenderOptionsSingleCommand(ICollection <VideoRenderOption> videoRenderOptions, Action <string, double, double, double> progressChangedCallback) { var progress = new GlobalExportProgress(videoRenderOptions.Any(v => v.TimeWarpSettings.Any()) ? 2 : 1, progressChangedCallback); progress.StartExport(); return(progress); }
public static GlobalExportProgress BuildFromRenderOptionsPreEffect(ICollection <VideoRenderOption> videoRenderOptions, Action <string, double, double, double> progressChangedCallback) { // по одной операции для вырезания каждого эпизода. var totalOperationsExpected = videoRenderOptions.Count; // по одной операции для каждого эпизода с текстом. totalOperationsExpected += videoRenderOptions.Count(v => v.OverlayTextTimeTable != null && v.OverlayTextTimeTable.Any()); // по одной операции для каждого эпизода со штрихами. totalOperationsExpected += videoRenderOptions.Count(v => v.ImagesTimeTable != null && v.ImagesTimeTable.Any()); // по одной операции для каждого эффекта времени. totalOperationsExpected += videoRenderOptions.SelectMany(v => v.TimeWarpSettings ?? new List <TimeWarpRecord>()).Count(); if (videoRenderOptions.Count > 1) { // один раз склеить и конвертировать эпизоды в конечный формат. totalOperationsExpected += 2; } var progress = new GlobalExportProgress(totalOperationsExpected, progressChangedCallback); progress.StartExport(); return(progress); }