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);
                }
            }
        }
Esempio n. 2
0
        protected override void DisposeManagedResources()
        {
            if (Device != null)
            {
                Device.Dispose();
                Device = null;
            }

            if (_tempBuffer != null)
            {
                _tempBuffer.Dispose();
                _tempBuffer = null;
            }
        }