mirror of
https://github.com/encounter/SDL.git
synced 2025-05-17 12:51:24 +00:00
SDL_ResampleAudio: Fix float accumulation error
While 78f97108f9dad22db6708f28322561eb9828fc36 reduced the accumulation error, it was still big enough to cause distortions. Fixes #6196. (cherry picked from commit 8145212103264b04c20cdb50b430f3c99b44e9b4)
This commit is contained in:
parent
f4080637c4
commit
79373c5a5c
@ -202,7 +202,6 @@ SDL_ResampleAudio(const int chans, const int inrate, const int outrate,
|
|||||||
typedef float ResampleFloatType;
|
typedef float ResampleFloatType;
|
||||||
|
|
||||||
const ResampleFloatType finrate = (ResampleFloatType) inrate;
|
const ResampleFloatType finrate = (ResampleFloatType) inrate;
|
||||||
const ResampleFloatType outtimeincr = ((ResampleFloatType) 1.0f) / ((ResampleFloatType) outrate);
|
|
||||||
const ResampleFloatType ratio = ((float) outrate) / ((float) inrate);
|
const ResampleFloatType ratio = ((float) outrate) / ((float) inrate);
|
||||||
const int paddinglen = ResamplerPadding(inrate, outrate);
|
const int paddinglen = ResamplerPadding(inrate, outrate);
|
||||||
const int framelen = chans * (int)sizeof (float);
|
const int framelen = chans * (int)sizeof (float);
|
||||||
@ -247,7 +246,7 @@ SDL_ResampleAudio(const int chans, const int inrate, const int outrate,
|
|||||||
*(dst++) = outsample;
|
*(dst++) = outsample;
|
||||||
}
|
}
|
||||||
|
|
||||||
outtime = outtimeincr * i;
|
outtime = ((ResampleFloatType) i) / ((ResampleFloatType) outrate);
|
||||||
}
|
}
|
||||||
|
|
||||||
return outframes * chans * sizeof (float);
|
return outframes * chans * sizeof (float);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user