Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
6748 Discussions

IPPS FFT Initialization has changed (Headers vs. Documentation)

Sönke_P_1
Beginner
1,040 Views

I don't know when, but obviously did the Initialization of the IPPS FFT functions change.

ippsFFTInitAlloc is no longer available.

The current initialization process using

ippsFFTInit_R_32f,
                   ( IppsFFTSpec_R_32f** ppFFTSpec,
                     int order, int flag, IppHintAlgorithm hint,
                     Ipp8u* pSpec, Ipp8u* pSpecBuffer ))

is not clear and also not documented (the documentation still refers to the deprecated ippsFFTInitAlloc).

Any thoughts? Thanks!

 

0 Kudos
1 Reply
Ying_H_Intel
Employee
1,040 Views

Hi Sonke, 

Thanks a lot for the reports. 

ippsFFTInitAlloc will alloc and init memory internally. The memory are not visible for developers, so IPP  deprecated all of intenal memory related functions, include the FFTInitAlloc in Ver 7.1 and 8.0.   Could you please tell the IPP documention version?  we will try to fix them. 

Regarding how to use the function.  Here is one sample regarding 2D image, ippiFFT,  the steps should be same, please refer it. 

If  there are any issue, please feel free to let us know. 

Thanks

Ying 

 

The code example below demonstrates how to use the ippiFFTGetSize and ippiFFTInit functions.
/// get sizes for required buffers
ippiFFTGetSize_R_32f( orderX, orderY, IPP_FFT_DIV_INV_BY_N, ippAlgHintNone, &sizeSpec, &sizeInit,
&sizeBuffer );
/// allocate memory for required buffers
pMemSpec = (IppiFFTSpec_R_32f*) ippMalloc ( sizeSpec );
if ( sizeInit > 0 )
{
pMemInit = ippMalloc ( sizeInit );
}
if ( sizeBuffer > 0 )
{
pMemBuffer = ippMalloc ( sizeBuffer );
}
/// initialize FFT specification structure
ippiFFTInit_R_32f( orderX, orderY, IPP_FFT_DIV_INV_BY_N, ippAlgHintNone, pMemSpec, pMemInit );
/// free initialization buffer
if ( sizeInit > 0 )
{
ippFree( pMemInit );
}
/// perform forward FFT to put source data to frequency domain
ippiFFTFwd_RToPack_32f_C1R( pSrc, srcStep, pDst, dstStep, pMemSpec, pMemBuffer );
/// ...
/// free buffers
if ( sizeBuffer > 0 )
{
ippFree( pMemBuffer );
}
ippFree( pMemSpec );

 

0 Kudos
Reply