private void SaveFrameData() { IEnumerable <MemoryFrame> frames = _frameHandles.Select(x => x.Item); var preparedWriters = PrepareWriters(_writingShot, frames); foreach (Tuple <Smithers.Serialization.Writers.IWriter, TSavedItem> preparedWriter in preparedWriters) { Smithers.Serialization.Writers.IWriter writer = preparedWriter.Item1; TSavedItem savedItem = preparedWriter.Item2; string path = Path.Combine(_session.SessionPath, savedItem.Path); Directory.CreateDirectory(Path.GetDirectoryName(path)); using (FileStream stream = new FileStream(path, FileMode.Create)) { writer.Write(stream); stream.Close(); } _writingShot.SavedItems.Add(savedItem); } List <TSavedItem> subList = new List <TSavedItem>(); foreach (TSavedItem item in _writingShot.SavedItems) { subList.Add(item); } _session.Metadata.FrameItems.Add(subList as List <DS4SavedItem>); }
protected virtual string GeneratePath(TShot shot, MemoryFrame frame, int frameIndex, Smithers.Serialization.Writers.IWriter writer) { string folderName = writer.Type.Name; int shotCount = _session.Shots.IndexOf(shot as Shot <ShotDefinition, DS4SavedItem>) + 1; string shotName = string.Format("Shot_{0:D3}", shotCount); // 0 -> Frame_001, 1 -> Frame_002, etc. string frameName = string.Format("Frame_{0:D3}", frameIndex + 1); string fileName = string.Format( "{0}{1}{2}{3}", shotName, shotName == null ? "" : "_", frameName, writer.FileExtension ); if (_mode == CaptureMode.Sweeping) { string sweepName = string.Format("sweep_{0:D2}", _session.SweepCounter); string sweepFileName = string.Format("{0:D3}{1}", frameIndex + 1, writer.FileExtension); //In sweep mode, put sweepName out to be folder so someone can conveniently fit one sweep return(Path.Combine(sweepName, folderName, sweepFileName)); } return(Path.Combine(folderName, fileName)); }