public SOXResampler(AudioPCMConfig inputPCM, AudioPCMConfig outputPCM, SOXResamplerConfig config) { this.inputPCM = inputPCM; this.outputPCM = outputPCM; if (inputPCM.ChannelCount != outputPCM.ChannelCount) throw new NotSupportedException(); if (outputPCM.SampleRate == inputPCM.SampleRate * 4 && config.Quality >= SOXResamplerQuality.Medium) { this.rate = new rate_t[inputPCM.ChannelCount]; this.shared = new rate_shared_t(); this.rateUp2 = new rate_t[inputPCM.ChannelCount]; this.sharedUp2 = new rate_shared_t(); for (int i = 0; i < inputPCM.ChannelCount; i++) { rateUp2[i] = new rate_t(inputPCM.SampleRate, inputPCM.SampleRate * 2, sharedUp2, 0.5, config.Quality, -1, config.Phase, config.Bandwidth, config.AllowAliasing); rate[i] = new rate_t(inputPCM.SampleRate * 2, inputPCM.SampleRate * 4, shared, 0.5, config.Quality, -1, 50, 90, true); } } else { this.rate = new rate_t[inputPCM.ChannelCount]; this.shared = new rate_shared_t(); for (int i = 0; i < inputPCM.ChannelCount; i++) { rate[i] = new rate_t(inputPCM.SampleRate, outputPCM.SampleRate, shared, (double)inputPCM.SampleRate / outputPCM.SampleRate, config.Quality, -1, config.Phase, config.Bandwidth, config.AllowAliasing); } } }
public SOXResampler(AudioPCMConfig inputPCM, AudioPCMConfig outputPCM, SOXResamplerConfig config) { this.inputPCM = inputPCM; this.outputPCM = outputPCM; if (inputPCM.ChannelCount != outputPCM.ChannelCount) { throw new NotSupportedException(); } if (outputPCM.SampleRate == inputPCM.SampleRate * 4 && config.Quality >= SOXResamplerQuality.Medium) { this.rate = new rate_t[inputPCM.ChannelCount]; this.shared = new rate_shared_t(); this.rateUp2 = new rate_t[inputPCM.ChannelCount]; this.sharedUp2 = new rate_shared_t(); for (int i = 0; i < inputPCM.ChannelCount; i++) { rateUp2[i] = new rate_t(inputPCM.SampleRate, inputPCM.SampleRate * 2, sharedUp2, 0.5, config.Quality, -1, config.Phase, config.Bandwidth, config.AllowAliasing); rate[i] = new rate_t(inputPCM.SampleRate * 2, inputPCM.SampleRate * 4, shared, 0.5, config.Quality, -1, 50, 90, true); } } else { this.rate = new rate_t[inputPCM.ChannelCount]; this.shared = new rate_shared_t(); for (int i = 0; i < inputPCM.ChannelCount; i++) { rate[i] = new rate_t(inputPCM.SampleRate, outputPCM.SampleRate, shared, (double)inputPCM.SampleRate / outputPCM.SampleRate, config.Quality, -1, config.Phase, config.Bandwidth, config.AllowAliasing); } } }