void PrepareFloatBuffers(int bufferSize) { var deviceBufferSize = (int)(AudioSession.CurrentHardwareSampleRate * AudioSession.CurrentHardwareIOBufferDuration + 0.5f); Console.WriteLine("Prepare buffers: {0}, deviceBuffer: {1}, latency: {2}, {3}", bufferSize, deviceBufferSize, AudioSession.CurrentHardwareOutputLatency, AudioSession.CurrentHardwareOutputLatency * AudioSession.CurrentHardwareSampleRate); if (_sampleBuffer != null) { _sampleBuffer.Dispose(); } var numChannels = _numInputChannels + _numOutputChannels; if (numChannels > 0) { _sampleBuffer = new SampleBuffer(numChannels, bufferSize); for (var i = 0; i < _numInputChannels; ++i) { _inputChannels[i] = _sampleBuffer.GetPointer(i); } for (var i = 0; i < _numOutputChannels; ++i) { _outputChannels[i] = _sampleBuffer.GetPointer(i + _numInputChannels); } } }
protected override void DisposeManagedResources() { if (Device != null) { Device.Dispose(); Device = null; } if (_tempBuffer != null) { _tempBuffer.Dispose(); _tempBuffer = null; } }