带有第三方过滤器的 HDF5 C++
HDF5 C++ with third party filters
我正在尝试编写 C++ 代码以使用此处列出的第三方过滤器创建 HDF5 数据集:“https://support.hdfgroup.org/services/contributions.html”。我创建了一个 snappy 过滤器函数,它可以使用 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 存储库中的 lzf filter。
另请查看 Blosc,它是用于包括 snappy 在内的各种压缩算法的元压缩器。
我正在尝试编写 C++ 代码以使用此处列出的第三方过滤器创建 HDF5 数据集:“https://support.hdfgroup.org/services/contributions.html”。我创建了一个 snappy 过滤器函数,它可以使用 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 存储库中的 lzf filter。
另请查看 Blosc,它是用于包括 snappy 在内的各种压缩算法的元压缩器。