areaDetector 3-14
EPICS areaDetector framework
NDPluginCodec.h
Go to the documentation of this file.
1#ifndef NDPluginCodec_H
2#define NDPluginCodec_H
3
4#include "NDPluginDriver.h"
5
6#define NDCodecModeString "MODE" /* (NDCodecMode_t r/w) Mode: Compress/Decompress */
7#define NDCodecCompressorString "COMPRESSOR" /* (NDCodecCompressor_t r/w) Which codec to use */
8#define NDCodecCompFactorString "COMP_FACTOR" /* (double r/o) Compression percentage (0 = no compression) */
9#define NDCodecCodecStatusString "CODEC_STATUS" /* (int r/o) Compression status: success or failure */
10#define NDCodecCodecErrorString "CODEC_ERROR" /* (string r/o) Error message if compression fails */
11#define NDCodecJPEGQualityString "JPEG_QUALITY" /* (int r/w) JPEG Compression quality */
12#define NDCodecBloscCompressorString "BLOSC_COMPRESSOR" /* (NDCodecBloscComp_t r/w) Which Blosc compressor to use */
13#define NDCodecBloscCLevelString "BLOSC_CLEVEL" /* (int r/w) Blosc compression level */
14#define NDCodecBloscShuffleString "BLOSC_SHUFFLE" /* (bool r/w) Should Blosc apply shuffling? */
15#define NDCodecBloscNumThreadsString "BLOSC_NUMTHREADS" /* (int r/w) Number of threads to be used by Blosc */
16#define NDCodecLZ4HDF5BlockSizeString "LZ4HDF5_BLOCKSIZE" /* (int r/w) Block size for lz4hdf5 compression */
17
27
37
43
44
45/*
46 * The [de]compress* functions below take an input array and return a
47 * pool-allocated output array on success or NULL on error. They are
48 * thread-safe.
49 */
50
51NDArray *compressJPEG(NDArray *input, int quality, NDCodecStatus_t *status, char *errorMessage);
52NDArray *decompressJPEG(NDArray *input, NDCodecStatus_t *status, char *errorMessage);
53
54NDArray *compressBlosc(NDArray *input, int clevel, int shuffle, NDCodecBloscComp_t compressor,
55 int numThreads, NDCodecStatus_t *status, char *errorMessage);
56NDArray *decompressBlosc(NDArray *input, int numThreads, NDCodecStatus_t *status, char *errorMessage);
57NDArray *compressLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage);
58NDArray *decompressLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage);
59NDArray *compressLZ4HDF5(NDArray *input, size_t blockSize, NDCodecStatus_t *status, char *errorMessage);
60NDArray *decompressLZ4HDF5(NDArray *input, size_t *blockSize, NDCodecStatus_t *status, char *errorMessage);
61NDArray *compressBSLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage);
62NDArray *decompressBSLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage);
63
64
66public:
67 NDPluginCodec(const char *portName, int queueSize, int blockingCallbacks,
68 const char *NDArrayPort, int NDArrayAddr,
69 int maxBuffers, size_t maxMemory,
70 int priority, int stackSize, int maxThreads);
71
72 /* These methods override the virtual methods in the base class */
73 void processCallbacks(NDArray *pArray);
74 asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
75
76protected:
78 #define FIRST_NDCODEC_PARAM NDCodecMode
89
90};
91
92#endif
#define NDPLUGIN_API
Definition NDPluginAPI.h:41
NDArray * decompressJPEG(NDArray *input, NDCodecStatus_t *status, char *errorMessage)
Definition NDPluginCodec.cpp:338
NDArray * compressBlosc(NDArray *input, int clevel, int shuffle, NDCodecBloscComp_t compressor, int numThreads, NDCodecStatus_t *status, char *errorMessage)
Definition NDPluginCodec.cpp:443
NDArray * decompressBlosc(NDArray *input, int numThreads, NDCodecStatus_t *status, char *errorMessage)
Definition NDPluginCodec.cpp:451
NDArray * compressLZ4HDF5(NDArray *input, size_t blockSize, NDCodecStatus_t *status, char *errorMessage)
Definition NDPluginCodec.cpp:700
NDArray * decompressLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage)
Definition NDPluginCodec.cpp:693
NDArray * compressBSLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage)
Definition NDPluginCodec.cpp:714
NDCodecBloscComp_t
Definition NDPluginCodec.h:28
@ NDCODEC_BLOSC_LZ4
Definition NDPluginCodec.h:30
@ NDCODEC_BLOSC_LZ4HDF5
Definition NDPluginCodec.h:31
@ NDCODEC_BLOSC_BLOSCLZ
Definition NDPluginCodec.h:29
@ NDCODEC_BLOSC_ZLIB
Definition NDPluginCodec.h:34
@ NDCODEC_BLOSC_ZSTD
Definition NDPluginCodec.h:35
@ NDCODEC_BLOSC_LZ4HC
Definition NDPluginCodec.h:32
@ NDCODEC_BLOSC_SNAPPY
Definition NDPluginCodec.h:33
NDCodecMode_t
Compress/decompress NDArrays according to available codecs.
Definition NDPluginCodec.h:23
@ NDCODEC_DECOMPRESS
Definition NDPluginCodec.h:25
@ NDCODEC_COMPRESS
Definition NDPluginCodec.h:24
NDArray * compressLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage)
Definition NDPluginCodec.cpp:686
NDArray * compressJPEG(NDArray *input, int quality, NDCodecStatus_t *status, char *errorMessage)
Definition NDPluginCodec.cpp:332
NDArray * decompressBSLZ4(NDArray *input, NDCodecStatus_t *status, char *errorMessage)
Definition NDPluginCodec.cpp:721
NDArray * decompressLZ4HDF5(NDArray *input, size_t *blockSize, NDCodecStatus_t *status, char *errorMessage)
Definition NDPluginCodec.cpp:707
NDCodecStatus_t
Definition NDPluginCodec.h:38
@ NDCODEC_SUCCESS
Definition NDPluginCodec.h:39
@ NDCODEC_WARNING
Definition NDPluginCodec.h:40
@ NDCODEC_ERROR
Definition NDPluginCodec.h:41
N-dimensional array class; each array has a set of dimensions, a data type, pointer to data,...
Definition NDArray.h:99
Definition NDPluginCodec.h:65
int NDCodecJPEGQuality
Definition NDPluginCodec.h:83
int NDCodecCompFactor
Definition NDPluginCodec.h:80
int NDCodecCodecStatus
Definition NDPluginCodec.h:81
int NDCodecMode
Definition NDPluginCodec.h:77
int NDCodecCodecError
Definition NDPluginCodec.h:82
int NDCodecBloscCLevel
Definition NDPluginCodec.h:85
int NDCodecLZ4HDF5BlockSize
Definition NDPluginCodec.h:88
int NDCodecCompressor
Definition NDPluginCodec.h:79
int NDCodecBloscCompressor
Definition NDPluginCodec.h:84
int NDCodecBloscNumThreads
Definition NDPluginCodec.h:87
int NDCodecBloscShuffle
Definition NDPluginCodec.h:86
Class from which actual plugin drivers are derived; derived from asynNDArrayDriver.
Definition NDPluginDriver.h:57
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
Called when asyn clients call pasynInt32->write().
Definition NDPluginDriver.cpp:678
virtual void processCallbacks(NDArray *pArray)=0