diff --git a/ADApp/ADSrc/Makefile b/ADApp/ADSrc/Makefile index 06de0849..0341c53f 100644 --- a/ADApp/ADSrc/Makefile +++ b/ADApp/ADSrc/Makefile @@ -31,7 +31,7 @@ INC += ADCoreVersion.h INC += NDAttribute.h INC += NDAttributeList.h INC += NDArray.h -INC += Codec.h +INC += NDCodec.h INC += PVAttribute.h INC += paramAttribute.h INC += functAttribute.h @@ -44,6 +44,7 @@ LIB_SRCS += NDAttribute.cpp LIB_SRCS += NDAttributeList.cpp LIB_SRCS += NDArrayPool.cpp LIB_SRCS += NDArray.cpp +LIB_SRCS += NDCodec.cpp LIB_SRCS += asynNDArrayDriver.cpp LIB_SRCS += ADDriver.cpp LIB_SRCS += paramAttribute.cpp diff --git a/ADApp/ADSrc/NDArray.h b/ADApp/ADSrc/NDArray.h index 43868b74..6c0207a9 100644 --- a/ADApp/ADSrc/NDArray.h +++ b/ADApp/ADSrc/NDArray.h @@ -20,7 +20,7 @@ #include "NDAttribute.h" #include "NDAttributeList.h" -#include "Codec.h" +#include "NDCodec.h" /** The maximum number of dimensions in an NDArray */ #define ND_ARRAY_MAX_DIMS 10 @@ -132,7 +132,7 @@ class ADCORE_API NDArray { * The data is assumed to be stored in the order of dims[0] changing fastest, and * dims[ndims-1] changing slowest. */ NDAttributeList *pAttributeList; /**< Linked list of attributes */ - Codec_t codec; /**< Definition of codec used to compress the data. */ + NDCodec_t codec; /**< Definition of codec used to compress the data. */ size_t compressedSize; /**< Size of the compressed data. Should be equal to dataSize if pData is uncompressed. */ }; diff --git a/ADApp/ADSrc/NDCodec.cpp b/ADApp/ADSrc/NDCodec.cpp new file mode 100644 index 00000000..7be0efcd --- /dev/null +++ b/ADApp/ADSrc/NDCodec.cpp @@ -0,0 +1,20 @@ +#include "NDCodec.h" + +const std::string NDCodecName[NDCODEC_NUM_CODECS] = { + "", + "jpeg", + "zlib", + "blosc", + "lz4", + "lz4hdf5", + "bslz4" +}; + +const std::string NDCodecBloscCompName[NDCODEC_BLOSC_NUM_COMPRESSORS] = { + "blosclz", + "lz4", + "lz4hc", + "snappy", + "zlib", + "zstd", +}; diff --git a/ADApp/ADSrc/Codec.h b/ADApp/ADSrc/NDCodec.h similarity index 53% rename from ADApp/ADSrc/Codec.h rename to ADApp/ADSrc/NDCodec.h index db54cb49..c5a2f3d4 100644 --- a/ADApp/ADSrc/Codec.h +++ b/ADApp/ADSrc/NDCodec.h @@ -1,17 +1,8 @@ -#ifndef Codec_H -#define Codec_H +#ifndef NDCodec_H +#define NDCodec_H #include - -static std::string codecName[] = { - "", - "jpeg", - "zlib", - "blosc", - "lz4", - "lz4hdf5", - "bslz4" -}; +#include "ADCoreAPI.h" typedef enum { NDCODEC_NONE, @@ -23,28 +14,45 @@ typedef enum { NDCODEC_BSLZ4 } NDCodecCompressor_t; -typedef struct Codec_t { +#define NDCODEC_NUM_CODECS 7 + +extern ADCORE_API const std::string NDCodecName[NDCODEC_NUM_CODECS]; + +typedef enum { + NDCODEC_BLOSC_BLOSCLZ, + NDCODEC_BLOSC_LZ4, + NDCODEC_BLOSC_LZ4HC, + NDCODEC_BLOSC_SNAPPY, + NDCODEC_BLOSC_ZLIB, + NDCODEC_BLOSC_ZSTD +} NDCodecBloscComp_t; + +#define NDCODEC_BLOSC_NUM_COMPRESSORS 6 + +extern ADCORE_API const std::string NDCodecBloscCompName[NDCODEC_BLOSC_NUM_COMPRESSORS]; + +typedef struct NDCodec_t { std::string name; /**< Name of the codec used to compress the data. codecName[NDCODEC_NONE] if uncompressed. */ int level; /**< Compression level. */ int shuffle; /**< Shuffle type. */ int compressor; /**< Compressor type. For codecs that support more than one compressor. */ - Codec_t() { + NDCodec_t() { clear(); } void clear() { - name = codecName[NDCODEC_NONE]; + name = NDCodecName[NDCODEC_NONE]; level = -1; shuffle = -1; compressor = -1; } bool empty() { - return this->name == codecName[NDCODEC_NONE]; + return this->name == NDCodecName[NDCODEC_NONE]; } - bool operator==(const Codec_t& other) { + bool operator==(const NDCodec_t& other) { if (name == other.name && level == other.level && shuffle == other.shuffle && @@ -54,9 +62,9 @@ typedef struct Codec_t { return false; } } - bool operator!=(const Codec_t& other) { + bool operator!=(const NDCodec_t& other) { return ! (*this == other); } -} Codec_t; +} NDCodec_t; -#endif //Codec_H +#endif //NDCodec_H diff --git a/ADApp/pluginSrc/NDFileHDF5.cpp b/ADApp/pluginSrc/NDFileHDF5.cpp index 6a8c04f3..2b4d89b8 100644 --- a/ADApp/pluginSrc/NDFileHDF5.cpp +++ b/ADApp/pluginSrc/NDFileHDF5.cpp @@ -3318,21 +3318,21 @@ asynStatus NDFileHDF5::configureCompression(NDArray *pArray) asynPrint(this->pasynUserSelf, ASYN_TRACE_FLOW, "%s::%s Overriding compression settings from pre-compressed NDArray\n", driverName, functionName); - if (pArray->codec.name == codecName[NDCODEC_BLOSC]) { + if (pArray->codec.name == NDCodecName[NDCODEC_BLOSC]) { setIntegerParam(NDFileHDF5_compressionType, HDF5CompressBlosc); setIntegerParam(NDFileHDF5_bloscCompressLevel, pArray->codec.level); setIntegerParam(NDFileHDF5_bloscShuffleType, pArray->codec.shuffle); setIntegerParam(NDFileHDF5_bloscCompressor, pArray->codec.compressor); - } else if (pArray->codec.name == codecName[NDCODEC_ZLIB]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_ZLIB]) { setIntegerParam(NDFileHDF5_compressionType, HDF5CompressZlib); setIntegerParam(NDFileHDF5_zCompressLevel, pArray->codec.level); - } else if (pArray->codec.name == codecName[NDCODEC_BSLZ4]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_BSLZ4]) { setIntegerParam(NDFileHDF5_compressionType, HDF5CompressBshuf); - } else if (pArray->codec.name == codecName[NDCODEC_LZ4]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_LZ4]) { setIntegerParam(NDFileHDF5_compressionType, HDF5CompressLZ4); - } else if (pArray->codec.name == codecName[NDCODEC_LZ4HDF5]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_LZ4HDF5]) { setIntegerParam(NDFileHDF5_compressionType, HDF5CompressLZ4HDF5); - } else if (pArray->codec.name == codecName[NDCODEC_JPEG]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_JPEG]) { setIntegerParam(NDFileHDF5_compressionType, HDF5CompressJPEG); } } @@ -3384,7 +3384,7 @@ asynStatus NDFileHDF5::configureCompression(NDArray *pArray) "%s::%s Setting zlib compression filter level=%d\n", driverName, functionName, zLevel); H5Pset_deflate(this->cparms, zLevel); - this->codec.name = codecName[NDCODEC_ZLIB]; + this->codec.name = NDCodecName[NDCODEC_ZLIB]; this->codec.level = zLevel; break; case HDF5CompressBlosc: { @@ -3401,7 +3401,7 @@ asynStatus NDFileHDF5::configureCompression(NDArray *pArray) asynPrint(this->pasynUserSelf, ASYN_TRACE_ERROR, "Failed to set h5 blosc filter\n"); break; } - this->codec.name = codecName[NDCODEC_BLOSC]; + this->codec.name = NDCodecName[NDCODEC_BLOSC]; this->codec.level = bloscLevel; this->codec.shuffle = bloscShuffle; this->codec.compressor = bloscCompressor; @@ -3416,7 +3416,7 @@ asynStatus NDFileHDF5::configureCompression(NDArray *pArray) asynPrint(this->pasynUserSelf, ASYN_TRACE_ERROR, "Failed to set h5 bitshuffle filter\n"); break; } - this->codec.name = codecName[NDCODEC_BSLZ4]; + this->codec.name = NDCodecName[NDCODEC_BSLZ4]; } break; case HDF5CompressLZ4: @@ -3430,9 +3430,9 @@ asynStatus NDFileHDF5::configureCompression(NDArray *pArray) break; } if (compressionScheme == HDF5CompressLZ4) { - this->codec.name = codecName[NDCODEC_LZ4]; + this->codec.name = NDCodecName[NDCODEC_LZ4]; } else { - this->codec.name = codecName[NDCODEC_LZ4HDF5]; + this->codec.name = NDCodecName[NDCODEC_LZ4HDF5]; } } break; @@ -3461,7 +3461,7 @@ asynStatus NDFileHDF5::configureCompression(NDArray *pArray) asynPrint(this->pasynUserSelf, ASYN_TRACE_ERROR, "Failed to set h5 jpeg filter\n"); break; } - this->codec.name = codecName[NDCODEC_JPEG]; + this->codec.name = NDCodecName[NDCODEC_JPEG]; } break; } diff --git a/ADApp/pluginSrc/NDFileHDF5.h b/ADApp/pluginSrc/NDFileHDF5.h index 4e64a68c..96b7290c 100644 --- a/ADApp/pluginSrc/NDFileHDF5.h +++ b/ADApp/pluginSrc/NDFileHDF5.h @@ -17,7 +17,7 @@ #include "NDFileHDF5LayoutXML.h" #include "NDFileHDF5AttributeDataset.h" #include "NDFileHDF5VersionCheck.h" -#include "Codec.h" +#include "NDCodec.h" #define MAXEXTRADIMS 10 #define MAX_CHUNK_DIMS ND_ARRAY_MAX_DIMS @@ -127,7 +127,7 @@ class NDPLUGIN_API NDFileHDF5 : public NDPluginFile std::string ndDsetName; // Name of NDAttribute that specifies the destination data set std::map onOpenMap; // Map of handles to elements with onOpen ndattributes, indexed by fullname std::map onCloseMap; // Map of handles to elements with onClose ndattributes, indexed by fullname - Codec_t codec; // Definition of codec used to compress the data. + NDCodec_t codec; // Definition of codec used to compress the data. protected: /* plugin parameters */ diff --git a/ADApp/pluginSrc/NDFileHDF5Dataset.cpp b/ADApp/pluginSrc/NDFileHDF5Dataset.cpp index 3d677142..f8a4a943 100644 --- a/ADApp/pluginSrc/NDFileHDF5Dataset.cpp +++ b/ADApp/pluginSrc/NDFileHDF5Dataset.cpp @@ -236,7 +236,7 @@ asynStatus NDFileHDF5Dataset::verifyChunking(NDArray *pArray) * Store codec definition * \param[in] codec - Codec definition. */ -void NDFileHDF5Dataset::configureCompression(Codec_t codec) +void NDFileHDF5Dataset::configureCompression(NDCodec_t codec) { this->codec = codec; } @@ -296,7 +296,7 @@ asynStatus NDFileHDF5Dataset::writeFile(NDArray *pArray, hid_t datatype, hid_t d if (pArray->codec.empty()) { size = info.totalBytes; } - else if (pArray->codec.name == codecName[NDCODEC_LZ4]) { + else if (pArray->codec.name == NDCodecName[NDCODEC_LZ4]) { // We need to add a 16-byte header to the lz4 compressed data temp = (char *)malloc(16 + size); // First 8 bytes is the uncompressed array size @@ -313,7 +313,7 @@ asynStatus NDFileHDF5Dataset::writeFile(NDArray *pArray, hid_t datatype, hid_t d pData = temp; size += 16; } - else if (pArray->codec.name == codecName[NDCODEC_BSLZ4]) { + else if (pArray->codec.name == NDCodecName[NDCODEC_BSLZ4]) { // We need to add a 12-byte header to the bs/lz4 compressed data temp = (char *)malloc(12 + size); // First 8 bytes is the uncompressed array size diff --git a/ADApp/pluginSrc/NDFileHDF5Dataset.h b/ADApp/pluginSrc/NDFileHDF5Dataset.h index 9b6eba96..a282dcd5 100644 --- a/ADApp/pluginSrc/NDFileHDF5Dataset.h +++ b/ADApp/pluginSrc/NDFileHDF5Dataset.h @@ -19,7 +19,7 @@ class NDPLUGIN_API NDFileHDF5Dataset asynStatus extendDataSet(int extradims); asynStatus extendDataSet(int extradims, hsize_t *offsets); asynStatus verifyChunking(NDArray *pArray); - void configureCompression(Codec_t codec); + void configureCompression(NDCodec_t codec); asynStatus writeFile(NDArray *pArray, hid_t datatype, hid_t dataspace, hsize_t *framesize); hid_t getHandle(); asynStatus flushDataset(); @@ -44,7 +44,7 @@ class NDPLUGIN_API NDFileHDF5Dataset // 0 offset but additional dimensions may grow as new frames are added. hsize_t *virtualdims_; // The desired sizes of the extra (virtual) dimensions: {Y, X, n} hsize_t *virtualchunkdims_; // The chunk sizes of the extra (virtual) dimensions: {Y, X, n} - Codec_t codec; // Definition of codec used to compress the data. + NDCodec_t codec; // Definition of codec used to compress the data. }; diff --git a/ADApp/pluginSrc/NDPluginCodec.cpp b/ADApp/pluginSrc/NDPluginCodec.cpp index 75b3abcb..7427e855 100644 --- a/ADApp/pluginSrc/NDPluginCodec.cpp +++ b/ADApp/pluginSrc/NDPluginCodec.cpp @@ -45,7 +45,7 @@ #include -#include "Codec.h" +#include "NDCodec.h" #include "NDPluginCodec.h" #include @@ -253,7 +253,7 @@ NDArray *compressJPEG(NDArray *input, int quality, NDCodecStatus_t *status, char return NULL; } - output->codec.name = codecName[NDCODEC_JPEG]; + output->codec.name = NDCodecName[NDCODEC_JPEG]; output->compressedSize = outSize; return output; @@ -273,9 +273,9 @@ NDArray *compressJPEG(NDArray *input, int quality, NDCodecStatus_t *status, char NDArray *decompressJPEG(NDArray *input, NDCodecStatus_t *status, char *errorMessage) { // Sanity check - if (input->codec.name != codecName[NDCODEC_JPEG]) { + if (input->codec.name != NDCodecName[NDCODEC_JPEG]) { sprintf(errorMessage, "Invalid codec '%s', expected '%s'", - input->codec.name.c_str(), codecName[NDCODEC_JPEG].c_str()); + input->codec.name.c_str(), NDCodecName[NDCODEC_JPEG].c_str()); *status = NDCODEC_ERROR; return NULL; } @@ -379,7 +379,7 @@ NDArray *compressZlib(NDArray *input, int clevel, NDCodecStatus_t *status, char return NULL; } - output->codec.name = codecName[NDCODEC_ZLIB]; + output->codec.name = NDCodecName[NDCODEC_ZLIB]; output->codec.level = clevel; output->compressedSize = (size_t)destLen; @@ -388,9 +388,9 @@ NDArray *compressZlib(NDArray *input, int clevel, NDCodecStatus_t *status, char NDArray *decompressZlib(NDArray *input, NDCodecStatus_t *status, char *errorMessage) { - if (input->codec.name != codecName[NDCODEC_ZLIB]) { + if (input->codec.name != NDCodecName[NDCODEC_ZLIB]) { sprintf(errorMessage, "Invalid codec '%s', expected '%s'", - input->codec.name.c_str(), codecName[NDCODEC_ZLIB].c_str()); + input->codec.name.c_str(), NDCodecName[NDCODEC_ZLIB].c_str()); *status = NDCODEC_ERROR; return NULL; } @@ -443,15 +443,6 @@ NDArray *decompressZlib(NDArray*, NDCodecStatus_t *status, char *errorMessage) #ifdef HAVE_BLOSC #include -static const char* bloscCompName[] = { - "blosclz", - "lz4", - "lz4hc", - "snappy", - "zlib", - "zstd", -}; - NDArray *compressBlosc(NDArray *input, int clevel, int shuffle, NDCodecBloscComp_t compressor, int numThreads, NDCodecStatus_t *status, char *errorMessage) { @@ -461,7 +452,7 @@ NDArray *compressBlosc(NDArray *input, int clevel, int shuffle, NDCodecBloscComp return NULL; } - const char *compname = bloscCompName[compressor]; + const char *compname = NDCodecBloscCompName[compressor].c_str(); if (blosc_compname_to_compcode(compname) < 0) { sprintf(errorMessage, "Unsupported Blosc compressor %s", compname); @@ -493,7 +484,7 @@ NDArray *compressBlosc(NDArray *input, int clevel, int shuffle, NDCodecBloscComp return NULL; } - output->codec.name = codecName[NDCODEC_BLOSC]; + output->codec.name = NDCodecName[NDCODEC_BLOSC]; output->codec.level = clevel; output->codec.shuffle = shuffle; output->codec.compressor = compressor; @@ -505,9 +496,9 @@ NDArray *compressBlosc(NDArray *input, int clevel, int shuffle, NDCodecBloscComp NDArray *decompressBlosc(NDArray *input, int numThreads, NDCodecStatus_t *status, char *errorMessage) { // Sanity check - if (input->codec.name != codecName[NDCODEC_BLOSC]) { + if (input->codec.name != NDCodecName[NDCODEC_BLOSC]) { sprintf(errorMessage, "Invalid codec '%s', expected '%s'", - input->codec.name.c_str(), codecName[NDCODEC_BLOSC].c_str()); + input->codec.name.c_str(), NDCodecName[NDCODEC_BLOSC].c_str()); *status = NDCODEC_ERROR; return NULL; } @@ -587,7 +578,7 @@ NDArray *compressLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage return NULL; } - output->codec.name = codecName[NDCODEC_LZ4]; + output->codec.name = NDCodecName[NDCODEC_LZ4]; output->compressedSize = compSize; return output; @@ -597,9 +588,9 @@ NDArray *compressLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage NDArray *decompressLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage) { // Sanity check - if (input->codec.name != codecName[NDCODEC_LZ4]) { + if (input->codec.name != NDCodecName[NDCODEC_LZ4]) { sprintf(errorMessage, "Invalid codec '%s', expected '%s'", - input->codec.name.c_str(), codecName[NDCODEC_LZ4].c_str()); + input->codec.name.c_str(), NDCodecName[NDCODEC_LZ4].c_str()); *status = NDCODEC_ERROR; return NULL; } @@ -660,7 +651,7 @@ NDArray *compressLZ4HDF5(NDArray *input, size_t blockSize, NDCodecStatus_t *stat return NULL; } - output->codec.name = codecName[NDCODEC_LZ4HDF5]; + output->codec.name = NDCodecName[NDCODEC_LZ4HDF5]; output->compressedSize = compSize; return output; @@ -670,9 +661,9 @@ NDArray *compressLZ4HDF5(NDArray *input, size_t blockSize, NDCodecStatus_t *stat NDArray *decompressLZ4HDF5(NDArray *input, size_t *blockSize, NDCodecStatus_t *status, char *errorMessage) { // Sanity check - if (input->codec.name != codecName[NDCODEC_LZ4HDF5]) { + if (input->codec.name != NDCodecName[NDCODEC_LZ4HDF5]) { sprintf(errorMessage, "Invalid codec '%s', expected '%s'", - input->codec.name.c_str(), codecName[NDCODEC_LZ4HDF5].c_str()); + input->codec.name.c_str(), NDCodecName[NDCODEC_LZ4HDF5].c_str()); *status = NDCODEC_ERROR; return NULL; } @@ -734,7 +725,7 @@ NDArray *compressBSLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessa return NULL; } - output->codec.name = codecName[NDCODEC_BSLZ4]; + output->codec.name = NDCodecName[NDCODEC_BSLZ4]; output->compressedSize = (size_t)compSize; return output; @@ -744,9 +735,9 @@ NDArray *compressBSLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessa NDArray *decompressBSLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage) { // Sanity check - if (input->codec.name != codecName[NDCODEC_BSLZ4]) { + if (input->codec.name != NDCodecName[NDCODEC_BSLZ4]) { sprintf(errorMessage, "Invalid codec '%s', expected '%s'", - input->codec.name.c_str(), codecName[NDCODEC_BSLZ4].c_str()); + input->codec.name.c_str(), NDCodecName[NDCODEC_BSLZ4].c_str()); *status = NDCODEC_ERROR; return NULL; } @@ -938,17 +929,17 @@ void NDPluginCodec::processCallbacks(NDArray *pArray) if (pArray->codec.empty()) { result = pArray; setIntegerParam(NDCodecCompressor, NDCODEC_NONE); - } else if (pArray->codec.name == codecName[NDCODEC_JPEG]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_JPEG]) { unlock(); result = decompressJPEG(pArray, &codecStatus, errorMessage); lock(); setIntegerParam(NDCodecCompressor, NDCODEC_JPEG); - } else if (pArray->codec.name == codecName[NDCODEC_ZLIB]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_ZLIB]) { unlock(); result = decompressZlib(pArray, &codecStatus, errorMessage); lock(); setIntegerParam(NDCodecCompressor, NDCODEC_ZLIB); - } else if (pArray->codec.name == codecName[NDCODEC_BLOSC]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_BLOSC]) { int numThreads; getIntegerParam(NDCodecBloscNumThreads, &numThreads); @@ -956,19 +947,19 @@ void NDPluginCodec::processCallbacks(NDArray *pArray) result = decompressBlosc(pArray, numThreads, &codecStatus, errorMessage); lock(); setIntegerParam(NDCodecCompressor, NDCODEC_BLOSC); - } else if (pArray->codec.name == codecName[NDCODEC_LZ4]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_LZ4]) { unlock(); result = decompressLZ4(pArray, &codecStatus, errorMessage); lock(); setIntegerParam(NDCodecCompressor, NDCODEC_LZ4); - } else if (pArray->codec.name == codecName[NDCODEC_LZ4HDF5]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_LZ4HDF5]) { size_t blockSize; unlock(); result = decompressLZ4HDF5(pArray, &blockSize, &codecStatus, errorMessage); lock(); setIntegerParam(NDCodecLZ4HDF5BlockSize, (int) blockSize); setIntegerParam(NDCodecCompressor, NDCODEC_LZ4HDF5); - } else if (pArray->codec.name == codecName[NDCODEC_BSLZ4]) { + } else if (pArray->codec.name == NDCodecName[NDCODEC_BSLZ4]) { unlock(); result = decompressBSLZ4(pArray, &codecStatus, errorMessage); lock(); diff --git a/ADApp/pluginSrc/NDPluginCodec.h b/ADApp/pluginSrc/NDPluginCodec.h index 0682a411..91618954 100644 --- a/ADApp/pluginSrc/NDPluginCodec.h +++ b/ADApp/pluginSrc/NDPluginCodec.h @@ -26,15 +26,6 @@ typedef enum { NDCODEC_DECOMPRESS, }NDCodecMode_t; -typedef enum { - NDCODEC_BLOSC_BLOSCLZ, - NDCODEC_BLOSC_LZ4, - NDCODEC_BLOSC_LZ4HDF5, - NDCODEC_BLOSC_LZ4HC, - NDCODEC_BLOSC_SNAPPY, - NDCODEC_BLOSC_ZLIB, - NDCODEC_BLOSC_ZSTD, -}NDCodecBloscComp_t; typedef enum { NDCODEC_SUCCESS, diff --git a/ADApp/pluginTests/test_NDPluginCodec.cpp b/ADApp/pluginTests/test_NDPluginCodec.cpp index 6981812a..8b092d9a 100644 --- a/ADApp/pluginTests/test_NDPluginCodec.cpp +++ b/ADApp/pluginTests/test_NDPluginCodec.cpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include "testingutilities.h" @@ -135,7 +135,7 @@ BOOST_AUTO_TEST_CASE(test_jpeg_compress_decompress) BOOST_REQUIRE_EQUAL(ds->arrays.size(), (size_t)1); NDArray *compressed = ds->arrays[0]; - BOOST_CHECK_EQUAL(compressed->codec.name, codecName[NDCODEC_JPEG]); + BOOST_CHECK_EQUAL(compressed->codec.name, NDCodecName[NDCODEC_JPEG]); BOOST_CHECK(compressed->compressedSize > 0); BOOST_CHECK(compressed->compressedSize <= compressed->dataSize); @@ -172,7 +172,7 @@ BOOST_AUTO_TEST_CASE(test_zlib_compress_decompress) BOOST_REQUIRE_EQUAL(ds->arrays.size(), (size_t)1); NDArray *compressed = ds->arrays[0]; - BOOST_CHECK_EQUAL(compressed->codec.name, codecName[NDCODEC_ZLIB]); + BOOST_CHECK_EQUAL(compressed->codec.name, NDCodecName[NDCODEC_ZLIB]); BOOST_CHECK(compressed->compressedSize > 0); BOOST_CHECK(compressed->compressedSize <= compressed->dataSize); @@ -204,7 +204,7 @@ BOOST_AUTO_TEST_CASE(test_zlib_compression_levels) BOOST_REQUIRE_EQUAL(ds->arrays.size(), (size_t)1); NDArray *compressed = ds->arrays[0]; - BOOST_CHECK_EQUAL(compressed->codec.name, codecName[NDCODEC_ZLIB]); + BOOST_CHECK_EQUAL(compressed->codec.name, NDCodecName[NDCODEC_ZLIB]); codec->write(NDCodecModeString, NDCODEC_DECOMPRESS); ds->arrays.clear(); @@ -237,7 +237,7 @@ BOOST_AUTO_TEST_CASE(test_blosc_compress_decompress) BOOST_REQUIRE_EQUAL(ds->arrays.size(), (size_t)1); NDArray *compressed = ds->arrays[0]; - BOOST_CHECK_EQUAL(compressed->codec.name, codecName[NDCODEC_BLOSC]); + BOOST_CHECK_EQUAL(compressed->codec.name, NDCodecName[NDCODEC_BLOSC]); BOOST_CHECK(compressed->compressedSize > 0); /* Decompress */ @@ -261,6 +261,7 @@ BOOST_AUTO_TEST_CASE(test_blosc_compressors) NDCODEC_BLOSC_LZ4, NDCODEC_BLOSC_LZ4HC, NDCODEC_BLOSC_ZLIB, + NDCODEC_BLOSC_ZSTD, }; int nCompressors = sizeof(compressors) / sizeof(compressors[0]); @@ -279,7 +280,8 @@ BOOST_AUTO_TEST_CASE(test_blosc_compressors) BOOST_REQUIRE_EQUAL(ds->arrays.size(), (size_t)1); NDArray *compressed = ds->arrays[0]; - BOOST_CHECK_EQUAL(compressed->codec.name, codecName[NDCODEC_BLOSC]); + BOOST_CHECK_EQUAL(compressed->codec.name, NDCodecName[NDCODEC_BLOSC]); + BOOST_CHECK_EQUAL(compressed->codec.compressor, compressors[c]); codec->write(NDCodecModeString, NDCODEC_DECOMPRESS); ds->arrays.clear(); @@ -308,7 +310,7 @@ BOOST_AUTO_TEST_CASE(test_lz4_compress_decompress) BOOST_REQUIRE_EQUAL(ds->arrays.size(), (size_t)1); NDArray *compressed = ds->arrays[0]; - BOOST_CHECK_EQUAL(compressed->codec.name, codecName[NDCODEC_LZ4]); + BOOST_CHECK_EQUAL(compressed->codec.name, NDCodecName[NDCODEC_LZ4]); BOOST_CHECK(compressed->compressedSize > 0); /* Decompress */ @@ -338,7 +340,7 @@ BOOST_AUTO_TEST_CASE(test_lz4hdf5_compress_decompress) BOOST_REQUIRE_EQUAL(ds->arrays.size(), (size_t)1); NDArray *compressed = ds->arrays[0]; - BOOST_CHECK_EQUAL(compressed->codec.name, codecName[NDCODEC_LZ4HDF5]); + BOOST_CHECK_EQUAL(compressed->codec.name, NDCodecName[NDCODEC_LZ4HDF5]); BOOST_CHECK(compressed->compressedSize > 0); /* Decompress */ @@ -367,7 +369,7 @@ BOOST_AUTO_TEST_CASE(test_bslz4_compress_decompress) BOOST_REQUIRE_EQUAL(ds->arrays.size(), (size_t)1); NDArray *compressed = ds->arrays[0]; - BOOST_CHECK_EQUAL(compressed->codec.name, codecName[NDCODEC_BSLZ4]); + BOOST_CHECK_EQUAL(compressed->codec.name, NDCodecName[NDCODEC_BSLZ4]); BOOST_CHECK(compressed->compressedSize > 0); /* Decompress */ @@ -388,7 +390,7 @@ BOOST_AUTO_TEST_CASE(test_bslz4_compress_decompress) BOOST_AUTO_TEST_CASE(test_double_compress_warning) { NDArray *input = createTestArray(); - input->codec.name = codecName[NDCODEC_ZLIB]; + input->codec.name = NDCodecName[NDCODEC_ZLIB]; input->compressedSize = 10; codec->write(NDCodecModeString, NDCODEC_COMPRESS);