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;
}