Beispiel #1
0
        public int Read(SampleArray data, int offset, int count)
        {
            if (count > _sampleCount)
            {
                count = _sampleCount;
            }
            var samplesRead = 0;
            var readToEnd   = Math.Min(_buffer.Length - _readPosition, count);

            SampleArray.Blit(_buffer, _readPosition, data, offset, readToEnd);
            samplesRead   += readToEnd;
            _readPosition += readToEnd;
            _readPosition %= _buffer.Length;

            if (samplesRead < count)
            {
                SampleArray.Blit(_buffer, _readPosition, data, offset + samplesRead, count - samplesRead);
                _readPosition += (count - samplesRead);
                samplesRead    = count;
            }

            _sampleCount -= samplesRead;
            return(samplesRead);
        }
Beispiel #2
0
        public int Write(SampleArray data, int offset, int count)
        {
            var samplesWritten = 0;

            if (count > _buffer.Length - _sampleCount)
            {
                count = _buffer.Length - _sampleCount;
            }

            var writeToEnd = Math.Min(_buffer.Length - _writePosition, count);

            SampleArray.Blit(data, offset, _buffer, _writePosition, writeToEnd);
            _writePosition += writeToEnd;
            _writePosition %= _buffer.Length;
            samplesWritten += writeToEnd;
            if (samplesWritten < count)
            {
                SampleArray.Blit(data, offset + samplesWritten, _buffer, _writePosition, count - samplesWritten);
                _writePosition += (count - samplesWritten);
                samplesWritten  = count;
            }
            _sampleCount += samplesWritten;
            return(samplesWritten);
        }