public WaveMicrophone(int deviceID, int channels, int sampleRate, int bitsPerSample, double latency) : base(deviceID, channels, sampleRate, bitsPerSample, latency) { fAudioEvents = new BlockingBoundedQueue<AudioEvent>(SampleCount); Open(); // Preload buffers so we are ready to start recording AllocateBuffers(DeviceHandle); }
void AllocateBuffers(int bufferSize, int bufferCount) { fSamples = new Dictionary<IntPtr, MediaSample>(); fAvailableBuffers = new BlockingBoundedQueue<WAVEHDR>(bufferCount); for (int i = 0; i < bufferCount; i++) { MediaSample aSample = new MediaSample(bufferSize); fSamples.Add(aSample.GetHeaderPointer(), aSample); fAvailableBuffers.Enqueue(aSample.GetHeader()); } }