private void DoRecording() { WaveInBuffer[] array = this.buffers; for (int i = 0; i < array.Length; i++) { WaveInBuffer waveInBuffer = array[i]; if (!waveInBuffer.InQueue) { waveInBuffer.Reuse(); } } while (this.recording) { if (this.callbackEvent.WaitOne() && this.recording) { array = this.buffers; for (int i = 0; i < array.Length; i++) { WaveInBuffer waveInBuffer2 = array[i]; if (waveInBuffer2.Done) { if (this.DataAvailable != null) { this.DataAvailable(this, new WaveInEventArgs(waveInBuffer2.Data, waveInBuffer2.BytesRecorded)); } waveInBuffer2.Reuse(); } } } } }
private void RaiseDataAvailable(WaveInBuffer buffer) { EventHandler <WaveInEventArgs> expr_06 = this.DataAvailable; if (expr_06 == null) { return; } expr_06(this, new WaveInEventArgs(buffer.Data, buffer.BytesRecorded)); }
private void EnqueueBuffers() { WaveInBuffer[] array = this.buffers; for (int i = 0; i < array.Length; i++) { WaveInBuffer waveInBuffer = array[i]; if (!waveInBuffer.InQueue) { waveInBuffer.Reuse(); } } }
public void StopRecording() { if (this.recording) { this.recording = false; MmException.Try(WaveInterop.waveInStop(this.waveInHandle), "waveInStop"); for (int i = 0; i < this.buffers.Length; i++) { int num = (i + this.lastReturnedBufferIndex + 1) % this.buffers.Length; WaveInBuffer waveInBuffer = this.buffers[num]; if (waveInBuffer.Done) { this.RaiseDataAvailable(waveInBuffer); } } this.RaiseRecordingStopped(null); } }
private void Callback(IntPtr waveInHandle, WaveInterop.WaveMessage message, IntPtr userData, WaveHeader waveHeader, IntPtr reserved) { if (message == WaveInterop.WaveMessage.WaveInData && this.recording) { WaveInBuffer waveInBuffer = (WaveInBuffer)((GCHandle)waveHeader.userData).Target; if (waveInBuffer == null) { return; } this.lastReturnedBufferIndex = Array.IndexOf <WaveInBuffer>(this.buffers, waveInBuffer); this.RaiseDataAvailable(waveInBuffer); try { waveInBuffer.Reuse(); } catch (Exception e) { this.recording = false; this.RaiseRecordingStopped(e); } } }