summaryrefslogtreecommitdiffstats
path: root/src/H5Pdcpl.c
diff options
context:
space:
mode:
authorMuQun Yang <ymuqun@hdfgroup.org>2003-04-01 15:39:48 (GMT)
committerMuQun Yang <ymuqun@hdfgroup.org>2003-04-01 15:39:48 (GMT)
commitf94431ce1f10d796268767121cd85269b7c0f094 (patch)
tree01edce5f7fe3e3977f5aa86aeddd36e481b61caf /src/H5Pdcpl.c
parent646ac3850720155ced3851cf0c5ecf52a72857c4 (diff)
downloadhdf5-f94431ce1f10d796268767121cd85269b7c0f094.zip
hdf5-f94431ce1f10d796268767121cd85269b7c0f094.tar.gz
hdf5-f94431ce1f10d796268767121cd85269b7c0f094.tar.bz2
[svn-r6551] Purpose:
To support szip compression in HDF5 Description: szip compression support is required by NASA ESDIS. The compression algorithm is good for scientific data. In HDF5, we add another filter function to make szip as a default compression package as we did for gzip(or zlib). In this check-in, a new function called H5Pset_szip was added into H5Pdcpl.c, this function is very similar to H5Pset_deflate. The only difference is SZIP needs four parameters from the user to get the compression done while gzip needs only one. So we pass a pointer to this function instead of an integer number. The description of the four parameters of szip should be in different documents. H5Z.c and other header files were simply modified to have HDF5 know szip. Solution: See the decription Platforms tested: Since there are changes of configure.in and configure,I didn't use h5committest. I tested with four platforms. 1) Linux 2.4 (eirene) 2) Solaris 2.7(arabica) 3) windows 2000(VS 6.0) 4) SGI IRIX6.5-64(modi4) For test 1)-3), only basic C tests were done For modi4 test, I tested 64-bit C,parallel and fortran. All tests passed, except a warning message from szip library when checksum is used in some order, which doesn't cause any real problems. Misc. update:
Diffstat (limited to 'src/H5Pdcpl.c')
-rw-r--r--src/H5Pdcpl.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/H5Pdcpl.c b/src/H5Pdcpl.c
index 438983e..33e0c8c 100644
--- a/src/H5Pdcpl.c
+++ b/src/H5Pdcpl.c
@@ -749,6 +749,56 @@ done:
FUNC_LEAVE_API(ret_value);
}
+/*-------------------------------------------------------------------------
+ * Function: H5Pset_szip
+ *
+ * Purpose: Sets the compression method for a permanent or transient
+ * filter pipeline (depending on whether PLIST_ID is a dataset
+ * creation or transfer property list) to H5Z_FILTER_SZIP
+ * Szip is a special compression package that is said to be good
+ * for scientific data.
+ *
+ * Return: Non-negative on success/Negative on failure
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, April 15, 1998
+ *
+ * Modifications:
+ *
+ * Raymond Lu
+ * Tuesday, October 2, 2001
+ * Changed the way to check parameter and set property for
+ * generic property list.
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5Pset_szip(hid_t plist_id, const unsigned cd_values[])
+{
+ H5O_pline_t pline;
+ H5P_genplist_t *plist; /* Property list pointer */
+ herr_t ret_value=SUCCEED; /* return value */
+
+ FUNC_ENTER_API(H5Pset_szip, FAIL);
+/* H5TRACE2("e","i*Iu",plist_id,cd_values);
+ H5TRACE2("e","i*Iu",plist_id,cd_values);
+*/
+
+ /* Get the plist structure */
+ if(NULL == (plist = H5P_object_verify(plist_id,H5P_DATASET_CREATE)))
+ HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+
+ /* Add the filter */
+ if(H5P_get(plist, H5D_CRT_DATA_PIPELINE_NAME, &pline) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get pipeline");
+ if(H5Z_append(&pline, H5Z_FILTER_SZIP, H5Z_FLAG_OPTIONAL, 4, cd_values)<0)
+ HGOTO_ERROR(H5E_PLINE, H5E_CANTINIT, FAIL, "unable to add szip filter to pipeline");
+ if(H5P_set(plist, H5D_CRT_DATA_PIPELINE_NAME, &pline) < 0)
+ HGOTO_ERROR(H5E_PLINE, H5E_CANTINIT, FAIL, "unable to set pipeline");
+
+done:
+ FUNC_LEAVE_API(ret_value);
+}
/*-------------------------------------------------------------------------
* Function: H5Pset_shuffle