void ReadFrameHandler(mdwebcam.Frame frame) { Bitmap old = _state.Image; if (frame.Image != null) { _state.Image = new Bitmap(frame.Image); _state.ImageSize = new Vector2(_state.Image.Size.Width, _state.Image.Size.Height); frame.Image.Dispose(); } else { _state.Image = null; } _state.LastFrameUpdate = DateTime.UtcNow; if (old != null) { old.Dispose(); } webcam.UpdateFrameRequest request = new webcam.UpdateFrameRequest(); request.TimeStamp = _state.LastFrameUpdate; webcam.UpdateFrame update = new webcam.UpdateFrame(); update.Body = request; update.ResponsePort = null; _fwdPort.Post(update); }
public void UpdateFrameHandler(webcam.UpdateFrame update) { update.ResponsePort.Post(DefaultUpdateResponseType.Instance); #if !URT_MINCLR SendNotification(_submgrPort, update); #else SendNotification(update); #endif }
void FrameHandler(Frame frame) { Frame previous = new Frame(); previous.Image = _state.Image; previous.TimeStamp = _state.LastFrameUpdate; _state.Image = frame.Image; _state.ImageSize = new Microsoft.Robotics.PhysicalModel.Vector2( _state.Image.Width, _state.Image.Height ); if (_state.Selected != null) { if (_state.Selected.Format == null || _state.Selected.Format.Width != _state.Image.Width || _state.Selected.Format.Height != _state.Image.Height) { _state.Selected.Format = new Format( _state.Image.Width, _state.Image.Height, 0, 0, 0 ); } } if (_captureEpoch == DateTime.MinValue) { _captureEpoch = DateTime.UtcNow - frame.Offset; } _state.LastFrameUpdate = _captureEpoch + frame.Offset; if (previous.Image != null) { #if !URT_MINCLR if (_streamPort != null) { _streamPort.Post(previous); } else #endif { previous.Image.Dispose(); } } webcam.UpdateFrame update = new webcam.UpdateFrame(new webcam.UpdateFrameRequest(frame.TimeStamp), null); _altFwdPort.Post(update); }
public IEnumerator <ITask> UpdateFrameHandler(webcam.UpdateFrame update) { if (_entity != null) { PortSet <int[], Exception> result = new PortSet <int[], Exception>(); _entity.CaptureScene(result); yield return(Arbiter.Choice(result, delegate(int [] data) { var b = _entity.CreateBitmapFromArray(data); _state.LastFrameUpdate = DateTime.Now; _state.Image = b; update.ResponsePort.Post(DefaultUpdateResponseType.Instance); base.SendNotification <webcam.UpdateFrame>(_subMgrPort, update); this.DoWebCamSensorReplace(data); }, delegate(Exception ex) { update.ResponsePort.Post(Fault.FromException(ex)); })); } }
public void UpdateFrameHandler(webcam.UpdateFrame update) { update.ResponsePort.Post(DefaultUpdateResponseType.Instance); SendNotification(_subMgrPort, update); }