Ejemplo n.º 1
0
        public Bitmap GetNextFrame(out long frameId)
        {
            if (latestBitmap == null)
            {
                frameId = -1;
                return(null);
            }

            if (!firstFrameReceived)
            {
                crossbarHelper.SetupTunerAndCrossbar(capBuilder, deviceFilter);
                firstFrameReceived = true;
            }

            Bitmap rv = null;

            NonBlockingLock.Lock(
                NonBlockingLock.LOCK_ID_GetNextFrame,
                () =>
            {
                rv = (Bitmap)latestBitmap.Clone();
            });

            frameId = frameCounter;
            return(rv);
        }
Ejemplo n.º 2
0
        /// <summary> buffer callback, COULD BE FROM FOREIGN THREAD. </summary>
        int ISampleGrabberCB.BufferCB(double SampleTime, IntPtr pBuffer, int BufferLen)
        {
            NonBlockingLock.Lock(
                NonBlockingLock.LOCK_ID_BufferCB,
                () =>
            {
                CopyBitmap(pBuffer);

                frameCounter++;
            });

            Thread.Sleep(1);

            return(0);
        }