- Timestamp:
- Nov 23, 2006 10:19:46 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia-codec/speex/kiss_fft.c
r628 r823 339 339 { 340 340 int p=4; 341 double floor_sqrt;342 floor_sqrt = floor( sqrt((double)n) );343 341 344 342 /*factor out powers of 4, powers of 2, then any remaining primes */ … … 350 348 default: p += 2; break; 351 349 } 352 if (p > floor_sqrt)350 if (p>32000 || (spx_int32_t)p*(spx_int32_t)p > n) 353 351 p = n; /* no more factors, skip to end */ 354 352 } … … 358 356 } while (n > 1); 359 357 } 360 361 358 /* 362 359 * … … 383 380 st->nfft=nfft; 384 381 st->inverse = inverse_fft; 385 382 #ifdef FIXED_POINT 386 383 for (i=0;i<nfft;++i) { 387 const double pi=3.14159265358979323846264338327; 388 double phase = ( -2*pi /nfft ) * i; 389 if (st->inverse) 390 phase *= -1; 391 kf_cexp(st->twiddles+i, phase ); 384 spx_word32_t phase = i; 385 if (!st->inverse) 386 phase = -phase; 387 kf_cexp2(st->twiddles+i, DIV32(SHL32(phase,17),nfft)); 392 388 } 393 389 #else 390 for (i=0;i<nfft;++i) { 391 const double pi=3.14159265358979323846264338327; 392 double phase = ( -2*pi /nfft ) * i; 393 if (st->inverse) 394 phase *= -1; 395 kf_cexp(st->twiddles+i, phase ); 396 } 397 #endif 394 398 kf_factor(nfft,st->factors); 395 399 }
Note: See TracChangeset
for help on using the changeset viewer.