/** * @brief allocate temp space, TempR and TempI. * * @param maxWidth max FFT length * @param maxHeight max FFT lines * @return int */ intinit(int maxWidth, int maxHeight);
/** * @brief attach FFT finish interrupt to EDMA channel and enable EDMA interrupt * user should setup a Hwi for the event * * @param coreId core ID * @return int */ intHwInit(int coreId);
/** * @brief do FFT and transpose. * source data is central symmetry real data * pSrc and pDst can point to the same space * using m_pTempR as input imag data and output imag data * * @param pSrc input only real part data * @param pDst output only real part data * @param nLen FFT points * @param nRows number of rows * @return int */ intFFT_R2R_T(float *pSrc, float *pDst, int nLen, int nRows);
/** * @brief do FFT and transpose * source data is half size of dst data(dst data is complex) * when pSrc and pDst is same, carefully check if source data space is large enough * * @param pSrc input only real part data * @param pDst output real part and imaginary part data, cross storeage stratagy * @param nLen FFT points * @param nRows number of rows * @return int */ intFFT_R2C_T(float *pSrc, float *pDst, int nLen, int nRows);
/** * @brief do FFT and transpose * real is in high address, imag is in low address * [imag, real, imag, real , ...] * * @param pSrc * @param pDst * @param nLen FFT points * @param nRows number of rows * @return int */ intFFT_C2C_T(float *pSrc, float *pDst, int nLen, int nRows);
/** * @brief do FFT and transpose normal mode * real is in low address, imag is in high address * [real, imag, real, imag , ...] * * @param pSrc * @param pDst * @param nLen FFT points * @param nRows number of rows * @return int */ intFFT_C2C_TN(float *pSrc, float *pDst, int nLen, int nRows);
intIFFT_C2C_T(float *pSrc, float *pDst, int nLen, int nRows); intIFFT_C2R_T(float *pSrc, float *pDst, int nLen, int nRows);