/******************************************************************* h5shzip.c - This example uses the data shuffle filter with deflate compression *******************************************************************/ #include "hdf5.h" #define FILE "shzip.h5" #define RANK 2 int main(void) { hid_t file, grp; hid_t dataset, dataspace; hid_t plist; herr_t status; hsize_t dims[2]; hsize_t cdims[2]; int idx; int i,j; int buf[1000][20]; int rbuf [1000][20]; /* Create a file */ file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); printf ("H5Fcreate returns: %d\n", file); /* Create a group in the file */ grp = H5Gcreate(file, "/Data", 0); printf ("H5Gcreate returns: %d\n", grp); dims[0] = 1000; dims[1] = 20; cdims[0] = 20; cdims[1] = 20; dataspace = H5Screate_simple(RANK, dims, NULL); printf ("H5Screate_simple: %d\n", dataspace); /* Get property list for gzip compression. Specify shuffle filter. */ /* Note that compression and shuffle filter must be used with chunking */ plist = H5Pcreate(H5P_DATASET_CREATE); printf ("H5Pcreate returns: %d\n", plist); status = H5Pset_chunk(plist, 2, cdims); printf ("H5Pset_chunk returns: %d\n", status); status = H5Pset_shuffle (plist); printf ("H5Pset_shuffle returns: %d\n", status); status = H5Pset_deflate( plist, 6); printf ("H5Pset_deflate returns: %d\n", status); /* Create dataset with property list just created */ dataset = H5Dcreate(file, "/Data/Compressed_Data", H5T_STD_I32BE, dataspace, plist); printf ("H5Dcreate returns: %d\n", dataset); for (i = 0; i< dims[0]; i++) { for (j=0; j