[Speex-dev] question about spx_fft

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Tue Apr 17 20:31:39 PDT 2007


> > If that's the case, then you can still benefit by converting the N-point
> > real FFT into an N/2 point complex FFT and an update pass.
> This is what the kiss_fftr function does, right?

Yes.

> > Because the input is real, it means that I(0) and R(N/2) are equal to
>                                                        I think you mean
> I(R/2), correct?

right.

> > Sure, use the right ordering (and be careful with scaling!) and it'll
> work.
>
> In the FIX_POINT version of the spx_fft function, where is the actual code
> that do
> the forward FFT normaliaztion by 1/N? I saw the code first maxmize the input
> before the FFT and renormalize it back afterwards. Isn't this making the
> signal bigger
> and easy to overflow? If I am not mistaking, the input to the kiss_fft is
> the 2's complement
> value.

The normalisation by 1/N is done progressively in each stage of kiss_fft.
There's also a normalisation stage in fftwrap.c that just makes sure to keep
the maximum accuracy.

> I use the Xilinx Logicore FFT IP which also supports the 16bit fixed point
> FFT and it
> has some internal scaling for each stage. Do I need to match the same
> scaling of 1/N
> in the software code?

Yes, you need to make sure that the scaling is the same.

    Jean-Marc

> >        Jean-Marc
> >
> >
>





More information about the Speex-dev mailing list