Пример #1
0
 public WaveInRecorder(int device, WaveFormat format, int bufferSize, int bufferCount, BufferDoneEventHandler doneProc, Action <bool> callBack)
 {
     try
     {
         m_DoneProc = doneProc;
         int error = WaveNative.waveInOpen(out m_WaveIn, device, format, m_BufferProc, 0, WaveNative.CALLBACK_FUNCTION);
         WaveInHelper.Try(error);
         AllocateBuffers(bufferSize, bufferCount);
         for (int i = 0; i < bufferCount; i++)
         {
             SelectNextBuffer();
             m_CurrentBuffer.Record();
         }
         error = WaveNative.waveInStart(m_WaveIn);
         WaveInHelper.Try(error);
         m_Thread = new Thread(new ThreadStart(ThreadProc));
         m_Thread.Start();
         if (callBack != null)
         {
             callBack(true);
         }
     }
     catch (Exception)
     {
         if (callBack != null)
         {
             callBack(false);
         }
     }
 }
Пример #2
0
 public WaveInBuffer(IntPtr waveInHandle, int size)
 {
     try
     {
         m_WaveIn                = waveInHandle;
         m_HeaderHandle          = GCHandle.Alloc(m_Header, GCHandleType.Pinned);
         m_Header.dwUser         = (IntPtr)GCHandle.Alloc(this);
         m_HeaderData            = new byte[size];
         m_HeaderDataHandle      = GCHandle.Alloc(m_HeaderData, GCHandleType.Pinned);
         m_Header.lpData         = m_HeaderDataHandle.AddrOfPinnedObject();
         m_Header.dwBufferLength = size;
         WaveInHelper.Try(WaveNative.waveInPrepareHeader(m_WaveIn, ref m_Header, Marshal.SizeOf(m_Header)));
     }
     catch (Exception ex)
     {
         LogManage.WriteLog(this.GetType(), ex);
     }
 }
Пример #3
0
 public WaveInRecorder(int device, WaveFormat format, int bufferSize, int bufferCount, BufferDoneEventHandler doneProc)
 {
     try
     {
         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();
     }
     catch (Exception ex)
     {
         LogManage.WriteLog(this.GetType(), ex);
     }
 }