summaryrefslogtreecommitdiffstats
path: root/tools/h5repack/h5repack_filters.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/h5repack/h5repack_filters.c')
-rw-r--r--tools/h5repack/h5repack_filters.c94
1 files changed, 47 insertions, 47 deletions
diff --git a/tools/h5repack/h5repack_filters.c b/tools/h5repack/h5repack_filters.c
index 98ef07e..cd4693e 100644
--- a/tools/h5repack/h5repack_filters.c
+++ b/tools/h5repack/h5repack_filters.c
@@ -41,10 +41,10 @@ int aux_find_obj(const char* name, /* object name from traverse list */
*obj = options->op_tbl->objs[i];
return i;
}
-
+
pdest = strstr(name,options->op_tbl->objs[i].path);
result = (int)(pdest - name);
-
+
/* found at position 1, meaning without '/' */
if( pdest != NULL && result==1 )
{
@@ -72,19 +72,19 @@ int aux_assign_obj(const char* name, /* object name from traverse lis
pack_opt_t *options, /* repack options */
pack_info_t *obj /*OUT*/) /* info about object to filter */
{
-
+
int idx, i;
pack_info_t tmp;
-
+
init_packobject(&tmp);
-
+
idx = aux_find_obj(name,options,&tmp);
-
+
/* name was on input */
if (idx>=0)
{
-
-
+
+
/* applying to all objects */
if (options->all_layout)
{
@@ -114,9 +114,9 @@ int aux_assign_obj(const char* name, /* object name from traverse lis
default:
break;
}/*switch*/
-
+
}
-
+
/* applying to all objects */
if (options->all_filter)
{
@@ -132,16 +132,16 @@ int aux_assign_obj(const char* name, /* object name from traverse lis
tmp.filter[i] = options->op_tbl->objs[idx].filter[i];
}
}
-
-
+
+
} /* if idx */
-
-
+
+
/* no input name */
-
+
else
{
-
+
if (options->all_filter)
{
int k;
@@ -167,11 +167,11 @@ int aux_assign_obj(const char* name, /* object name from traverse lis
}/*switch*/
}
}
-
+
*obj = tmp;
return 1;
-
-}
+
+}
/*-------------------------------------------------------------------------
@@ -206,40 +206,40 @@ int apply_filters(const char* name, /* object name from traverse list */
pack_info_t obj;
*has_filter = 0;
-
+
if (rank==0) /* scalar dataset, do not apply */
return 0;
-
+
/*-------------------------------------------------------------------------
* initialize the assigment object
*-------------------------------------------------------------------------
*/
init_packobject(&obj);
-
+
/*-------------------------------------------------------------------------
* find options
*-------------------------------------------------------------------------
*/
if (aux_assign_obj(name,options,&obj)==0)
return 0;
-
+
/* get information about input filters */
if ((nfilters = H5Pget_nfilters(dcpl_id))<0)
return -1;
-
+
/*-------------------------------------------------------------------------
* check if we have filters in the pipeline
* we want to replace them with the input filters
* only remove if we are inserting new ones
*-------------------------------------------------------------------------
*/
- if (nfilters && obj.nfilters )
+ if (nfilters && obj.nfilters )
{
*has_filter = 1;
if (H5Premove_filter(dcpl_id,H5Z_FILTER_ALL)<0)
return -1;
}
-
+
/*-------------------------------------------------------------------------
* check if there is an existent chunk
* read it only if there is not a requested layout
@@ -249,7 +249,7 @@ int apply_filters(const char* name, /* object name from traverse list */
{
if ((layout = H5Pget_layout(dcpl_id))<0)
return -1;
-
+
if (layout==H5D_CHUNKED)
{
if ((rank = H5Pget_chunk(dcpl_id,NELMTS(chsize),chsize/*out*/))<0)
@@ -260,7 +260,7 @@ int apply_filters(const char* name, /* object name from traverse list */
obj.chunk.chunk_lengths[i] = chsize[i];
}
}
-
+
/*-------------------------------------------------------------------------
* the type of filter and additional parameter
* type can be one of the filters
@@ -273,10 +273,10 @@ int apply_filters(const char* name, /* object name from traverse list */
* H5Z_FILTER_SCALEOFFSET 6 , scaleoffset compression
*-------------------------------------------------------------------------
*/
-
+
if (obj.nfilters)
{
-
+
/*-------------------------------------------------------------------------
* filters require CHUNK layout; if we do not have one define a default
*-------------------------------------------------------------------------
@@ -287,14 +287,14 @@ int apply_filters(const char* name, /* object name from traverse list */
for (i=0; i<rank; i++)
obj.chunk.chunk_lengths[i] = dims[i];
}
-
+
for ( i=0; i<obj.nfilters; i++)
{
switch (obj.filter[i].filtn)
{
default:
break;
-
+
/*-------------------------------------------------------------------------
* H5Z_FILTER_DEFLATE 1 , deflation like gzip
*-------------------------------------------------------------------------
@@ -302,7 +302,7 @@ int apply_filters(const char* name, /* object name from traverse list */
case H5Z_FILTER_DEFLATE:
{
unsigned aggression; /* the deflate level */
-
+
aggression = obj.filter[i].cd_values[0];
/* set up for deflated data */
if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0)
@@ -311,7 +311,7 @@ int apply_filters(const char* name, /* object name from traverse list */
return -1;
}
break;
-
+
/*-------------------------------------------------------------------------
* H5Z_FILTER_SZIP 4 , szip compression
*-------------------------------------------------------------------------
@@ -320,19 +320,19 @@ int apply_filters(const char* name, /* object name from traverse list */
{
unsigned options_mask;
unsigned pixels_per_block;
-
+
options_mask = obj.filter[i].cd_values[0];
pixels_per_block = obj.filter[i].cd_values[1];
-
+
/* set up for szip data */
if(H5Pset_chunk(dcpl_id,obj.chunk.rank,obj.chunk.chunk_lengths)<0)
return -1;
if (H5Pset_szip(dcpl_id,options_mask,pixels_per_block)<0)
return -1;
-
+
}
break;
-
+
/*-------------------------------------------------------------------------
* H5Z_FILTER_SHUFFLE 2 , shuffle the data
*-------------------------------------------------------------------------
@@ -343,7 +343,7 @@ int apply_filters(const char* name, /* object name from traverse list */
if (H5Pset_shuffle(dcpl_id)<0)
return -1;
break;
-
+
/*-------------------------------------------------------------------------
* H5Z_FILTER_FLETCHER32 3 , fletcher32 checksum of EDC
*-------------------------------------------------------------------------
@@ -368,15 +368,15 @@ int apply_filters(const char* name, /* object name from traverse list */
* H5Z_FILTER_SCALEOFFSET , scale+offset compression
*-------------------------------------------------------------------------
*/
-
+
case H5Z_FILTER_SCALEOFFSET:
{
H5Z_SO_scale_type_t scale_type;
int scale_factor;
-
+
scale_type = obj.filter[i].cd_values[0];
scale_factor = obj.filter[i].cd_values[1];
-
+
if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0)
return -1;
if (H5Pset_scaleoffset(dcpl_id,scale_type,scale_factor)<0)
@@ -385,21 +385,21 @@ int apply_filters(const char* name, /* object name from traverse list */
break;
} /* switch */
}/*i*/
-
+
}
/*obj.nfilters*/
-
+
/*-------------------------------------------------------------------------
* layout
*-------------------------------------------------------------------------
*/
-
+
if (obj.layout>=0)
{
/* a layout was defined */
if (H5Pset_layout(dcpl_id, obj.layout)<0)
return -1;
-
+
if (H5D_CHUNKED==obj.layout) { /* set up chunk */
if(H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths)<0)
return -1;
@@ -408,7 +408,7 @@ int apply_filters(const char* name, /* object name from traverse list */
if (H5Pset_alloc_time(dcpl_id, H5D_ALLOC_TIME_EARLY)<0)
return -1;
}
-
+
}
return 0;