6 #ifndef IFM3D_FG_FRAME_H
7 #define IFM3D_FG_FRAME_H
12 #include <type_traits>
14 #include <ifm3d/device/device.h>
15 #include <ifm3d/fg/buffer.h>
16 #include <ifm3d/fg/module_frame_grabber.h>
41 AMPLITUDE_IMAGE =
static_cast<uint64_t
>(ifm3d::image_chunk::AMPLITUDE_IMAGE),
46 GRAYSCALE_IMAGE =
static_cast<uint64_t
>(ifm3d::image_chunk::GRAYSCALE_IMAGE),
56 REFLECTIVITY =
static_cast<uint64_t
>(ifm3d::image_chunk::REFLECTIVITY),
76 CARTESIAN_ALL =
static_cast<uint64_t
>(ifm3d::image_chunk::CARTESIAN_ALL),
81 UNIT_VECTOR_ALL =
static_cast<uint64_t
>(ifm3d::image_chunk::UNIT_VECTOR_ALL),
91 MONOCHROM_2D =
static_cast<uint64_t
>(ifm3d::image_chunk::MONOCHROM_2D),
96 JPEG_IMAGE =
static_cast<uint64_t
>(ifm3d::image_chunk::JPEG_IMAGE),
101 CONFIDENCE_IMAGE =
static_cast<uint64_t
>(ifm3d::image_chunk::CONFIDENCE_IMAGE),
106 DIAGNOSTIC =
static_cast<uint64_t
>(ifm3d::image_chunk::DIAGNOSTIC),
111 JSON_DIAGNOSTIC =
static_cast<uint64_t
>(ifm3d::image_chunk::JSON_DIAGNOSTIC),
116 EXTRINSIC_CALIB =
static_cast<uint64_t
>(ifm3d::image_chunk::EXTRINSIC_CALIB),
121 INTRINSIC_CALIB =
static_cast<uint64_t
>(ifm3d::image_chunk::INTRINSIC_CALIB),
129 O3R_DISTANCE_IMAGE_INFO [[deprecated]] =
static_cast<uint64_t
>(ifm3d::image_chunk::TOF_INFO),
130 O3R_RGB_IMAGE_INFO [[deprecated]] =
static_cast<uint64_t
>(ifm3d::image_chunk::RGB_INFO),
135 TOF_INFO =
static_cast<uint64_t
>(ifm3d::image_chunk::TOF_INFO),
140 RGB_INFO =
static_cast<uint64_t
>(ifm3d::image_chunk::RGB_INFO),
145 JSON_MODEL =
static_cast<uint64_t
>(ifm3d::image_chunk::JSON_MODEL),
150 ALGO_DEBUG =
static_cast<uint64_t
>(ifm3d::image_chunk::ALGO_DEBUG),
160 O3R_ODS_INFO =
static_cast<uint64_t
>(ifm3d::image_chunk::O3R_ODS_INFO),
165 O3R_RESULT_JSON =
static_cast<uint64_t
>(ifm3d::image_chunk::O3R_RESULT_JSON),
175 O3R_RESULT_IMU =
static_cast<uint64_t
>(ifm3d::image_chunk::O3R_RESULT_IMU),
190 XYZ = (std::numeric_limits<std::uint32_t>::max)(),
204 O3R_MCC_MOTION_IMAGE,
205 O3R_MCC_STATIC_IMAGE,
206 O3R_ODS_RENDERED_ZONES,
210 using TimePointT = std::chrono::time_point<std::chrono::system_clock,
211 std::chrono::nanoseconds>;
213 using BufferList = std::vector<Buffer>;
214 using BufferDataListMap = std::map<ifm3d::buffer_id, BufferList>;
223 using Ptr = std::shared_ptr<Frame>;
225 Frame(
const BufferDataListMap& images,
226 const std::vector<TimePointT> timestamps,
227 uint64_t frame_count);
241 std::vector<TimePointT> TimeStamps();
261 std::optional<size_t> index = std::nullopt);
271 uint32_t FrameCount();
279 std::vector<buffer_id> GetBuffers();
281 decltype(std::declval<std::map<buffer_id, BufferList>>().begin())
283 decltype(std::declval<
const std::map<buffer_id, BufferList>>().begin())
284 begin()
const noexcept;
285 decltype(std::declval<std::map<buffer_id, BufferList>>().end())
287 decltype(std::declval<
const std::map<buffer_id, BufferList>>().end()) end()
292 std::unique_ptr<Impl> pImpl;
297 #endif // IFM3D_FG_FRAME_H