int Load(short[] input, int offset, int length)
{
if (length < 0 || m_buffer_offset > m_buffer_size)
{
throw new Exception();
}
length = Math.Min(length, m_buffer_size - m_buffer_offset);
switch (m_num_channels)
{
case 1:
LoadMono(input, offset, length);
break;
case 2:
LoadStereo(input, offset, length);
break;
default:
LoadMultiChannel(input, offset, length);
break;
}
m_buffer_offset += length;
return length;
}