Changelog
4.0.0 - 2022-07-15
New, additional LERC API functions *_4D(). Main reason for this upgrade is to support special cases of void or invalid data not supported yet. For 3D or 4D data with an array of values per pixel, and some of such values valid and others invalid, the new functions allow to pass one noData value per band to represent such "mixed cases". There is no change to the valid / invalid byte masks that mark each pixel as valid or invalid. There can be one mask per band, one mask for all bands, or no mask. For more details see the Readme.md, Lerc_c_api.h, and Lerc_ByteStream_Specification.pdf, in increasing level of detail. Main.cpp has some sample calls.
New lossless compression for data types float and double.
Support for large integers > 32 bit up to 53 bit. Pass them as double.
Renamed nDim to nDepth, the size of the array per pixel.
New #define ENCODE_VERIFY in Defines.h. If enabled, Lerc, as an added last step in encode, will decode the compressed blob again and compare it against the input data.
Using Emscripten, we compiled the Lerc C++ code into web assembly, resulting in a new JS Lerc decoder. From now on, updates to the Lerc C++ code will be converted to JS automatically.
Added a new function to the LERC API called 'lerc_getDataRanges(...)'. It allows fast access to the data ranges in a compressed Lerc blob without having to decode it. It returns 2 double arrays with the minimum and maximum values per band and depth.