Fix interpolation for rate/pitch adjustment

Based on https://github.com/waywardgeek/sonic/commit/7b441933.

Issue: #2774

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=155349817
This commit is contained in:
andrewlewis 2017-05-08 00:25:59 -07:00 committed by Oliver Woodman
parent 2d2fcf1510
commit 963b7cbf72

View File

@ -374,8 +374,8 @@ import java.util.Arrays;
}
private short interpolate(short[] in, int inPos, int oldSampleRate, int newSampleRate) {
short left = in[inPos * numChannels];
short right = in[inPos * numChannels + numChannels];
short left = in[inPos];
short right = in[inPos + numChannels];
int position = newRatePosition * oldSampleRate;
int leftPosition = oldRatePosition * newSampleRate;
int rightPosition = (oldRatePosition + 1) * newSampleRate;
@ -402,7 +402,7 @@ import java.util.Arrays;
enlargeOutputBufferIfNeeded(1);
for (int i = 0; i < numChannels; i++) {
outputBuffer[numOutputSamples * numChannels + i] =
interpolate(pitchBuffer, position + i, oldSampleRate, newSampleRate);
interpolate(pitchBuffer, position * numChannels + i, oldSampleRate, newSampleRate);
}
newRatePosition++;
numOutputSamples++;