RenderStatus DoRender(RenderArgs args) { RenderStatus status = myVegas.Render(args); switch (status) { case RenderStatus.Complete: case RenderStatus.Canceled: break; case RenderStatus.Failed: default: StringBuilder msg = new StringBuilder("Render failed:\n"); msg.Append("\n file name: "); msg.Append(args.OutputFile); msg.Append("\n Template: "); msg.Append(args.RenderTemplate.Name); throw new ApplicationException(msg.ToString()); } return(status); }
public void Render(ScriptPortal.Vegas.Vegas myVegas) { SetProgressBounds(Count); using (UndoBlock undo = new UndoBlock("Render tracks")) { for (int i = 0; i < Count; i++) { var ri = this[i]; foreach (var trk in myVegas.Project.Tracks) { trk.Mute = !ri.Tracks.Contains(trk); } // padding if (ri.RenderParams.GetParam <bool>(RenderTags.DoPadding)) { if (ri.RenderTemplate.RendererID != myVegas.Renderers.FindByName("Wave (Microsoft)").ID) { ErrorLog( String.Format( "The region {0} could not be padded. Padded rendering can only be performed on .WAV (PCM) files.", ri.Region.Label)); } else { var paddingTime = Timecode.FromSeconds(ri.PaddingSeconds); if (ri.Start - paddingTime < myVegas.Project.Ruler.StartTime) { ErrorLog(String.Format( "The region {0} could not be padded. Move your region further into the project.", ri.Region.Label)); } else { ri.Start -= paddingTime; ri.Length += paddingTime; ri.Length += paddingTime; } } } if (File.Exists(ri.FilePath) && ri.RenderParams.GetParam <bool>(RenderTags.DoReadonly)) { // check readonly var attr = File.GetAttributes(ri.FilePath); if (attr.IsSet(FileAttributes.ReadOnly)) { File.SetAttributes(ri.FilePath, attr & ~FileAttributes.ReadOnly); } } SetProgress(i); SetProgressStatus("Rendering " + ri.FilePath); RenderStatus status = myVegas.Render(ri.FilePath, ri.RenderTemplate, ri.Start, ri.Length); if (status != RenderStatus.Complete) { ErrorLog(String.Format("{0} raised error {1}", ri.FilePath, status.ToString())); } else { // file successfully rendered // strip padding if (ri.RenderParams.GetParam <bool>(RenderTags.DoPadding)) { WaveFile.StripPadding(ri.FilePath, ri.PaddingSeconds); } } } foreach (ScriptPortal.Vegas.Track trk in myVegas.Project.Tracks) { trk.Mute = false; } undo.Cancel = true; // we didn't really do anything useful. } }