Accord.Controls.VideoSourcePlayer.videoSource_NewFrame C# (CSharp) Method

videoSource_NewFrame() private method

private videoSource_NewFrame ( object sender, NewFrameEventArgs eventArgs ) : void
sender object
eventArgs NewFrameEventArgs
return void
        private void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            if (!requestedToStop)
            {
                Bitmap newFrame = (Bitmap)eventArgs.Frame.Clone();

                // let user process the frame first
                if (NewFrame != null)
                {
                    NewFrame(this, ref newFrame);
                }

                // now update current frame of the control
                lock (sync)
                {
                    // dispose previous frame
                    if (currentFrame != null)
                    {
                        if (currentFrame.Size != eventArgs.Frame.Size)
                        {
                            needSizeUpdate = true;
                        }

                        currentFrame.Dispose();
                        currentFrame = null;
                    }
                    if (convertedFrame != null)
                    {
                        convertedFrame.Dispose();
                        convertedFrame = null;
                    }

                    currentFrame = newFrame;
                    frameSize = currentFrame.Size;
                    lastMessage = null;

                    // check if conversion is required to lower bpp rate
                    if ((currentFrame.PixelFormat == PixelFormat.Format16bppGrayScale) ||
                         (currentFrame.PixelFormat == PixelFormat.Format48bppRgb) ||
                         (currentFrame.PixelFormat == PixelFormat.Format64bppArgb))
                    {
                        convertedFrame = Accord.Imaging.Image.Convert16bppTo8bpp(currentFrame);
                    }
                }

                // update control
                Invalidate();
            }
        }