我正在尝试编写C ++代码来创建一个HDF5数据集,其中列出了第三方过滤器:“https://support.hdfgroup.org/services/contributions.html”。我创建了一个snappy过滤器函数,可以使用snappy库函数压缩和解压缩数据。我能用snappy过滤器编写并从中读取没有任何问题。但是,当我尝试通过h5dump读取数据时,即使我使用正确的过滤器ID(32003 for snappy),我也没有得到任何输出。
我猜测问题是h5dump无法访问我的过滤功能。它有什么办法吗?我可以以某种方式创建一个库并告诉h5dump从中获取函数吗?或者,由于过滤器已经注册了hdfgroup,我想我可以假设已经存在h5dump可以读取的过滤器功能的现有实现。我可以在我的C ++代码中使用它来保持一致性吗?
答案 0 :(得分:0)
是的,因为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 filter。
另请查看Blosc,它是各种压缩算法的元压缩器,包括snappy。