public TtyRecKeyframeDecoder(int w, int h, IEnumerable <Stream> streams, TimeSpan between_stream_delay, TimeSpan between_packets_delay) { Width = w; Height = h; LoadThread = new Thread(() => DoBackgroundLoad()); LoadStreams = streams; LoadBetweenStreamDelay = between_stream_delay; LoadBetweenPacketsDelay = between_packets_delay; LoadThread.Start(); if (Packets.Count <= 0) { return; } CurrentFrame = DumpTerminal(Packets[0].RestartPosition, Packets[0].SinceStart); }
TtyRecFrame DumpTerminal(Terminal term, TimeSpan since_start) { var h = Height; var w = Width; var frame = new TtyRecFrame() { Data = new TerminalCharacter[w, h], SinceStart = since_start }; for (int y = 0; y < h; ++y) { var line = term.GetLine(y); for (int x = 0; x < w; ++x) { frame.Data[x, y] = line[x]; } } return(frame); }