<html>
<head>
<title>
HDF5/H5Z API Specification
</title>
<link href="../ed_styles/RMelect.css" rel="stylesheet" type="text/css">
</head>

<body bgcolor="#FFFFFF">

<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
<!--
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  * Copyright by The HDF Group.                                               *
  * Copyright by the Board of Trustees of the University of Illinois.         *
  * 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 files COPYING and Copyright.html.  COPYING can be found at the root   *
  * of the source code distribution tree; Copyright.html can be found at the  *
  * root level of an installed copy of the electronic HDF5 document set and   *
  * is linked from the top-level documents page.  It can also be found at     *
  * http://www.hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have      *
  * access to either file, you may request a copy from help@hdfgroup.org.     *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 -->
<!-- #EndLibraryItem --><!-- HEADER RIGHT " " -->

<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" -->
<hr>
<center>
<table border="0" width="98%">
<tr><td valign="top" align="left">
<a href="../index.html">HDF5 documents and links</a>&nbsp;<br>
<a href="../H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
<a href="../UG/HDF5_Users_Guide-Responsive HTML5/index.html">HDF5 User&rsquo;s Guide</a>&nbsp;<br>
<!--
<a href="Glossary.html">Glossary</a><br>
-->
</td>
<td valign="top" align="right">
In the 
<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;
<font size="-1">
<br>
<a href="../HL/RM_H5DS.html">H5DS</a>&nbsp;&nbsp;
<a href="../HL/RM_H5IM.html">H5IM</a>&nbsp;&nbsp;
<a href="../HL/RM_H5LT.html">H5LT</a>&nbsp;&nbsp;
<a href="../HL/RM_H5PT.html">H5PT</a>&nbsp;&nbsp;
<a href="../HL/RM_H5TB.html">H5TB</a>&nbsp;
<a href="../HL/RM_HDF5Optimized.html">Optimized</a>&nbsp;
<br>
<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
<a href="RM_H5L.html">H5L</a>&nbsp;
<br>
<a href="RM_H5O.html">H5O</a>&nbsp;&nbsp;
<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
<a href="RM_H5PL.html">H5PL</a>&nbsp;&nbsp;
<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
<a href="RM_H5Z.html">H5Z</a>&nbsp;
<br>
<a href="Tools.html">Tools</a>&nbsp;&nbsp;
<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
<a href="../fortran/index.html">Fortran</a>&nbsp;&nbsp;
<a href="APICompatMacros.html">Compatibility Macros</a>&nbsp;
<br>
<a href="CollectiveCalls.html">Collective Calls in Parallel</a>&nbsp;
</font>
<!--
<br>
<i><font size="-1">(Printable <a href="http://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF">PDF</a> of this Reference Manual)</font></i>&nbsp;
-->

</td></tr>
</table>
</center>
<hr>
<!-- #EndLibraryItem --><center>
<h1>H5Z: Filter and Compression Interface</h1>
</center>

<h2>Filter and Compression API Functions</h2>

<br>
<strong>The C Interface:</strong>
<br>
These functions enable the user to configure new filters
for the local environment.

<table border="0" width="80%">
<tr><td valign="top" width="30%">
<ul>
    <li><a href="#Compression-FilterAvail">H5Zfilter_avail</a><br>
    <li><a href="#Compression-GetFilterInfo">H5Zget_filter_info</a>
</ul>
</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign="top" width="30%">
<ul>
    <li><a href="#Compression-Register">H5Zregister</a>
</ul>
</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign="top" width="30%">
<ul>
    <li><a href="#Compression-Unregister">H5Zunregister</a>
</ul>
</td></tr>
</table>

<br>
<strong>The Fortran Interface:</strong>
<br>
In general, each Fortran subroutine performs exactly the same task 
as the corresponding C function.  
<br>

<table border="0" width="80%">
<tr><td valign="top" width="30%">
    <ul>
    <li><a href="#Compression-FilterAvail">h5zfilter_avail_f</a>
    </ul>
</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign="top" width="30%">
    <ul>
<!--<li><a href="#Compression-Register">h5zregister_f</a><br>    -->
    <li><a href="#Compression-GetFilterInfo">h5zget_filter_info_f</a>
    </ul>
</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign="top" width="30%">
    <ul>
    <li><a href="#Compression-Unregister">h5zunregister_f</a>
    </ul>
</td></tr>
</table>

