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

Deprecated ippiFFTFree_C_32fc

Andrew_Rice
Beginner
1,710 Views

Hi,

ippiFFTFree_C_32fc is now deprecated but we can still use ippiFFTInitAlloc_C_32fc to allocate memory. If we use ippiFFTInitAlloc_C_32fc what do we call to free the memory?

Thanks,

Andy

0 Kudos
6 Replies
Igor_A_Intel
Employee
1,710 Views

Hi Andy,

InitAlloc is also deprecated:

IPP_DEPRECATED("is deprecated. This function is obsolete and will be removed in one of the future IPP releases. Use the following link for details: http://software.intel.com/en-us/articles/intel-ipp-71-deprecated-features/")\
IPPAPI (IppStatus, ippiFFTInitAlloc_C_32fc,
                   ( IppiFFTSpec_C_32fc** pFFTSpec,
                     int orderX, int orderY, int flag, IppHintAlgorithm hint ))

the recommendation is to use GetSize+Init pair and allocate required memory buffers at your side.

regards, Igor

0 Kudos
Andrew_Rice
Beginner
1,710 Views

Hi Igor,

According the the link you sent and the documentation ippiFFTInitAlloc_C_32fc isn't deprecated only the integer version is ippiFFTInitAlloc_R_32s. This is confusing me!

Regarding your workaround, I can see  ippiFFTGetBufSize can be used for calculating the buffer size but how do I initialize the IppiFFTSpec_R_32f structure?

Thanks,

Andy

0 Kudos
Chao_Y_Intel
Moderator
1,710 Views

Andy,

It can call  ippsFFTInit_R_32f function to init the structure.  Check some more example here:
http://software.intel.com/en-us/articles/how-to-use-intel-ipp-s-1d-fourier-transform-functions

Thanks,
Chao

0 Kudos
Andrew_Rice
Beginner
1,710 Views

Hi,

I'm sorry, this isn't making sense to me. We need to use the ippiFFTFwd not the ippsFFTFwd because we are doing an FFT on image data. The ippiFFTFwd functions take an IppiFFTSpec_C_32fc so we can't use ippsFFTInit_R_32f because this takes an IppsFFTSpec_C_32fc.

The code we currently have is this:

IppiFFTSpec_C_32fc *spec = NULL;

ippiFFTInitAlloc_C_32fc(&spec, orderX, orderY, IPP_FFT_DIV_FWD_BY_N, ippAlgHintAccurate);

ippiFFTFwd_CToC_32fc_C1IR(complexBuffer, width * sizeof(Ipp32fc), spec, 0);

ippiFFTFree_C_32fc(spec);

We have fixed the ippiFFTFwd_CToC_32fc_C1IR call to not use the inplace version. But it also says when we compile that ippiFFTFree_C_32fc is deprecated but ippiFFTInitAlloc_C_32fc isn't. 

Can you please tell me exactly what calls to replace the above 4 lines with that aren't deprecated?

Thanks,

Andy

0 Kudos
SergeyKostrov
Valued Contributor II
1,710 Views
>>...Can you please tell me exactly what calls to replace the above 4 lines with that aren't deprecated? Even if some IPP functions are marked as Deprecated they are Not removed yet. You could provide a feedback at: . http://software.intel.com/sites/products/ipp-deprecated-features-feedback
0 Kudos
Igor_A_Intel
Employee
1,710 Views

Hi Andy,

you haven't mentioned which IPP version you use. I've taken a look at 8.0 headers - both InitAlloc and Free for all FFT flavors are marked as deprecated. The recommendation is the same as well for ippSP as for ippIP - to use GetBufferSize, malloc (ippMalloc) at your side and then to use Init for FFTSpec initialization.

Regards, Igor

0 Kudos
Reply