Commit 631cce91 by andrewlewis Committed by Oliver Woodman

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
parent 4b5c521a
...@@ -374,8 +374,8 @@ import java.util.Arrays; ...@@ -374,8 +374,8 @@ import java.util.Arrays;
} }
private short interpolate(short[] in, int inPos, int oldSampleRate, int newSampleRate) { private short interpolate(short[] in, int inPos, int oldSampleRate, int newSampleRate) {
short left = in[inPos * numChannels]; short left = in[inPos];
short right = in[inPos * numChannels + numChannels]; short right = in[inPos + numChannels];
int position = newRatePosition * oldSampleRate; int position = newRatePosition * oldSampleRate;
int leftPosition = oldRatePosition * newSampleRate; int leftPosition = oldRatePosition * newSampleRate;
int rightPosition = (oldRatePosition + 1) * newSampleRate; int rightPosition = (oldRatePosition + 1) * newSampleRate;
...@@ -402,7 +402,7 @@ import java.util.Arrays; ...@@ -402,7 +402,7 @@ import java.util.Arrays;
enlargeOutputBufferIfNeeded(1); enlargeOutputBufferIfNeeded(1);
for (int i = 0; i < numChannels; i++) { for (int i = 0; i < numChannels; i++) {
outputBuffer[numOutputSamples * numChannels + i] = outputBuffer[numOutputSamples * numChannels + i] =
interpolate(pitchBuffer, position + i, oldSampleRate, newSampleRate); interpolate(pitchBuffer, position * numChannels + i, oldSampleRate, newSampleRate);
} }
newRatePosition++; newRatePosition++;
numOutputSamples++; numOutputSamples++;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment