From 50f43cb86b33da3b33bc0f5b60a8fbbb4a24d8f9 Mon Sep 17 00:00:00 2001 From: kittisopikulm Date: Fri, 4 Mar 2022 10:12:18 -0500 Subject: [PATCH 1/2] Revert "Remove casting for negative clevel with Zstd" This reverts commit 9613778c1275aab4ce282ad070b7a4e73f75e675. --- src/hdf5plugin/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hdf5plugin/__init__.py b/src/hdf5plugin/__init__.py index 93e22d4a..f57492dd 100644 --- a/src/hdf5plugin/__init__.py +++ b/src/hdf5plugin/__init__.py @@ -407,6 +407,7 @@ class Zstd(_FilterRefClass): def __init__(self, clevel=None): if clevel is not None: + clevel = _ctypes.c_uint(clevel).value self.filter_options = (clevel,) From 800b85b282b0106c0c935029f4f314831a810a9b Mon Sep 17 00:00:00 2001 From: kittisopikulm Date: Fri, 4 Mar 2022 10:15:23 -0500 Subject: [PATCH 2/2] Modify Zstd plugin to accept negative values --- src/HDF5Plugin-Zstandard/zstd_h5plugin.c | 4 ++-- src/hdf5plugin/__init__.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/HDF5Plugin-Zstandard/zstd_h5plugin.c b/src/HDF5Plugin-Zstandard/zstd_h5plugin.c index 5a3dfd38..a527f1ff 100644 --- a/src/HDF5Plugin-Zstandard/zstd_h5plugin.c +++ b/src/HDF5Plugin-Zstandard/zstd_h5plugin.c @@ -35,8 +35,8 @@ DLL_EXPORT size_t zstd_filter(unsigned int flags, size_t cd_nelmts, aggression = (int)cd_values[0]; else aggression = ZSTD_CLEVEL_DEFAULT; - if (aggression < 1 /*ZSTD_minCLevel()*/) - aggression = 1 /*ZSTD_minCLevel()*/; + if (aggression < ZSTD_minCLevel()) + aggression = ZSTD_minCLevel(); else if (aggression > ZSTD_maxCLevel()) aggression = ZSTD_maxCLevel(); diff --git a/src/hdf5plugin/__init__.py b/src/hdf5plugin/__init__.py index f57492dd..2cf65707 100644 --- a/src/hdf5plugin/__init__.py +++ b/src/hdf5plugin/__init__.py @@ -391,7 +391,7 @@ class Zstd(_FilterRefClass): **hdf5plugin.Zstd()) f.close() - :param int clevel: Compression level from 1 (lowest compression) to 22 (maximum compression). + :param int clevel: Compression level from -131072 (lowest compression) to 22 (maximum compression). Ultra compression extends from 20 through 22. Default: 3. .. code-block:: python @@ -407,6 +407,7 @@ class Zstd(_FilterRefClass): def __init__(self, clevel=None): if clevel is not None: + # filter_options are passed as uints: conversion needed to pass negative clevel clevel = _ctypes.c_uint(clevel).value self.filter_options = (clevel,)