Now I work on Canon EDSDK for myself. I get liveview image to very slow (5 image per second). How can I do it faster?.
This is my code for getting pointer to image:
uint _err = EDSDK.EDS_ERR_OK; IntPtr imageRef = IntPtr.Zero; IntPtr streamRef = IntPtr.Zero; IntPtr streamPtr = IntPtr.Zero; uint Length = 0; _err = EDSDK.EdsCreateMemoryStream(0, out streamRef); if (EDSDK.EDS_ERR_OK == _err) _err = EDSDK.EdsCreateEvfImageRef(streamRef, out imageRef); if (EDSDK.EDS_ERR_OK == _err) _err = EDSDK.EdsDownloadEvfImage(_camera, imageRef); if (EDSDK.EDS_ERR_OK == _err) { // display image _err = EDSDK.EdsGetPointer(streamRef, out streamPtr); if (EDSDK.EDS_ERR_OK == _err) _err = EDSDK.EdsGetLength(streamRef, out Length); }
then I load image to Bitmap and it's very very slow. My code:
byte[] b = new byte[Length]; Marshal.Copy(streamPtr, b, 0, (int)Length); using ( MemoryStream ac = new MemoryStream(b)) { img = (Bitmap)Image.FromStream(ac); ac.Close(); }