void Resample()
{
if (m_resample_ctx == null)
{
m_consumer.Consume(m_buffer, m_buffer_offset);
m_buffer_offset = 0;
return;
}
int consumed = 0;
int length = m_resample_ctx.Resample(m_resample_buffer, m_buffer, ref consumed, m_buffer_offset, kMaxBufferSize, true);
if (length > kMaxBufferSize)
{
//DEBUG() << "Chromaprint::AudioProcessor::Resample() -- Resampling overwrote output buffer.\n";
length = kMaxBufferSize;
}
m_consumer.Consume(m_resample_buffer, length);
int remaining = m_buffer_offset - consumed;
if (remaining > 0)
{
Array.Copy(m_buffer, consumed, m_buffer, 0, m_buffer_offset - consumed);
//copy(m_buffer + consumed, m_buffer + m_buffer_offset, m_buffer);
}
else if (remaining < 0)
{
//DEBUG() << "Chromaprint::AudioProcessor::Resample() -- Resampling overread input buffer.\n";
remaining = 0;
}
m_buffer_offset = remaining;
}