ZForge.Motion.Controls.CameraView.camera_NewFrame C# (CSharp) Method

camera_NewFrame() private method

private camera_NewFrame ( object sender, System e ) : void
sender object
e System
return void
        private void camera_NewFrame(object sender, System.EventArgs e)
        {
            this.mHasFrame = true;
            if (this.EditMode == true || this.CameraClass == null || (this.CameraClass.Capture == CAPTUREFLAG.NOCAPTURE))
            {
                return;
            }

            mMutexCapture.WaitOne();
            if ((this.mIntervalsToSave > 0) || (this.CameraClass.Capture == CAPTUREFLAG.ALWAYS))
            {
                // lets save the frame
                if (mAVIWriter == null && MotionConfiguration.Instance.StorageIsValid)
                {
                    // create file name
                    Motion.Core.DateTimeEx date = new Motion.Core.DateTimeEx();
                    String fileName = String.Format("{0}.{1}.{2}.avi", this.CameraClass.ID, (int)RecordMark.INVALID, date.TimeStamp);
                    try
                    {
                        // create AVI writer
                        mAVIWriter = new AVIWriterEx(this.CameraClass.Codec);
                        // open AVI file
                        mAVIWriter.Open(MotionConfiguration.Instance.StorageAVI + @"\" + fileName, cameraWindow.Camera.Width, cameraWindow.Camera.Height);

                        DateTime n = DateTime.Now;
                        string s = "" + n.Hour + ":" + n.Minute + ":" + n.Second;
                        this.toolStripStatusLabelCapture.Text = string.Format(Translator.Instance.T("录像开始 ({0})"), s);
                        this.CameraClass.Capturing = true;
                        this.OnCameraViewRecordStarted(new CameraViewCaptureEventArgs(this));

                        mCaptureElapse = date.TimeStamp;
                    }
                    catch (Exception)
                    {
                        if (mAVIWriter != null)
                        {
                            mAVIWriter.Dispose();
                            mAVIWriter = null;
                        }
                        this.toolStripStatusLabelCapture.Text = Translator.Instance.T("录像失败");
                        this.CameraClass.Capturing = false;
                        this.mCaptureElapse = 0;
                        mMutexCapture.ReleaseMutex();
                        return;
                    }
                }

                Camera camera = cameraWindow.Camera;
                if (camera != null && mAVIWriter != null)
                {
                    Bitmap b = camera.LastFrame;
                    if (b != null)
                    {
                        try
                        {
                            if (this.ShowBanner)
                            {
                                Bitmap bmp = CameraBanner.Render(b, this.CameraClass.Name, true);
                                mAVIWriter.AddFrame(bmp);
                            }
                            else
                            {
                                mAVIWriter.AddFrame(b);
                            }
                        }
                        catch (Exception)
                        {
                            this.toolStripStatusLabelCapture.Text = Translator.Instance.T("录像失败");
                            //OnCameraViewLog(new CameraViewLogEventArgs(Motion.Core.LogLevel.LOG_ERROR, ex.Message, this));
                            //MessageBox.Show(ex.Message + "\n" + ex.StackTrace.ToString(), this.Camera.Name);
                        }
                    }
                }
            }
            mMutexCapture.ReleaseMutex();
        }