logo logo
Home arrow Forums...
Thursday, 04 December 2008
 
 
English English  Español Español  
Upcoming Events
10.Jun. 2009

IWANN 2009
Salamanca, Spain
International Work-Conference on Artificial Neural Networks
11.Jun. 2009

Toward a Science of Consciousness
Hong Kong, China
15.Jun. 2009

International Workshop on Machine Consciousness
Hong Kong, China
15.Jun. 2009

The 8th IEEE International Conference on Cognitive Informatics
Hong Kong, China
22.Jun. 2009

IWINAC 2009
Santiago de Compostela, Spain
Work-Conference in the Interplay between Natural and Artificial Computation
Tag Cloud
Artificial Associations Books Brain Conferences Conscious Consciousness Developer Documentación Documentation Español Machine Machine Consciousness Machines Neuroscience Publications Research Researchers Reviews Robotics Robots Spanish Studio VPL
Spotlight
Syndicate
 Conscious Robots RSS FeedConscious Robots RSS Feed
Conscious-Robots.com Forum  


Raúl
Moderator

Moderator
Posts: 434
graph
Karma: 6  
Simulated WebCam exception in QueryFrame - 2007/09/18 12:31 I found a bug in the Robotics Studio SimulatedWebcam service.

The problem is that after a few seconds (some times it takes longer) I get an InvalidOperationException in the QueryFrameHandler method in file SimulatedWebcam.cs (The lines causing the exception are these:

Code:

 // size not specified if(size.Width == 0)   size _state.Image.Size;



see the rest of the code below)

The runtime is complaining because Object (_state.Image) is currently in use elsewhere.

I think the size assignment should be moved within the next try-catch. Also the method QueryFrameHandler should declared as Exclusive, because the image is being locked in the method.

Microsoft are making these changes for the next release.

Code:

 [ServiceHandler(ServiceHandlerBehavior.Concurrent)] public IEnumerator<ITaskQueryFrameHandler(webcam.QueryFrame query) { if (_state.Image == null) { query.ResponsePort.Post(new webcam.QueryFrameResponse()); yield break; } Size size = new Size((int)query.Body.Size.X, (int)query.Body.Size.Y); if (query.Body.Format == Guid.Empty) { // raw image requested; BitmapData raw null;  // size not specified if(size.Width == 0)   size _state.Image.Size; try { raw _state.Image.LockBits(new Rectangle(Point.Empty, size), ImageLockMode.ReadOnlyPixelFormat.Format24bppRgb); int byteSize raw.Height raw.Stride; webcam.QueryFrameResponse response = new webcam.QueryFrameResponse(); response.TimeStamp _state.LastFrameUpdate; response.Frame = new byte[byteSize]; response.Size = new Size(raw.Widthraw.Height); response.Format Guid.Empty; System.Runtime.InteropServices.Marshal.Copy(raw.Scan0response.Frame0byteSize); query.ResponsePort.Post(response); } catch (Exception ex) { query.ResponsePort.Post(Fault.FromException(ex)); } finally { if (raw != null) { _state.Image.UnlockBits(raw); } } } else { ImageFormat format = new ImageFormat(query.Body.Format); using (MemoryStream stream = new MemoryStream()) {  if (size == _state.Image.Size || size.Width == || size.Height == || size.Width >= _state.Image.Width || size.Height >= _state.Image.Height) { size _state.Image.Size; _state.Image.Save(streamformat); } else { using (Bitmap temp = new Bitmap( _state.Imagesize)) { temp.Save(streamformat); } } webcam.QueryFrameResponse response = new webcam.QueryFrameResponse(); response.TimeStamp _state.LastFrameUpdate; response.Frame = new byte[(int)stream.Length]; response.Size size; response.Format format.Guid; stream.Position 0; stream.Read(response.Frame0response.Frame.Length); query.ResponsePort.Post(response); } } yield break; }



Post edited by: Raúl, at: 2007/09/18 12:45
Raúl Arrabales Moreno. conscious-robots.com/raul
  The administrator has disabled public write access. Please, register to participate in the forum.

      Topics Author Date
    emo
Simulated WebCam exception in QueryFrame
Raúl 2007/09/18 12:31
    emo
thread linkthread link Re:Simulated WebCam exception in QueryFrame
Raúl 2007/09/18 13:25





Lost Password?
No account yet? Register
Last Posts in Forum
 
Top!
Advertising links: Cheap Electricity - Cheap Gas - Credit Cards - Loans
Top!