mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-15 15:49:36 +02:00
Fix Resample cutting the tracks off
This commit is contained in:
parent
3d4b4e0e1a
commit
cd6848a912
@ -1529,12 +1529,18 @@ bool WaveClip::Resample(int rate, ProgressDialog *progress)
|
|||||||
float* outBuffer = new float[bufsize];
|
float* outBuffer = new float[bufsize];
|
||||||
sampleCount pos = 0;
|
sampleCount pos = 0;
|
||||||
bool error = false;
|
bool error = false;
|
||||||
|
int outGenerated = 0;
|
||||||
sampleCount numSamples = mSequence->GetNumSamples();
|
sampleCount numSamples = mSequence->GetNumSamples();
|
||||||
|
|
||||||
Sequence* newSequence =
|
Sequence* newSequence =
|
||||||
new Sequence(mSequence->GetDirManager(), mSequence->GetSampleFormat());
|
new Sequence(mSequence->GetDirManager(), mSequence->GetSampleFormat());
|
||||||
|
|
||||||
while (pos < numSamples)
|
/**
|
||||||
|
* We want to keep going as long as we have something to feed the resampler
|
||||||
|
* with OR as long as the resampler spews out samples (which could continue
|
||||||
|
* for a few iterations after we stop feeding it)
|
||||||
|
*/
|
||||||
|
while (pos < numSamples || outGenerated > 0)
|
||||||
{
|
{
|
||||||
int inLen = numSamples - pos;
|
int inLen = numSamples - pos;
|
||||||
if (inLen > bufsize)
|
if (inLen > bufsize)
|
||||||
@ -1549,7 +1555,7 @@ bool WaveClip::Resample(int rate, ProgressDialog *progress)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int inBufferUsed = 0;
|
int inBufferUsed = 0;
|
||||||
int outGenerated = resample->Process(factor, inBuffer, inLen, isLast,
|
outGenerated = resample->Process(factor, inBuffer, inLen, isLast,
|
||||||
&inBufferUsed, outBuffer, bufsize);
|
&inBufferUsed, outBuffer, bufsize);
|
||||||
|
|
||||||
pos += inBufferUsed;
|
pos += inBufferUsed;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user