2016-09-30 98 views
0

我想编写C++代码来创建一个HDF5数据集与第三方过滤器列在这里:“https://support.hdfgroup.org/services/contributions.html”。我创建了一个快速的过滤器函数,可以使用snappy库函数来压缩以及解压缩数据。我能够用快速的过滤器进行书写,并从中读取,没有任何问题。但是,当我尝试通过h5dump读取数据时,即使使用正确的过滤器标识(snappy为32003),我也没有收到任何输出。HDF5 C++与第三方过滤器

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

回答

0

是的,自HDF5版本1.8.11以来,您可以使用[dynamic loaded filters] (https://support.hdfgroup.org/HDF5/doc/Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf)。
您基本上需要创建一个过滤器函数的共享库,并将它放到特定文件夹(/usr/local/hdf5/lib/plugin)或通过HDF5_PLUGIN_PATH指定文件夹,以便HDF5库可用。

作为一个例子,你可以看看h5py回购中的lzf filter

另外看看Blosc这是一个元压缩机的各种压缩算法,包括snappy。