summaryrefslogtreecommitdiffstats
path: root/src/H5Zmodule.h
blob: bf0792d02b3514bffd17a8c900fd0e78d3dd0ce0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by The HDF Group.                                               *
 * All rights reserved.                                                      *
 *                                                                           *
 * This file is part of HDF5.  The full HDF5 copyright notice, including     *
 * terms governing use, modification, and redistribution, is contained in    *
 * the COPYING file, which can be found at the root of the source code       *
 * distribution tree, or in https://www.hdfgroup.org/licenses.               *
 * If you do not have access to either file, you may request a copy from     *
 * help@hdfgroup.org.                                                        *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

/*
 * Programmer:	Quincey Koziol
 *		Saturday, September 12, 2015
 *
 * Purpose:	This file contains declarations which define macros for the
 *		H5Z package.  Including this header means that the source file
 *		is part of the H5Z package.
 */
#ifndef _H5Zmodule_H
#define _H5Zmodule_H

/* Define the proper control macros for the generic FUNC_ENTER/LEAVE and error
 *      reporting macros.
 */
#define H5Z_MODULE
#define H5_MY_PKG      H5Z
#define H5_MY_PKG_ERR  H5E_PLINE
#define H5_MY_PKG_INIT YES

/**
 * \defgroup H5Z H5Z
 *
 *
 * \brief Filter and Compression Interface
 *
 * \details The functions in this module let you configure filters that process
 *          data during I/O operation.
 *
 *          HDF5 supports a filter pipeline that provides the capability for
 *          standard and customized raw data processing during I/O operations.
 *          HDF5 is distributed with a small set of standard filters such as
 *          compression (gzip, SZIP, and a shuffling algorithm) and error
 *          checking (Fletcher32 checksum). For further flexibility, the
 *          library allows a user application to extend the pipeline through
 *          the creation and registration of customized filters.
 *
 *          The flexibility of the filter pipeline implementation enables the
 *          definition of additional filters by a user application. A filter
 *          \li is associated with a dataset when the dataset is created,
 *          \li can be used only with chunked data (i.e., datasets stored in
 *              the #H5D_CHUNKED storage layout), and
 *          \li is applied independently to each chunk of the dataset.
 *
 *          The HDF5 library does not support filters for contiguous datasets
 *          because of the difficulty of implementing random access for partial
 *          I/O. Compact dataset filters are not supported because it would not
 *          produce significant results.
 *
 *          Filter identifiers for the filters distributed with the HDF5
 *          Library are as follows:
 *          <table>
 *            <tr><td>#H5Z_FILTER_DEFLATE</td><td>The gzip compression, or
 *                    deflation, filter</td></tr>
 *            <tr><td>#H5Z_FILTER_SZIP</td><td>The SZIP compression
 *                    filter</td></tr>
 *            <tr><td>#H5Z_FILTER_NBIT</td><td>The N-bit compression
 *                    filter</td></tr>
 *            <tr><td>#H5Z_FILTER_SCALEOFFSET</td><td>The scale-offset
 *                    compression filter</td></tr>
 *            <tr><td>#H5Z_FILTER_SHUFFLE</td><td>The shuffle algorithm
 *                    filter</td></tr>
 *            <tr><td>#H5Z_FILTER_FLETCHER32</td><td>The Fletcher32 checksum,
 *                    or error checking, filter</td></tr>
 *          </table>
 *          Custom filters that have been registered with the library will have
 *          additional unique identifiers.
 *
 *          See \Emph{HDF5 Dynamically Loaded Filters} for more information on
 *          how an HDF5 application can apply a filter that is not registered
 *          with the HDF5 library.
 *
 * \todo Fix the reference.
 *
 * \defgroup H5ZPRE Predefined Filters
 * \ingroup H5Z
 * \defgroup FLETCHER32 Checksum Filter
 * \ingroup H5ZPRE
 * \defgroup SCALEOFFSET Scale-Offset Filter
 * \ingroup H5ZPRE
 * \defgroup SHUFFLE Shuffle Filter
 * \ingroup H5ZPRE
 * \defgroup SZIP Szip Filter
 * \ingroup H5ZPRE
 *
 */

#endif /* _H5Zmodule_H */