/* * Copyright 2007 Sun Microsystems, Inc. * * This file is part of jVoiceBridge. * * jVoiceBridge is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation and distributed hereunder * to you. * * jVoiceBridge is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * Sun designates this particular file as subject to the "Classpath" * exception as provided by Sun in the License file that accompanied this * code. */ package com.sun.voip; import java.io.IOException; /** * Sample rate converter, convert from one sample rate to another. */ public class SampleRateConverter { private Resampler resampler; public SampleRateConverter(String id, int inSampleRate, int inChannels, int outSampleRate, int outChannels) throws IOException { if (inSampleRate < outSampleRate) { resampler = new Upsampler(id, inSampleRate, inChannels, outSampleRate, outChannels); } else { resampler = new Downsampler(id, inSampleRate, inChannels, outSampleRate, outChannels); } if (Logger.logLevel >= Logger.LOG_MOREINFO) { Logger.println("New Sample Rate Converter: from " + inSampleRate + "/" + inChannels + " to " + outSampleRate + "/" + outChannels); } } public void reset() { resampler.reset(); } public byte[] resample(byte[] inSamples, int offset, int length) throws IOException { return resampler.resample(inSamples, offset, length); } public int[] resample(int[] inSamples) throws IOException { return resampler.resample(inSamples); } public void printStatistics() { resampler.printStatistics(); } }