带有第三方过滤器的hdfc++

HDF5 C++ with third party filters

本文关键字:hdfc++ 过滤器 第三方      更新时间:2023-10-16

我正试图编写c++代码来创建一个HDF5数据集与第三方过滤器在这里列出:"https://support.hdfgroup.org/services/contributions.html"。我创建了一个snappy过滤器函数,它可以使用snappy库函数压缩和解压缩数据。我可以用快捷的过滤器来写和读,没有任何问题。但是,当我尝试通过h5dump读取数据时,即使使用正确的过滤器ID (snappy为32003),也没有得到任何输出。

我猜问题是h5dump没有访问我的过滤功能。还有别的办法吗?我可以以某种方式创建一个库并告诉h5dump从中获取函数吗?或者,由于过滤器已经注册到hdfgroup,我想我可以假设已经存在h5dump可以读取的过滤器函数的现有实现。我可以在我的c++代码中使用它来保持一致性吗?

是的,从HDF5 1.8.11版本开始,你可以使用[动态加载的过滤器](https://support.hdfgroup.org/HDF5/doc/Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf)。
您基本上需要创建一个过滤器函数的共享库,并通过将其放入特定文件夹(/usr/local/hdf5/lib/plugin)或通过HDF5_PLUGIN_PATH指定文件夹,使其可用于HDF5库。

作为一个例子,您可以查看h5py repo中的lzf过滤器。

还可以看看blossom,它是一个用于各种压缩算法的元压缩器,包括snappy.