Hi list, I have a 3 bands 21600x21600 jp2K image and I wish to read it as a 21600x5400 (doing a 4:1 subsampling along Y). [I'm using GDAL 1.5.3] When doing this read, the DirectRasterIO method gives this error: "Failed to allocate 1399680000 byte intermediate decompression buffer for jpeg2000."
Debugging the code I have noticed this: Firstly, it looks for a proper number of levels to be discarded to reduce the amount of data to be read. In this case, being a request of 1:1 along X, no decomposition levels can be discarded. Then it needs to read the image at its maximum resolution and then do a subsampling on it. This step requires to allocate a buffer where to store original data to be afterwards subsampled. However, depending on the imagesize, this preallocation (with VSIMalloc) may fail on very big images (my case). Is there a solution for this problem? - I have noticed that using GDAL_FORCE_CACHING will use the block based read method (IReadBlock) which doesn't use that section of code. - Maybe, when working on big images, splitting the read in several kdu_stripe_decompressor.pull_stripe calls (with stripeHeights < imageHeight) on a reduced buffer to be subsampled for each iteration, could be a solution. Any suggestions? Thank you very much. Regards, Daniele -- ------------------------------------------------------- Eng. Daniele Romagnoli Software Engineer GeoSolutions S.A.S. Via Carignoni 51 55041 Camaiore (LU) Italy phone: +39 0584983027 fax: +39 0584983027 mob: +39 328 0559267 http://www.geo-solutions.it -------------------------------------------------------
_______________________________________________ gdal-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/gdal-dev
