/* Stop Capturing */ public bool Stop() { if (!isRecording) { return(false); } // Stop Capturing Audio if (recordAudio) { audioSource.StopRecording(); } // Kill Timers PInvoke.timeKillEvent(captureTimerId); PInvoke.timeKillEvent(durationTimerId); captureTimerId = 0; captureTimerDelegate = null; durationTimerId = 0; durationTimerDelegate = null; status = "Idle"; isRecording = false; return(isRecording); }
/// <summary> /// Start Recording Timers /// </summary> private void StartTimers() { // Enable Capture Timer durationTimerDelegate = new PInvoke.MMTimerProc(DurationTick); durationTimerId = PInvoke.timeSetEvent(100, 0, durationTimerDelegate, 0, 1); // Enable Duration Timer captureTimerDelegate = new PInvoke.MMTimerProc(CaptureTick); captureTimerId = PInvoke.timeSetEvent((uint)(1000 / fps), 0, captureTimerDelegate, 0, 1); }
/// <summary> /// Stop Recording Timers /// </summary> private void StopTimers() { // Kill Timers PInvoke.timeKillEvent(captureTimerId); PInvoke.timeKillEvent(durationTimerId); // Nullify captureTimerId = 0; captureTimerDelegate = null; durationTimerId = 0; durationTimerDelegate = null; }
/* Start Capturing */ public bool Start(bool recordAudio = false) { if (isRecording) { return(false); } // Reset status = "Pending"; frames = 0; // Create Temporary Directory CreateTemporaryPath(); // Setup Audio Recording if (recordAudio) { this.recordAudio = recordAudio; audioSource = new WasapiLoopbackCapture(); audioSource.DataAvailable += new EventHandler <WaveInEventArgs>(WriteAudio); audioSource.RecordingStopped += new EventHandler <StoppedEventArgs>(RecordingStopped); audioFile = new WaveFileWriter(Path.Combine(tempPath, "audio.wav"), audioSource.WaveFormat); } // Enable Capture Timer durationTimerDelegate = new PInvoke.MMTimerProc(DurationTick); durationTimerId = PInvoke.timeSetEvent(100, 0, durationTimerDelegate, 0, 1); // Enable Duration Timer captureTimerDelegate = new PInvoke.MMTimerProc(CaptureTick); captureTimerId = PInvoke.timeSetEvent((uint)(1000 / fps), 0, captureTimerDelegate, 0, 1); if (recordAudio) { audioSource.StartRecording(); } status = "Recording"; isRecording = true; return(isRecording); }