/// <inheritdoc /> public override void OpenSession(SequenceSessionData data) { Reset(); SeqPeriodTime = data.PeriodMS; _numberFrames = (uint)data.NumPeriods; _channelsPerFrame = (uint)data.ChannelNames.Count(); if (!string.IsNullOrEmpty(data.OutputAudioFileName)) { _variableHeaders.Add(new VariableHeader(data.OutputAudioFileName)); } _variableHeaders.Add(new VariableHeader(HeaderType.SequenceProducer)); var blockCount = ComputeMaxBlockCount(); _numberCompressionBlocks = (byte)blockCount; _offsetToChannelData = FixedHeaderLength + blockCount * 8; //need to add for sparse if we do that _offsetToChannelData += (uint)_variableHeaders.Sum(x => x.HeaderLength); //Account for variable header length #if DEBUG Logging.Info($"Total frames count {_numberFrames}"); Logging.Info($"Block count {blockCount}"); Logging.Info($"Frames per block count {_framesPerBlock}"); Logging.Info($"Offset to channel data {_offsetToChannelData}"); #endif OpenSession(data.OutFileName, _offsetToChannelData, data.ChannelNames.Count()); }
public void OpenSession(SequenceSessionData sessionData) { _curPeriod = 0; _sessionData = sessionData; try { _outfs = File.Create(_sessionData.OutFileName, _sessionData.ChannelNames.Count * 2, FileOptions.None); } catch (Exception e) { _outfs = null; throw e; } _xmlData = new Vix2XMLData(); _xmlData.Channels = new List <Vix2Channel>(); _xmlData.Time = _sessionData.TimeMS.ToString(); _xmlData.EventPeriodInMilliseconds = _sessionData.PeriodMS.ToString(); _adder = 0; if (_sessionData.TimeMS % _sessionData.PeriodMS != 0) { _adder = 1; } _periodData = new Byte[sessionData.ChannelNames.Count * (_sessionData.NumPeriods + _adder)]; _xmlData.MinimumLevel = "0"; _xmlData.MaximumLevel = "255"; _xmlData.AudioDevice = "-1"; _xmlData.AudioVolume = "0"; }
public void OpenSession(SequenceSessionData data) { SeqPeriodTime = data.PeriodMS; _audioFileName = Path.GetFileName(data.AudioFileName); _fileNameFieldLen = (UInt32)_audioFileName.Length + 5; _dataOffset += _fileNameFieldLen; _fileNamePadding = (4 - (_dataOffset % 4)) % 4; _dataOffset += _fileNamePadding; OpenSession(data.OutFileName, data.NumPeriods, data.ChannelNames.Count()); }
public override void OpenSession(SequenceSessionData data) { _variableHeaders.Clear(); _dataOffset = _fixedHeaderLength; SeqPeriodTime = data.PeriodMS; if (!string.IsNullOrEmpty(data.OutputAudioFileName)) { _variableHeaders.Add(new VariableHeader(data.OutputAudioFileName)); } _dataOffset += (uint)_variableHeaders.Sum(x => x.HeaderLength); //Account for variable header length OpenSession(data.OutFileName, data.NumPeriods, data.ChannelNames.Count()); }
public override void OpenSession(SequenceSessionData sessionData) { _curPeriod = 0; _sessionData = sessionData; try { _outfs = File.Create(_sessionData.OutFileName, _sessionData.ChannelNames.Count * 2, FileOptions.None); _dataOut = new BinaryWriter(_outfs); } catch (Exception e) { _outfs = null; _dataOut = null; throw e; } _periodData = new Byte[sessionData.ChannelNames.Count * _sessionData.NumPeriods]; }
/// <inheritdoc /> public abstract void OpenSession(SequenceSessionData sessionData);
void SequenceCacheEnded(object sender, Vixen.Cache.Event.CacheEventArgs e) { SequenceSessionData sessionData = new SequenceSessionData(); if (_exporting) { List<ICommand> commandList = new List<ICommand>(); OutputStateListAggregator outAggregator = _preCachingSequenceEngine.Cache.OutputStateListAggregator; IEnumerable<Guid> outIds = outAggregator.GetOutputIds(); int periods = outAggregator.GetCommandsForOutput(outIds.First()).Count() - 1; //Get a list of controller ids by index order IEnumerable<Guid> controllers = ControllerExportInfo.OrderBy(x => x.Index).Select(i => i.Id); //Now assemble a all their outputs by controller order. List<List<Guid>> controllerOutputs = new List<List<Guid>>(); foreach (var controller in controllers) { controllerOutputs.Add(VixenSystem.OutputControllers.GetController(controller).Outputs.Select(x => x.Id).ToList()); } if (_cancelling == false) { SequenceNotify(ExportNotifyType.SAVING); sessionData.OutFileName = OutFileName; sessionData.NumPeriods = periods; sessionData.PeriodMS = UpdateInterval; sessionData.ChannelNames = BuildChannelNames(outIds); sessionData.TimeMS = _preCachingSequenceEngine.Sequence.Length.TotalMilliseconds; sessionData.AudioFileName = AudioFilename; try { _output.OpenSession(sessionData); for (int j = 0; j < periods; j++) { SavePosition = Decimal.Round(((Decimal)j / (Decimal)periods) * 100, 2); commandList.Clear(); //Iterate the controller output groups. foreach (var controller in controllerOutputs) { //Grab commands for each output foreach (Guid guid in controller) { commandList.Add(outAggregator.GetCommandsForOutput(guid).ElementAt(j)); } } UpdateState(commandList.ToArray()); } _output.CloseSession(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Save Error!"); throw ex; } _preCachingSequenceEngine.SequenceCacheEnded -= SequenceCacheEnded; _preCachingSequenceEngine.SequenceCacheStarted -= SequenceCacheStarted; } if (SequenceNotify != null) { SequenceNotify(ExportNotifyType.COMPLETE); } } }
public override void OpenSession(SequenceSessionData data) { OpenSession(data.OutFileName, data.NumPeriods, data.ChannelNames.Count()); }
public void OpenSession(SequenceSessionData data) { this.SeqPeriodTime = data.PeriodMS; OpenSession(data.OutFileName, data.NumPeriods, data.ChannelNames.Count()); }
public void OpenSession(SequenceSessionData sessionData) { _curPeriod = 0; _sessionData = sessionData; try { _outfs = File.Create(_sessionData.OutFileName, _sessionData.ChannelNames.Count * 2, FileOptions.None); } catch (Exception e) { _outfs = null; throw e; } _xmlData = new Vix2XMLData(); _xmlData.Channels = new List<Vix2Channel>(); _xmlData.Time = _sessionData.TimeMS.ToString(); _xmlData.EventPeriodInMilliseconds = _sessionData.PeriodMS.ToString(); _adder = 0; if (_sessionData.TimeMS % _sessionData.PeriodMS != 0) { _adder = 1; } _periodData = new Byte[sessionData.ChannelNames.Count * (_sessionData.NumPeriods + _adder)]; _xmlData.MinimumLevel = "0"; _xmlData.MaximumLevel = "255"; _xmlData.AudioDevice = "-1"; _xmlData.AudioVolume = "0"; }
private void ProcessExport() { SequenceSessionData sessionData = new SequenceSessionData(); if (_exporting) { SavePosition = 0; SequenceNotify(ExportNotifyType.SAVING); _generator.BeginGeneration(); IEnumerable<Guid> outIds = _generator.State.GetOutputIds(); int periods = (int)_generator.Sequence.Length.TotalMilliseconds / _generator.Interval;//outAggregator.GetCommandsForOutput(outIds.First()).Count() - 1; //Get a list of controller ids by index order IEnumerable<Guid> controllers = ControllerExportInfo.OrderBy(x => x.Index).Select(i => i.Id); //Now assemble a all their outputs by controller order. List<List<Guid>> controllerOutputs = controllers.Select(controller => VixenSystem.OutputControllers.GetController(controller).Outputs.Select(x => x.Id).ToList()).ToList(); List<ICommand> commandList = new List<ICommand>(controllerOutputs.Count); _eventData = new List<byte>(controllerOutputs.Count); if (_cancelling == false) { sessionData.OutFileName = OutFileName; sessionData.NumPeriods = periods; sessionData.PeriodMS = UpdateInterval; sessionData.ChannelNames = BuildChannelNames(outIds); sessionData.TimeMS = _generator.Sequence.Length.TotalMilliseconds; sessionData.AudioFileName = AudioFilename; try { _output.OpenSession(sessionData); int j = 0; while (_generator.HasNextInterval() && _cancelling == false) { SavePosition = Decimal.Round(((Decimal) j/periods)*100, 2); commandList.Clear(); //Iterate the controller output groups. foreach (var controller in controllerOutputs) { //Grab commands for each output commandList.AddRange(controller.Select(guid => _generator.State.GetCommandForOutput(guid))); } UpdateState(commandList.ToArray()); _generator.NextInterval(); j++; } _output.CloseSession(); } catch (Exception ex) { MessageBox.Show(ex.Message, @"Save Error!"); throw ex; } finally { _generator.EndGeneration(); } } if (SequenceNotify != null) { SequenceNotify(ExportNotifyType.COMPLETE); } } }
private void ProcessExport(IProgress <ExportProgressStatus> progress) { SequenceSessionData sessionData = new SequenceSessionData(); if (_exporting) { if (SequenceNotify != null) { SequenceNotify(ExportNotifyType.SAVING); } _generator.BeginGeneration(); //IEnumerable<Guid> outIds = _generator.State.GetOutputIds(); int periods = (int)_generator.Sequence.Length.TotalMilliseconds / _generator.Interval; //outAggregator.GetCommandsForOutput(outIds.First()).Count() - 1; //Get a list of controller ids by index order IEnumerable <Guid> controllerIds = ControllerExportInfo.Where(x => x.IsActive).OrderBy(x => x.Index).Select(i => i.Id); var controllers = controllerIds.Select(controller => VixenSystem.OutputControllers.GetController(controller)); //Now assemble a all their outputs by controller order. List <List <Guid> > controllerOutputs = controllers.Select(controller => controller.Outputs.Select(x => x.Id).ToList()).ToList(); List <ICommand> commandList = new List <ICommand>(controllerOutputs.Count); _eventData = new List <byte>(controllerOutputs.Count); var progressData = new ExportProgressStatus(ExportProgressStatus.ProgressType.Task); if (_cancelling == false) { sessionData.OutFileName = OutFileName; sessionData.NumPeriods = periods; sessionData.PeriodMS = UpdateInterval; sessionData.ChannelNames = BuildChannelNames(controllers); sessionData.TimeMS = _generator.Sequence.Length.TotalMilliseconds; sessionData.AudioFileName = AudioFilename; try { _output.OpenSession(sessionData); double j = 0; while (_generator.HasNextInterval() && _cancelling == false) { if (progress != null) { progressData.TaskProgressValue = (int)(j / periods * 100); progressData.TaskProgressMessage = string.Format("Exporting {0}", _generator.Sequence.Name); progress.Report(progressData); } commandList.Clear(); //Iterate the controller output groups. foreach (var controller in controllerOutputs) { //Grab commands for each output commandList.AddRange(controller.Select(guid => _generator.State.GetCommandForOutput(guid))); } UpdateState(commandList.ToArray()); _generator.NextInterval(); j++; } _output.CloseSession(); } catch (Exception ex) { MessageBox.Show(ex.Message, @"Save Error!"); throw ex; } finally { _generator.EndGeneration(); } } if (SequenceNotify != null) { SequenceNotify(ExportNotifyType.COMPLETE); } } }
public void OpenSession(SequenceSessionData sessionData) { _curPeriod = 0; _sessionData = sessionData; try { _outfs = File.Create(_sessionData.OutFileName, _sessionData.ChannelNames.Count * 2, FileOptions.None); _dataOut = new BinaryWriter(_outfs); } catch (Exception e) { _outfs = null; _dataOut = null; throw e; } _periodData = new Byte[sessionData.ChannelNames.Count * _sessionData.NumPeriods]; }
public void OpenSession(SequenceSessionData data) { OpenSession(data.OutFileName, data.NumPeriods, data.ChannelNames.Count()); }
void SequenceCacheEnded(object sender, Vixen.Cache.Event.CacheEventArgs e) { SequenceSessionData sessionData = new SequenceSessionData(); if (_exporting) { List <ICommand> commandList = new List <ICommand>(); OutputStateListAggregator outAggregator = _preCachingSequenceEngine.Cache.OutputStateListAggregator; IEnumerable <Guid> outIds = outAggregator.GetOutputIds(); int periods = outAggregator.GetCommandsForOutput(outIds.First()).Count() - 1; //Get a list of controller ids by index order IEnumerable <Guid> controllers = ControllerExportInfo.OrderBy(x => x.Index).Select(i => i.Id); //Now assemble a all their outputs by controller order. List <List <Guid> > controllerOutputs = new List <List <Guid> >(); foreach (var controller in controllers) { controllerOutputs.Add(VixenSystem.OutputControllers.GetController(controller).Outputs.Select(x => x.Id).ToList()); } if (_cancelling == false) { SequenceNotify(ExportNotifyType.SAVING); sessionData.OutFileName = OutFileName; sessionData.NumPeriods = periods; sessionData.PeriodMS = UpdateInterval; sessionData.ChannelNames = BuildChannelNames(outIds); sessionData.TimeMS = _preCachingSequenceEngine.Sequence.Length.TotalMilliseconds; sessionData.AudioFileName = AudioFilename; try { _output.OpenSession(sessionData); for (int j = 0; j < periods; j++) { SavePosition = Decimal.Round(((Decimal)j / (Decimal)periods) * 100, 2); commandList.Clear(); //Iterate the controller output groups. foreach (var controller in controllerOutputs) { //Grab commands for each output foreach (Guid guid in controller) { commandList.Add(outAggregator.GetCommandsForOutput(guid).ElementAt(j)); } } UpdateState(commandList.ToArray()); } _output.CloseSession(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Save Error!"); throw ex; } _preCachingSequenceEngine.SequenceCacheEnded -= SequenceCacheEnded; _preCachingSequenceEngine.SequenceCacheStarted -= SequenceCacheStarted; } if (SequenceNotify != null) { SequenceNotify(ExportNotifyType.COMPLETE); } } }