void Release() { if (iGrabber != null) { iGrabber.ReleaseFrame(iFrame); iGrabber = null; iFrame = null; iBitmap = null; } }
/// <summary> /// Grabs one frame. The caller doesn't have to call Start first, /// but it's recommended in order to get maximum frame rate. /// /// The second parameter is the capture format, i.e. one of /// V2U_GRABFRAME_FORMAT_* optionally combined with flags /// /// The last parameter is a pointer to the requested crop rectangle. /// Pass null if you need the whole frame. /// </summary> public unsafe Frame GrabFrame(uint format, V2URect *crop) { V2U_GrabFrame2 *frame = FrmGrab_Frame(iGrabber, format, crop); if (frame != null) { try { return(new Frame(this, frame)); } catch { FrmGrab_Release(iGrabber, frame); } } return(null); }
internal Frame(FrameGrabber aGrabber, V2U_GrabFrame2 *aFrame) { iGrabber = aGrabber; iFrame = aFrame; iBitmap = null; }
/// <summary> /// Releases the frame previously returned by FrmGrab_Frame /// </summary> internal unsafe void ReleaseFrame(V2U_GrabFrame2 *aFrame) { FrmGrab_Release(iGrabber, aFrame); }
static extern unsafe void FrmGrab_Release(IntPtr fg, V2U_GrabFrame2 *frame);