コード例 #1
0
ファイル: WaveInEvent.cs プロジェクト: zouhunter/SAEA
 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();
                 }
             }
         }
     }
 }
コード例 #2
0
        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));
        }
コード例 #3
0
 private void EnqueueBuffers()
 {
     WaveInBuffer[] array = this.buffers;
     for (int i = 0; i < array.Length; i++)
     {
         WaveInBuffer waveInBuffer = array[i];
         if (!waveInBuffer.InQueue)
         {
             waveInBuffer.Reuse();
         }
     }
 }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
 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);
         }
     }
 }