6 #ifndef IFM3D_FG_FRAME_H
7 #define IFM3D_FG_FRAME_H
13 #include <ifm3d/device/device.h>
14 #include <ifm3d/fg/buffer.h>
15 #include <ifm3d/fg/module_frame_grabber.h>
16 #include <ifm3d/fg/buffer_id.h>
20 using TimePointT = std::chrono::time_point<std::chrono::system_clock,
21 std::chrono::nanoseconds>;
23 using BufferList = std::vector<Buffer>;
24 using BufferDataListMap = std::map<ifm3d::buffer_id, BufferList>;
33 using Ptr = std::shared_ptr<Frame>;
35 Frame(
const BufferDataListMap& images,
36 const std::vector<TimePointT>& timestamps,
37 uint64_t frame_count);
51 std::vector<TimePointT> TimeStamps();
71 std::optional<size_t> index = std::nullopt);
81 uint32_t FrameCount();
89 std::vector<buffer_id> GetBuffers();
91 decltype(std::declval<std::map<buffer_id, BufferList>>().begin())
93 decltype(std::declval<
const std::map<buffer_id, BufferList>>().begin())
94 begin()
const noexcept;
95 decltype(std::declval<std::map<buffer_id, BufferList>>().end())
97 decltype(std::declval<
const std::map<buffer_id, BufferList>>().end()) end()
102 std::unique_ptr<Impl> pImpl;
107 #endif // IFM3D_FG_FRAME_H