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