/// <summary> /// BufferCB callback /// </summary> /// <remarks>COULD BE EXECUTED FROM FOREIGN THREAD.</remarks> int ISampleGrabberCB.BufferCB(double SampleTime, IntPtr pBuffer, int BufferLen) { try { // Note that we depend on only being called once per call to Click. Otherwise // a second call can overwrite the previous image. if (BufferLen == Math.Abs(m_videoBitCount / 8 * m_videoWidth) * m_videoHeight) { } if (m_bWantOneFrame) { m_bWantOneFrame = false; if (m_ipBuffer != IntPtr.Zero) { } // Save the buffer NativeMethodes.CopyMemory(m_ipBuffer, pBuffer, BufferLen); // Picture is ready. m_PictureReady.Set(); } } catch { } return(0); }
int ISampleGrabberCB.BufferCB(double SampleTime, IntPtr pBuffer, int BufferLen) { if (this.m_bWantOneFrame) { this.m_bWantOneFrame = false; NativeMethodes.CopyMemory(this.m_ipBuffer, pBuffer, BufferLen); this.m_PictureReady.Set(); } return(0); }
/// <summary> /// BufferCB callback /// </summary> /// <remarks>COULD BE EXECUTED FROM FOREIGN THREAD.</remarks> int ISampleGrabberCB.BufferCB(double SampleTime, IntPtr pBuffer, int BufferLen) { // Note that we depend on only being called once per call to Click. Otherwise // a second call can overwrite the previous image. Debug.Assert(BufferLen == Math.Abs(m_videoBitCount / 8 * m_videoWidth) * m_videoHeight, "Incorrect buffer length"); if (m_bWantOneFrame) { m_bWantOneFrame = false; Debug.Assert(m_ipBuffer != IntPtr.Zero, "Unitialized buffer"); // Save the buffer NativeMethodes.CopyMemory(m_ipBuffer, pBuffer, BufferLen); // Picture is ready. m_PictureReady.Set(); } return(0); }