20#include "ncdispatch.h"
21#include "nc4internal.h"
25#include "hdf5internal.h"
28#ifdef NETCDF_ENABLE_NCZARR
32static void byteswap8(
unsigned char*);
33static void byteswap4(
unsigned char*);
65 int stat = NC_check_id(ncid,&ncp);
68 if((stat = ncp->dispatch->inq_var_filter_ids(ncid,varid,nfiltersp,ids)))
goto done;
101 int stat = NC_check_id(ncid,&ncp);
104 if((stat = ncp->dispatch->inq_var_filter_info(ncid,varid,
id,nparamsp,params)))
goto done;
107 if(stat ==
NC_ENOFILTER) nclog(NCLOGWARN,
"Undefined filter: %u",(
unsigned)
id);
129nc_def_var_filter(
int ncid,
int varid,
unsigned int id,
size_t nparams,
const unsigned int* params)
135 if((stat = NC_check_id(ncid,&ncp)))
return stat;
136 if((stat = ncp->dispatch->def_var_filter(ncid,varid,
id,nparams,params)))
goto done;
138 if(stat ==
NC_ENOFILTER) nclog(NCLOGWARN,
"Undefined filter: %u",(
unsigned)
id);
170nc_inq_var_filter(
int ncid,
int varid,
unsigned int* idp,
size_t* nparamsp,
unsigned int* params)
174 unsigned int* ids = NULL;
175 int stat = NC_check_id(ncid,&ncp);
188 if((ids = calloc(
sizeof(
unsigned int),nfilters)) == NULL) {stat =
NC_ENOMEM;
goto done;}
192 if(idp) *idp = ids[0];
217 stat = NC_check_id(ncid,&ncp);
219 if((stat = ncp->dispatch->inq_filter_avail(ncid,
id)))
goto done;
247 if (level < 1 || level > 9)
249 ulevel = (unsigned) level;
284 if(nparams != 1) {stat =
NC_EFILTER;
goto done;}
287 if(levelp) *levelp = (int)params;
288 if(hasfilterp) *hasfilterp = hasfilter;
317 if (level < -131072 || level > 22)
319 ulevel = (unsigned) level;
358 if(nparams != 1) {stat =
NC_EFILTER;
goto done;}
361 if(levelp) *levelp = (int)params;
362 if(hasfilterp) *hasfilterp = hasfilter;
384nc_def_var_blosc(
int ncid,
int varid,
unsigned subcompressor,
unsigned level,
unsigned blocksize,
unsigned addshuffle)
394 if(addshuffle > (
unsigned)BLOSC_BITSHUFFLE) {stat =
NC_EINVAL;
goto done;}
395 if(subcompressor > (
unsigned)BLOSC_ZSTD) {stat =
NC_EINVAL;
goto done;}
401 params[3] = blocksize;
403 params[5] = addshuffle;
404 params[6] = subcompressor;
435 unsigned* levelp,
unsigned* blocksizep,
unsigned* addshufflep)
451 if(nparams != 7) {stat =
NC_EFILTER;
goto done;}
453 if(blocksizep) *blocksizep = params[3];
454 if(levelp) *levelp = params[4];
455 if(addshufflep) *addshufflep = params[5];
456 if(subcompressorp) *subcompressorp = params[6];
458 if(hasfilterp) *hasfilterp = hasfilter;
int nc_inq_var_blosc(int ncid, int varid, int *hasfilterp, unsigned *subcompressorp, unsigned *levelp, unsigned *blocksizep, unsigned *addshufflep)
Learn whether Blosc compression is on for a variable, and, if so, the settings.
int nc_def_var_zstandard(int ncid, int varid, int level)
Turn on Zstandard compression for a variable.
int nc_inq_var_bzip2(int ncid, int varid, int *hasfilterp, int *levelp)
Learn whether bzip2 compression is on for a variable, and, if so, the level setting.
int nc_def_var_bzip2(int ncid, int varid, int level)
Turn on bzip2 compression for a variable.
EXTERNL int nc_inq_filter_avail(int ncid, unsigned id)
Test if filter is available.
int nc_inq_var_zstandard(int ncid, int varid, int *hasfilterp, int *levelp)
Learn whether Zstandard compression is on for a variable, and, if so, the level setting.
EXTERNL int nc_def_var_filter(int ncid, int varid, unsigned int id, size_t nparams, const unsigned int *params)
Define a new variable filter Assumes HDF5 format using unsigned ints.
int nc_def_var_blosc(int ncid, int varid, unsigned subcompressor, unsigned level, unsigned blocksize, unsigned addshuffle)
Turn on blosc for a variable.
EXTERNL int nc_inq_var_filter_info(int ncid, int varid, unsigned int id, size_t *nparamsp, unsigned int *params)
Find the the param info about filter (if any) associated with a variable and with specified id.
EXTERNL int nc_inq_var_filter(int ncid, int varid, unsigned int *idp, size_t *nparamsp, unsigned int *params)
Find the first filter (if any) associated with a variable.
EXTERNL int nc_inq_var_filter_ids(int ncid, int varid, size_t *nfiltersp, unsigned int *ids)
Find the set of filters (if any) associated with a variable.
Main header file for the C API.
#define NC_EFILTER
Filter operation failed.
#define NC_ENOMEM
Memory allocation (malloc) failure.
#define EXTERNL
Needed for DLL build.
#define NC_EINVAL
Invalid Argument.
#define NC_NOERR
No Error.
#define NC_ENOFILTER
Filter not defined on variable.