Thanks for post the problem here. It is true that the malloc function is limited with 32 bit "int". The system malloc can be used for large memory allocations. Currently, the image processing function is usingdata type "int" for length/size parameters. It also has the constraints of 32-bit data types. Our engineer team is reviewing therequest to support 64 bit "int", and check what we can improvefor future versions.
To use the IPP function with very large images now, users can first divide the image to chunks. Each chunk can call related IPP functions. Users can provide right pointer to the image chunk first. For example, if we have:
Image size = 50000x50000x4 = 10^10
Max int = 2147483647 = ~2^31
Therefore we need not less than 5 chunks (10^10/2^31 = ~4.7): - lets consider 5:
Chunk1: pSrc1 = pSrcImage; pDst1 = pDstImage; step (both Src & Dst) = 200000; chunk.width = 50000; chunk.height = 10000;
Chunk2: pSrc2 = pSrc1 + step*chunk.height; pDst2 = pDst1 + step*chunk.height; step = 200000; chunk.width = 50000; chunk.height = 10000;
Chunk5: pSrc5 = pSrc4 + step*chunk.height; pDst4 = pDstImage + step*chunk.height; step = 200000; chunk.width = 50000; chunk.height = 10000;
Before calling IPP function, user can calculate right image chuck pointer first, then call related IPP functions. For each chuck data,
"I have checked version 5.3, 6.0 and 6.1 and all have the problem. I have not looked into IPP 7 so far"
Actually, we are working on this problem. This problem has not been solved in 7.0 yet but as we hope this functionality will available the next version.--Gennady