[FFmpeg-devel] [PATCH] NellyMoser audio decoder v2

Loïc Minier lool
Thu Sep 13 16:54:50 CEST 2007


On Thu, Sep 13, 2007, Michael Niedermayer wrote:
> > > > +static void inverse_dft(float *audio)
> > > if this is a standard dft (discrete fourier transform) then please use
> > > the existing code from fft.c 
> > > if its not a dft then please elaborate on what it is
> >  I have no idea what it is; like you, I simply read its name.  I didn't
> >  change it yet.
> well try our fft please :)
> or feed the inverse_dft with an array of all 0 and just the first element 1
> then only the second element 1, then only the third, then only the last and
> post the 4 outputs here and we will maybe be able to tell what it is

 I gave a try with ff_fft_* funcs, but couldn't replace the current code
 for all inputs.  In summary, the audio ouput is almost identical, but
 still noticeably changed.

 I replaced this original code:
    center(aptr);
    inverse_dft(aptr);

 with something like:
    ff_fft_permute(&fftc, (FFTComplex*)aptr);
    ff_fft_calc(&fftc, (FFTComplex*)aptr);
    /* flip sign of imaginary component */
    for (j = 0; j<64; j++) {
        ((FFTComplex*)aptr)[j].im = -((FFTComplex*)aptr)[j].im;
    }

 I attach my test program where I implemented a simple input frequency
 analysis as you suggested, and it proved that the results of the
 original code (center + inverse_dft) is identical to the ffmpeg version
 (ff_fft_permute + ff_fft_calc + flip) for pure real input, but diverges
 for non-zero imaginary input.  If you like to run the test case, you
 can tweak input in init_data().  I also included the reference fft
 implementation from fft-test.c for completeness.

-- 
Lo?c Minier
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fft.c
Type: text/x-csrc
Size: 9125 bytes
Desc: fft.c
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070913/e4985ff3/attachment.c>



More information about the ffmpeg-devel mailing list