<p>
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.
<p>
The flexibility of the filter pipeline implementation enables the 
definition of additional filters by a user application.
A filter
  <ul>
    <li>is associated with a dataset when the dataset is created,
    <li>can be used only with chunked data
        <br>(i.e., datasets stored in the <code>H5D_CHUNKED</code> 
        storage layout), and
    <li>is applied independently to each chunk of the dataset.
  </ul>
<p>
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.
<p>
Filter identifiers for the filters distributed with the HDF5 Library
are as follows:
<table align="center" border="0">
  <tr valign="top" align="left">
  <td>
    <code>H5Z_FILTER_DEFLATE</code></td><td>The gzip compression,
          or deflation, filter
  </td></tr><tr><td>
    <code>H5Z_FILTER_SZIP</code></td><td>The SZIP compression filter
  </td></tr><tr><td>
    <code>H5Z_FILTER_NBIT</code></td><td>The N-bit compression filter
  </td></tr><tr><td>
    <code>H5Z_FILTER_SCALEOFFSET&nbsp;&nbsp;</code></td><td>The scale-offset 
          compression filter
  </td></tr><tr><td>
    <code>H5Z_FILTER_SHUFFLE</code></td><td>The shuffle algorithm filter
  </td></tr><tr><td>
    <code>H5Z_FILTER_FLETCHER32</code></td><td>The Fletcher32 checksum, 
          or error checking, filter
  </td></tr>
</table>
<p>
Custom filters that have been registered with the library will have
additional unique identifiers.
<p>
<!--
See <a href="../H5.user/Datasets.html"><cite>The Dataset Interface (H5D)</cite></a> 
in the <cite>HDF5 User&rsquo;s Guide</cite> for further information regarding 
data compression.
-->

See <em>
<a href="../Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf">
HDF5 Dynamically Loaded Filters</a></em> for more information on how an HDF5 
application can apply a filter that is not registered with the HDF5 Library.
</p>









<!-- NEW PAGE -->
<!-- HEADER RIGHT " " -->

<!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->
<!--       Include special topic files                       -->
<!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->


<!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->
<!--       Include function files                            -->
<!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->

<?php include("H5Z/H5Zfilter_avail.htm"); ?>
<?php include("H5Z/H5Zget_filter_info.htm"); ?>
<?php include("H5Z/H5Zregister.htm"); ?>
<?php include("H5Z/H5Zunregister.htm"); ?>


<!-- HEADER RIGHT " " -->
<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" -->
<hr>
<center>
<table border="0" width="98%">
<tr><td valign="top" align="left">
<a href="../index.html">HDF5 documents and links</a>&nbsp;<br>
<a href="../H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
<a href="../UG/HDF5_Users_Guide-Responsive HTML5/index.html">HDF5 User&rsquo;s Guide</a>&nbsp;<br>
<!--
<a href="Glossary.html">Glossary</a><br>
-->
</td>
<td valign="top" align="right">
In the 
<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;
<font size="-1">
<br>
<a href="../HL/RM_H5DS.html">H5DS</a>&nbsp;&nbsp;
<a href="../HL/RM_H5IM.html">H5IM</a>&nbsp;&nbsp;
<a href="../HL/RM_H5LT.html">H5LT</a>&nbsp;&nbsp;
<a href="../HL/RM_H5PT.html">H5PT</a>&nbsp;&nbsp;
<a href="../HL/RM_H5TB.html">H5TB</a>&nbsp;
<a href="../HL/RM_HDF5Optimized.html">Optimized</a>&nbsp;
<br>
<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
<a href="RM_H5L.html">H5L</a>&nbsp;
<br>
<a href="RM_H5O.html">H5O</a>&nbsp;&nbsp;
<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
<a href="RM_H5PL.html">H5PL</a>&nbsp;&nbsp;
<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
<a href="RM_H5Z.html">H5Z</a>&nbsp;
<br>
<a href="Tools.html">Tools</a>&nbsp;&nbsp;
<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
<a href="../fortran/index.html">Fortran</a>&nbsp;&nbsp;
<a href="APICompatMacros.html">Compatibility Macros</a>&nbsp;
<br>
<a href="CollectiveCalls.html">Collective Calls in Parallel</a>&nbsp;
</font>
<!--
<br>
<i><font size="-1">(Printable <a href="http://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF">PDF</a> of this Reference Manual)</font></i>&nbsp;
-->

</td></tr>
</table>
</center>
<hr>
<!-- #EndLibraryItem -->

<?php include("../ed_libs/Footer2.htm"); ?>

<SCRIPT LANGUAGE="JAVASCRIPT">
<!--
document.writeln("Last modified: 2 July 2013");
-->
</SCRIPT>
 
</body>
</html>

