示例#1
0
        /// <summary>
        /// Opens a WaveOut device
        /// </summary>
        public WaveOut(WaveCallbackInfo callbackInfo)
        {
            this.syncContext = SynchronizationContext.Current;
            // set default values up
            this.DeviceNumber = 0;
            this.DesiredLatency = 300;
            this.NumberOfBuffers = 2;

            this.callback = new WaveInterop.WaveCallback(Callback);
            this.waveOutLock = new object();
            this.callbackInfo = callbackInfo;
            callbackInfo.Connect(this.callback);
        }
示例#2
0
 /// <summary>
 /// Prepares a Wave input device for recording
 /// </summary>
 public WaveIn(WaveCallbackInfo callbackInfo)
 {
     syncContext = SynchronizationContext.Current;
     if ((callbackInfo.Strategy == WaveCallbackStrategy.NewWindow || callbackInfo.Strategy == WaveCallbackStrategy.ExistingWindow) &&
         syncContext == null)
     {
         throw new InvalidOperationException("Use WaveInEvent to record on a background thread");
     }
     DeviceNumber = 0;
     WaveFormat = new WaveFormat(8000, 16, 1);
     BufferMilliseconds = 100;
     NumberOfBuffers = 3;
     callback = Callback;
     this.callbackInfo = callbackInfo;
     callbackInfo.Connect(callback);
 }
示例#3
0
 /// <summary>
 /// Dispose pattern
 /// </summary>
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (recording)
             StopRecording();
         CloseWaveInDevice();
         if (callbackInfo != null)
         {
             callbackInfo.Disconnect();
             callbackInfo = null;
         }
     }
 }