private void ThreadProc() { while (!_bFinished) { Advance(); if (_eDoneProc != null && !_bFinished) { _eDoneProc(_cCurrentBuffer.Data, _cCurrentBuffer.Size); } _cCurrentBuffer.Record(); } }
public WaveInRecorder(int device, WaveFormat format, int bufferSize, int bufferCount, BufferDoneEventHandler doneProc) { m_DoneProc = doneProc; WaveInHelper.Try(WaveNative.waveInOpen(out m_WaveIn, device, format, m_BufferProc, 0, WaveNative.CALLBACK_FUNCTION)); AllocateBuffers(bufferSize, bufferCount); for (int i = 0; i < bufferCount; i++) { SelectNextBuffer(); m_CurrentBuffer.Record(); } WaveInHelper.Try(WaveNative.waveInStart(m_WaveIn)); m_Thread = new Thread(new ThreadStart(ThreadProc)); m_Thread.Start(); }
public WaveInRecorder(int device, WaveFormat format, int bufferSize, int bufferCount, BufferDoneEventHandler doneProc) { try { EncoderWorking = false; m_DoneProc = doneProc; WaveInHelper.Try(WaveNative.waveInOpen(out m_WaveIn, device, format, m_BufferProc, 0, WaveNative.CALLBACK_FUNCTION)); AllocateBuffers(bufferSize, bufferCount); for (int i = 0; i < bufferCount; i++) { SelectNextBuffer(); m_CurrentBuffer.Record(); } WaveInHelper.Try(WaveNative.waveInStart(m_WaveIn)); m_Thread = new Thread(new ThreadStart(ThreadProc)); m_Thread.Name = "WaveInRecorder Thread : ThreadProc()"; m_Thread.Start(); EncoderWorking = true; } catch (Exception) { } }
private void ThreadProc() { while (!m_Finished) { m_CurrentBuffer = (m_CurrentBuffer == buffer1) ? buffer2 : buffer1; m_CurrentBuffer.WaitFor(); m_DoneProc(m_CurrentBuffer.Data, m_CurrentBuffer.Size); if (m_Finished) { break; } m_CurrentBuffer.Record(); } }
public WaveInRecorder(int device, WaveFormat format, int bufferSize, BufferDoneEventHandler doneProc) { m_DoneProc = doneProc; WaveInRecorder.ThrowOnError(WaveNative.waveInOpen(out m_WaveIn, device, format, m_BufferProc, 0, WaveNative.CALLBACK_FUNCTION)); buffer1 = new WaveInBuffer(m_WaveIn, bufferSize); buffer2 = new WaveInBuffer(m_WaveIn, bufferSize); buffer1.Record(); buffer2.Record(); m_CurrentBuffer = buffer1; WaveInRecorder.ThrowOnError(WaveNative.waveInStart(m_WaveIn)); m_Thread = new Thread(new ThreadStart(ThreadProc)); m_Thread.Start(); }