Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: MDCT/IMDCT with KBD Window (Read 4545 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

MDCT/IMDCT with KBD Window

I search C/C++ sources for both MDCT encoder and IMDCT decoder with KBD Window. I hear, this KBD window is used in AAC, but is difficult to find sources simultaneously for encoder and decoder. I want  look at function restore overlapping signal after IMDCT.
IN www.fftw.org are DFT algorithms in C (one MDCT is in Ocaml). How prepare MDCT data for calling FFT?

MDCT/IMDCT with KBD Window

Reply #1
Take a look at the libfaad source.

MDCT/IMDCT with KBD Window

Reply #2
Here is:
* Fast (I)MDCT Implementation using (I)FFT ((Inverse) Fast Fourier Transform)
* and consists of three steps: pre-(I)FFT complex multiplication, complex
* (I)FFT, post-(I)FFT complex multiplication,

this mean that function faad_mdct works in both directions? This is only decoder, how use it in encodng?

MDCT/IMDCT with KBD Window

Reply #3
this mean that function faad_mdct works in both directions?

No, there is faad_imdct in mdct.c as well. The actual overlap-add routines are in filtbank.c. The direct MDCT (faad_mdct) is used for LTP decoding.

Quote
This is only decoder, how use it in encodng?

FAAD is the decoder, FAAC is the encoder. If you're interested in encoding, look at the FAAC sources. The MDCT algorithm itself seems to be the same, though.

MDCT/IMDCT with KBD Window

Reply #4
How call LTP decoding?  I open faad\frontend\faad.sln and build;
when I decode file to wav, faad_imdct is called, but how call faad_mdct?
This is for function filter_bank_ltp: #ifdef LTP_DEC /* only works for LTP -> no overlapping, no short blocks */
In FAAC, in filtbank.c is function MDCT - is the same as faad_mdct ?

void faad_mdct(mdct_info *mdct, real_t *X_in, real_t *X_out)
static void MDCT( FFT_Tables *fft_tables, double *data, int N )