OpenEV
Extending OpenCV to event-based vision
Loading...
Searching...
No Matches
hdf5-reader.hpp
Go to the documentation of this file.
1
6#ifndef OPENEV_READERS_HDF5_READER_HPP
7#define OPENEV_READERS_HDF5_READER_HPP
8
9#include "openev/readers/abstract-reader.hpp"
10#include <H5Cpp.h>
11#include <cstddef>
12#include <string>
13#include <vector>
14
15namespace ev {
16constexpr bool USING_HDF5_READER_HPP = true;
17
36class HDF5Reader : public AbstractReader_ {
37public:
38 explicit HDF5Reader(const std::string &filename,
39 const std::string &t_path = "/events/t",
40 const std::string &x_path = "/events/x",
41 const std::string &y_path = "/events/y",
42 const std::string &p_path = "/events/p",
43 std::size_t buffer_size = 0,
44 bool use_threading = false);
45 ~HDF5Reader() override = default;
46
48 HDF5Reader(const HDF5Reader &) = delete;
49 HDF5Reader(HDF5Reader &&) noexcept = delete;
50 HDF5Reader &operator=(const HDF5Reader &) = delete;
51 HDF5Reader &operator=(HDF5Reader &&) noexcept = delete;
53
54private:
55 H5::H5File file_;
56 H5::DataSet t_ds_, x_ds_, y_ds_, p_ds_;
57 hsize_t total_{0};
58 hsize_t file_pos_{0};
59
60 static constexpr hsize_t kChunk = 4096;
61 std::vector<double> t_buf_;
62 std::vector<int> x_buf_;
63 std::vector<int> y_buf_;
64 std::vector<int> p_buf_;
65 hsize_t buf_pos_{0};
66 hsize_t buf_size_{0};
67
68 bool updateBuffer_() override;
69};
70
71} // namespace ev
72
73#endif // OPENEV_READERS_HDF5_READER_HPP
AbstractReader_(const std::size_t buffer_size, const bool use_threading)
Constructor for AbstractReader_.
Definition abstract-reader.cpp:8