public int Write(TimeLocatedBufferFFT source, int frames) { var written = _buffer.Write(source.Data, 0, frames * FrameSize); if (written % FrameSize != 0) { throw new InvalidOperationException(); } Time = Time.Increment(written * 2, Samplerate); return(written / FrameSize); }
public int Read(TimeLocatedBufferFFT target, int frames) { var timeBegin = TimeAtReadPosition; var read = _buffer.Read(target.Data, 0, frames * FrameSize); if (read % FrameSize != 0) { throw new InvalidOperationException("shouldn't dequeue amount which is not a multiple of the frame size"); } target.SetWritten(read / FrameSize, timeBegin.Increment(read * FrameSize, Samplerate)); return(read / FrameSize); }
public void PrepareProcessing(int queueSizeFrames, int transferBufferSizeFrames) { if (Samplerate <= 0) { throw new ArgumentOutOfRangeException(nameof(Samplerate)); } if (queueSizeFrames < 0) { throw new ArgumentOutOfRangeException(nameof(queueSizeFrames), "must be >= 0"); } if (transferBufferSizeFrames < 0) { throw new ArgumentOutOfRangeException(nameof(transferBufferSizeFrames), "must be >= 0"); } _queue = new RingBufferFFT(queueSizeFrames, FFTSize, Samplerate); _transferBuffer = new TimeLocatedBufferFFT(transferBufferSizeFrames, FFTSize, Samplerate); }
public void PrepareProcessing(int queueFFTs, int bufferFFTs) { _queue = new RingBufferFFT(queueFFTs, FFTSize, Samplerate); _readBuffer = new TimeLocatedBufferFFT(bufferFFTs, FFTSize, Samplerate); _stamp = TimeStamp.Zero; }