Skip to content

Commit 2169f64

Browse files
committed
Increase accuracy of QEXT twiddle factors/window
1 parent e1d41b6 commit 2169f64

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

celt/kiss_fft.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,8 +417,8 @@ static void compute_twiddles(kiss_twiddle_cpx *twiddles, int nfft)
417417
for (i=0;i<nfft;++i) {
418418
opus_val32 phase = -i;
419419
#ifdef ENABLE_QEXT
420-
twiddles[i].r = floor(.5+2147483647*cos((2*M_PI/nfft)*phase));
421-
twiddles[i].i = floor(.5+2147483647*sin((2*M_PI/nfft)*phase));
420+
twiddles[i].r = (int)MIN32(2147483647, floor(.5+2147483648*cos((2*M_PI/nfft)*phase)));
421+
twiddles[i].i = (int)MIN32(2147483647, floor(.5+2147483648*sin((2*M_PI/nfft)*phase)));
422422
#else
423423
kf_cexp2(twiddles+i, DIV32(SHL32(phase,17),nfft));
424424
#endif

celt/modes.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ CELTMode *opus_custom_mode_create(opus_int32 Fs, int frame_size, int *error)
380380
#else
381381
# ifdef ENABLE_QEXT
382382
for (i=0;i<mode->overlap;i++)
383-
window[i] = 2147483647*sin(.5*M_PI* sin(.5*M_PI*(i+.5)/mode->overlap) * sin(.5*M_PI*(i+.5)/mode->overlap));
383+
window[i] = MIN32(2147483647, 2147483648*sin(.5*M_PI* sin(.5*M_PI*(i+.5)/mode->overlap) * sin(.5*M_PI*(i+.5)/mode->overlap)));
384384
# else
385385
for (i=0;i<mode->overlap;i++)
386386
window[i] = MIN32(32767,floor(.5+32768.*sin(.5*M_PI* sin(.5*M_PI*(i+.5)/mode->overlap) * sin(.5*M_PI*(i+.5)/mode->overlap))));

0 commit comments

Comments
 (0)