public void SetRenderStatusManager(RenderStatusManager rsm) { manager = rsm; grdResults.DataSource = rsm.Table; foreach (KeyValuePair <string, string> kvp in RenderStatusManager.Fields.FieldHeaders) { grdResults.Columns[kvp.Key].HeaderText = kvp.Value; } }
public int ProcessFolder(DirectoryInfo diStart, DirectoryInfo diMedia, string subMedia, string subRender, RenderTemplate renderTemplate, RenderStatusManager rsm) { int rendered = 0; if (rsm.Cancel) { return(rendered); } System.Diagnostics.Debug.WriteLine("Checking {0}", diStart.FullName); // Process for files foreach (FileInfo fi in diStart.GetFiles("*-1st.veg")) { if (rsm.Cancel) { return(rendered); } if (ProcessFile(fi, diMedia, subMedia, subRender, renderTemplate, rsm)) { rendered++; } } foreach (FileInfo fi in diStart.GetFiles("*.veg")) { if (rsm.Cancel) { return(rendered); } // Make sure we didn't process this as a 1st file and it's not set to do not render if (fi.FullName.ToLower().IndexOf("-1st.veg") == -1 && fi.FullName.ToLower().IndexOf("-dnr.veg") == -1) { if (ProcessFile(fi, diMedia, subMedia, subRender, renderTemplate, rsm)) { rendered++; } } } // Process subdirectories foreach (DirectoryInfo subDi in diStart.GetDirectories()) { rendered += ProcessFolder(subDi, diMedia, subMedia, subRender, renderTemplate, rsm); } return(rendered); }
public bool ProcessFile(FileInfo fiVeg, DirectoryInfo diMedia, string subMedia, string subRender, RenderTemplate renderTemplate, RenderStatusManager rsm) { object dr = rsm.StartProjectProcessing(fiVeg); DateTime lastMedia = UpdateMediaFiles(diMedia, fiVeg.Directory, subMedia, rsm, dr); FileInfo renderedFile = GetRenderedFile(fiVeg, subRender); if ((!renderedFile.Exists || renderedFile.LastWriteTimeUtc < fiVeg.LastWriteTimeUtc || renderedFile.LastWriteTimeUtc < lastMedia || renderedFile.Length == 0) && renderedFile.Directory.Exists) { return(RenderFile(fiVeg, renderedFile, renderTemplate, rsm, dr)); } else { rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderStatus, "Skipped"); } return(false); }
private void RenderAllStale(object sender, EventArgs e) { try { // Set Defaults startDirectory = "V:\\AIIM\\Change"; mediaDirectory = startDirectory; mediaSubDirectory = "Media"; renderSubDirectory = "Render"; renderTemplate = "1920x1080-30fps-6/1.5mbps"; RenderStaleConfiguration rsc = new RenderStaleConfiguration(); rsc.LoadScreen(startDirectory, mediaDirectory, mediaSubDirectory, renderSubDirectory, renderTemplate); rsc.ShowDialog(); if (!rsc.Valid) { return; } rsc.GetValues(out startDirectory, out mediaDirectory, out mediaSubDirectory, out renderSubDirectory, out renderTemplate); // Find Render Template RenderTemplate rt = null; foreach (Renderer renderer in myVegas.Renderers) { foreach (RenderTemplate temp in renderer.Templates) { if (temp.Name == renderTemplate) { rt = temp; break; } } if (rt != null) { break; } } // Setup UX RenderStatusManager rsm = new RenderStatusManager(); RenderStaleStatus rss = new RenderStaleStatus(); rss.SetRenderStatusManager(rsm); rsm.Dialog = rss; rss.Show(); // Process DirectoryInfo fiStart = new DirectoryInfo(startDirectory); DirectoryInfo fiMedia = new DirectoryInfo(mediaDirectory); if (fiStart.Exists && fiMedia.Exists && rt != null) { ProcessFolder(fiStart, fiMedia, mediaSubDirectory, renderSubDirectory, rt, rsm); } rss.Close(); SaveFileDialog sfd = new SaveFileDialog(); sfd.FileOk += Sfd_FileOk; sfd.ShowDialog(); if (saveOk) { File.WriteAllText(sfd.FileName, rsm.GetTableAsCSV()); } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Exception", MessageBoxButtons.OK); } }
public DateTime UpdateMediaFiles(DirectoryInfo diMedia, DirectoryInfo diVeg, string subMedia, RenderStatusManager rsm, object dr) { DirectoryInfo mediaDirectory = null; string mediaDirectoryFullName = Path.Combine(diVeg.FullName, subMedia); mediaDirectory = new DirectoryInfo(mediaDirectoryFullName); DateTime lastFileModified = DateTime.MinValue; int filesCopied = 0; foreach (FileInfo fiMedia in diMedia.GetFiles()) { switch (fiMedia.Extension.ToLower()) { // List of file types to copy case ".jpg": case ".gif": case ".png": case ".psd": case ".tif": if (mediaDirectory.Exists) { string targetName = Path.Combine(mediaDirectory.FullName, fiMedia.Name); FileInfo fiTarget = new FileInfo(targetName); if (!fiTarget.Exists || fiTarget.LastWriteTimeUtc < fiMedia.LastWriteTimeUtc || fiTarget.Length == 0) { System.Diagnostics.Debug.WriteLine("Copying {0} to {1}", fiMedia.Name, mediaDirectory.FullName); fiMedia.CopyTo(targetName, true); filesCopied++; } } break; default: // Do nothing break; } } rsm.UpdateField(dr, RenderStatusManager.Fields.Names.MediaFilesCopied, filesCopied); // Find the last modified tile for the media directory (if it exists) if (mediaDirectory.Exists) { foreach (FileInfo fi in mediaDirectory.GetFiles()) { if (fi.LastWriteTimeUtc > lastFileModified) { lastFileModified = fi.LastWriteTimeUtc; } } } return(lastFileModified); }
public bool RenderFile(FileInfo fiVeg, FileInfo fiRendered, RenderTemplate renderTemplate, RenderStatusManager rsm, object dr) { DateTime renderStart = DateTime.Now; DateTime renderEnd; TimeSpan renderTime; rsm.Dialog.Hide(); // Temporarily hide because during load the UX kills it. rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderStart, renderStart); if (myVegas.Project != null) { // No close method so create a clean new project without the ability to prompt for save of existing // and then open after that. myVegas.NewProject(false, false); } myVegas.UpdateUI(); rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderStatus, "Loading"); myVegas.OpenFile(fiVeg.FullName); myVegas.UpdateUI(); myVegas.WaitForIdle(); rsm.Dialog.Show(); // Render RenderArgs ra = new RenderArgs(); ra.OutputFile = fiRendered.FullName; ra.RenderTemplate = renderTemplate; Timecode projectLength = GetProjectLength(); rsm.UpdateField(dr, RenderStatusManager.Fields.Names.ProjectLength, projectLength); ra.Length = projectLength; ra.StartNanos = 0; rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderStatus, "Rendering"); RenderStatus status = myVegas.Render(ra); renderEnd = DateTime.Now; renderTime = renderEnd - renderStart; rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderEnd, renderEnd); rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderTime, renderTime); rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderStatus, status.ToString()); return(status == RenderStatus.Complete); }