Fixed my faulty vgmstream fade out routine

CQTexperiment
Chris Moeller 2014-09-28 18:11:44 -07:00
parent ea067ee410
commit 43ea955190
1 changed files with 5 additions and 4 deletions

View File

@ -167,11 +167,12 @@ err1:
long fadeEnd = (framesRead + frames) > totalFrames ? totalFrames : (framesRead + frames); long fadeEnd = (framesRead + frames) > totalFrames ? totalFrames : (framesRead + frames);
long fadePos; long fadePos;
int fadeScale = (int)((float)(totalFrames - fadeStart) / (float)framesFade * 65536.0f); int64_t fadeScale = (int64_t)(totalFrames - fadeStart) * INT_MAX / framesFade;
float fadeStep = (int)(1.0f / (float)framesFade * 65536.0f); int64_t fadeStep = INT_MAX / framesFade;
sbuf += (fadeStart - framesRead) * 2;
for (fadePos = fadeStart; fadePos < fadeEnd; ++fadePos) { for (fadePos = fadeStart; fadePos < fadeEnd; ++fadePos) {
sbuf[ 0 ] = sbuf[ 0 ] * fadeScale / 65536; sbuf[ 0 ] = (int16_t)((int64_t)(sbuf[ 0 ]) * fadeScale / INT_MAX);
sbuf[ 1 ] = sbuf[ 1 ] * fadeScale / 65536; sbuf[ 1 ] = (int16_t)((int64_t)(sbuf[ 1 ]) * fadeScale / INT_MAX);
sbuf += 2; sbuf += 2;
fadeScale -= fadeStep; fadeScale -= fadeStep;
if (fadeScale <= 0) break; if (fadeScale <= 0) break;