While I was reading through the aacPlus decoder code, I wasn't sure what the following function's usage, is this an implementation of the IMDCT? Or something else? Any help is appreciated. Thanks in advance. /* * * \brief Perform complex-valued inverse modulation of the subband * samples stored in rSubband (real part) and iSubband (imaginary * part) and stores the result in timeOut * */ static void inverseModulation (float *qmfReal, float *qmfImag, HANDLE_SBR_QMF_FILTER_BANK synQmf ) { int i, no_synthesis_channels, M; float r1, i1, r2, i2; no_synthesis_channels = synQmf->no_channels; M = no_synthesis_channels / 2; for (i = synQmf->usb; i < no_synthesis_channels; i++) { qmfReal[i]=qmfImag[i]=0; } cosMod (qmfReal, synQmf); sinMod (qmfImag, synQmf); for (i = 0; i < M; i++) { r1 = qmfReal[i]; i2 = qmfImag[no_synthesis_channels - 1 - i]; r2 = qmfReal[no_synthesis_channels - i - 1]; i1 = qmfImag[i]; qmfReal[i] = (r1 - i1); qmfImag[no_synthesis_channels - 1 - i] = -(r1 + i1); qmfReal[no_synthesis_channels - i - 1] = (r2 - i2); qmfImag[i] = -(r2 + i2); } }
Inverse Modulation?
Started by ●March 9, 2006