SDL_ResampleAudio: Fix float accumulation error

While 78f97108f9 reduced the accumulation error, it was still big enough to cause distortions.
Fixes #6196.

(cherry picked from commit 8145212103264b04c20cdb50b430f3c99b44e9b4)
This commit is contained in:
Markus Mittendrein 2022-11-27 22:46:54 +01:00 committed by Ryan C. Gordon
parent f4080637c4
commit 79373c5a5c
No known key found for this signature in database
GPG Key ID: FA148B892AB48044
1 changed files with 1 additions and 2 deletions

View File

@ -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);