// On new frame private void camera_NewFrame( object sender, System.EventArgs e ) { if ( ( intervalsToSave != 0 ) && ( saveOnMotion == true ) ) { // lets save the frame if ( writer == null ) { // create file name DateTime date = DateTime.Now; String fileName = String.Format( "{0}-{1}-{2} {3}-{4}-{5}.avi", date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second ); try { // create AVI writer writer = new AVIWriter( "wmv3" ); // open AVI file writer.Open( fileName, cameraWindow.Camera.Width, cameraWindow.Camera.Height ); } catch ( ApplicationException ex ) { if ( writer != null ) { writer.Dispose( ); writer = null; } } } // save the frame Camera camera = cameraWindow.Camera; camera.Lock( ); writer.AddFrame( camera.LastFrame ); camera.Unlock( ); } }
// Close current file private void CloseFile( ) { Camera camera = cameraWindow.Camera; if ( camera != null ) { // detach camera from camera window cameraWindow.Camera = null; // signal camera to stop camera.SignalToStop( ); // wait for the camera camera.WaitForStop( ); camera = null; if ( detector != null ) detector.Reset( ); } if ( writer != null ) { writer.Dispose( ); writer = null; } intervalsToSave = 0; }
// On timer event - gather statistic private void timer_Elapsed( object sender, System.Timers.ElapsedEventArgs e ) { Camera camera = cameraWindow.Camera; if ( camera != null ) { // get number of frames for the last second statCount[statIndex] = camera.FramesReceived; // increment indexes if ( ++statIndex >= statLength ) statIndex = 0; if ( statReady < statLength ) statReady++; float fps = 0; // calculate average value for ( int i = 0; i < statReady; i++ ) { fps += statCount[i]; } fps /= statReady; statCount[statIndex] = 0; fpsPanel.Text = fps.ToString( "F2" ) + " fps"; } // descrease save counter if ( intervalsToSave > 0 ) { if ( ( --intervalsToSave == 0 ) && ( writer != null ) ) { writer.Dispose( ); writer = null; } } }
private void closeAllCameras() { foreach (rigItem rigI in CameraRig.rig) { Camera camera = rigI.cam; camera.SignalToStop(); camera.WaitForStop(); } if (writer != null) { writer.Dispose(); writer = null; } intervalsToSave = 0; }