/// <summary> /// Renders an output into a user-chosen file. /// </summary> public IEnumerable <IResult> SaveNodeOutput(Node.Output output) { var file = new ChooseFileResult { Filter = "YUV-Video|*.yuv", OpenReadOnly = false }; yield return(file); IoC.Get <IWindowManager>().ShowDialog(new SaveNodeOutputViewModel(output, file.Stream(), Parent.Parent.Model)); }
public Node.Input AddInput(Node.Output source) { var input = new Node.Input { Source = source }; Model.Inputs.Add(input); inputs.Add(new InOutputViewModel(input, this)); NotifyOfPropertyChange(() => Inputs); return(input); }
public SaveNodeOutputViewModel(Node.Output output, Stream stream, PipelineState model) { this.model = model; IEnumerable <Frame> frames = model.Driver.RenderTicks(new[] { output.Node }, 0, TickCount, cts.Token) .Do(_ => { CurrentTick++; NotifyOfPropertyChange(() => CurrentTick); }) .Select(dic => dic[output]) .ToEnumerable(); Task.Factory.StartNew(() => { using (stream) YuvEncoder.Encode(stream, frames); TryClose(); }); }
/// <summary> /// Opens a new output window for a node output. /// </summary> public void ShowNodeOutput(Node.Output output) { Parent.Parent.OpenWindow(new VideoOutputViewModel(output)); }
public OutputWindowViewModel(Node nodeModel, Node.Output outputModel) { NodeModel = nodeModel; OutputModel = outputModel; }
InOutputViewModel GetOutputViewModel(Node.Output output) { return(output == null ? null : Nodes.SelectMany(n => n.Outputs).Single(o => o.Model == output)); }
/// <summary> /// Creates a new VideoOutputViewModel. /// </summary> public VideoOutputViewModel(Node.Output output) : base(output.Node, output) { }