public bool Reset(int sample_rate, int num_channels)
{
if (num_channels <= 0)
{
Debug.WriteLine("Chromaprint::AudioProcessor::Reset() -- No audio channels.");
return false;
}
if (sample_rate <= kMinSampleRate)
{
Debug.WriteLine("Chromaprint::AudioProcessor::Reset() -- Sample rate less than {0} ({1}).",
kMinSampleRate, sample_rate);
return false;
}
m_buffer_offset = 0;
if (m_resample_ctx != null)
{
m_resample_ctx.Close();
m_resample_ctx = null;
}
if (sample_rate != m_target_sample_rate)
{
m_resample_ctx = new Resampler();
m_resample_ctx.Init(
m_target_sample_rate, sample_rate,
kResampleFilterLength,
kResamplePhaseCount,
kResampleLinear,
kResampleCutoff);
}
m_num_channels = num_channels;
return true;
}