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?
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.
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?
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
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);
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?
>>...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:
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.