15 namespace device_serializer
42 os <<
id.device_index <<
"/" <<
id.sensor_index <<
"/" <<
id.stream_type <<
"/" <<
id.stream_index;
46 using nanoseconds = std::chrono::duration<uint64_t, std::nano>;
72 return T::get_type() == type();
76 std::shared_ptr<T>
as()
const 81 switch (T::get_type())
87 return std::static_pointer_cast<T>(std::const_pointer_cast<
serialized_data>(shared_from_this()));
115 return serialized_data_type::frame;
129 return serialized_data_type::invalid_frame;
142 sensor_id(id), option_id(opt_id),
option(o)
145 std::shared_ptr<librealsense::option>
option;
149 return serialized_data_type::option;
163 return serialized_data_type::end_of_file;
176 sensor_id(id), notif(n)
182 return serialized_data_type::notificaion;
195 m_snapshots(snapshots)
201 auto snapshot_it = m_snapshots.find(t);
202 if (snapshot_it ==
std::end(m_snapshots))
206 return snapshot_it->second;
208 std::map<rs2_extension, std::shared_ptr<extension_snapshot>>
get_snapshots()
const 215 return m_snapshots.at(extension);
220 return m_snapshots[extension];
223 std::map<rs2_extension, std::shared_ptr<extension_snapshot>> m_snapshots;
230 m_snapshots(sensor_extensions),
236 m_snapshots(sensor_extensions),
271 m_device_snapshots(device_extensios),
272 m_sensors_snapshot(sensors_snapshot),
273 m_extrinsics_map(extrinsics_map)
279 return m_sensors_snapshot;
283 return m_sensors_snapshot;
287 return m_device_snapshots;
291 return m_extrinsics_map;
295 std::vector<sensor_snapshot> m_sensors_snapshot;
296 std::map<stream_identifier, std::pair<uint32_t, rs2_extrinsics>> m_extrinsics_map;
327 virtual void write_device_description(
const device_snapshot& device_description) = 0;
332 virtual const std::string& get_file_name()
const = 0;
333 virtual ~
writer() =
default;
339 virtual ~
reader() =
default;
341 virtual std::shared_ptr<serialized_data> read_next_data() = 0;
342 virtual void seek_to_time(
const nanoseconds& time) = 0;
344 virtual void reset() = 0;
345 virtual void enable_stream(
const std::vector<device_serializer::stream_identifier>& stream_ids) = 0;
346 virtual void disable_stream(
const std::vector<device_serializer::stream_identifier>& stream_ids) = 0;
347 virtual const std::string& get_file_name()
const = 0;
348 virtual std::vector<std::shared_ptr<serialized_data>> fetch_last_frames(
const nanoseconds& seek_time) = 0;
device_snapshot(const snapshot_collection &device_extensios, const std::vector< sensor_snapshot > &sensors_snapshot, const std::map< stream_identifier, std::pair< uint32_t, rs2_extrinsics >> &extrinsics_map)
Definition: serialization.h:270
static serialized_data_type get_type()
Definition: serialization.h:161
serialized_data_type type() const override
Definition: serialization.h:117
bool is() const
Definition: serialization.h:70
std::shared_ptr< extension_snapshot > & operator[](rs2_extension extension)
Definition: serialization.h:218
Definition: serialization.h:54
stream_identifier stream_id
Definition: serialization.h:111
Definition: serialization.h:313
sensor_identifier sensor_id
Definition: serialization.h:178
snapshot_collection & get_sensor_extensions_snapshots()
Definition: serialization.h:246
Definition: serialization.h:226
rs2_option
Defines general configuration controls. These can generally be mapped to camera UVC controls...
Definition: rs_option.h:22
static serialized_data_type get_type()
Definition: serialization.h:113
std::shared_ptr< T > as() const
Definition: serialization.h:76
Definition: serialization.h:324
serialized_notification(device_serializer::nanoseconds time, sensor_identifier id, const notification &n)
Definition: serialization.h:174
uint32_t sensor_index
Definition: serialization.h:20
sql::statement::iterator end(sql::statement &stmt)
sensor_identifier sensor_id
Definition: serialization.h:144
Definition: serialization.h:320
Definition: serialization.h:22
Definition: serialization.h:53
Definition: serialization.h:48
std::vector< sensor_snapshot > & get_sensors_snapshots()
Definition: serialization.h:281
std::shared_ptr< librealsense::option > option
Definition: serialization.h:145
bool operator<(const stream_identifier &lhs, const stream_identifier &rhs)
Definition: serialization.h:36
std::map< rs2_extension, std::shared_ptr< extension_snapshot > > get_snapshots() const
Definition: serialization.h:208
serialized_data_type type() const override
Definition: serialization.h:151
status
Defines return codes that SDK interfaces use. Negative values indicate errors, a zero value indicates...
Definition: serialization.h:305
Definition: serialization.h:308
Definition: serialization.h:55
std::map< stream_identifier, std::pair< uint32_t, rs2_extrinsics > > get_extrinsics_map() const
Definition: serialization.h:289
snapshot_collection get_sensor_extensions_snapshots() const
Definition: serialization.h:241
Definition: serialization.h:314
snapshot_collection get_device_extensions_snapshots() const
Definition: serialization.h:285
uint32_t device_index
Definition: serialization.h:19
stream_profiles get_stream_profiles() const
Definition: serialization.h:250
std::ostream & operator<<(std::ostream &os, const stream_identifier &id)
Definition: serialization.h:40
Definition: serialization.h:318
rs2_stream stream_type
Definition: serialization.h:26
Definition: serialization.h:315
serialized_data_type type() const override
Definition: serialization.h:131
Definition: serialization.h:316
uint32_t device_index
Definition: serialization.h:24
static serialized_data_type get_type()
Definition: serialization.h:127
snapshot_collection()
Definition: serialization.h:193
rs2_option option_id
Definition: serialization.h:146
Definition: serialization.h:312
uint32_t sensor_index
Definition: serialization.h:25
frame_holder frame
Definition: serialization.h:112
serialized_option(device_serializer::nanoseconds time, sensor_identifier id, rs2_option opt_id, std::shared_ptr< librealsense::option > o)
Definition: serialization.h:140
Definition: serialization.h:266
std::vector< std::shared_ptr< stream_profile_interface >> stream_profiles
Definition: streaming.h:104
serialized_data_type type() const override
Definition: serialization.h:184
rs2_stream
Streams are different types of data provided by RealSense devices.
Definition: rs_sensor.h:38
std::chrono::duration< uint64_t, std::nano > nanoseconds
Definition: serialization.h:46
serialized_invalid_frame(device_serializer::nanoseconds time, stream_identifier id)
Definition: serialization.h:126
std::map< std::tuple< size_t, rs2_stream, size_t, rs2_stream >, rs2_extrinsics > device_extrinsics
Definition: serialization.h:264
Cross-stream extrinsics: encode the topology describing how the different devices are connected...
Definition: rs_sensor.h:82
std::vector< sensor_snapshot > get_sensors_snapshots() const
Definition: serialization.h:277
rs2_extension
Specifies advanced interfaces (capabilities) objects may implement.
Definition: rs_types.h:94
int stream_id
Definition: sync.h:17
Definition: serialization.h:157
uint32_t get_sensor_index() const
Definition: serialization.h:255
Definition: serialization.h:56
notification notif
Definition: serialization.h:179
Definition: serialization.h:103
sensor_snapshot(uint32_t index, const snapshot_collection &sensor_extensions)
Definition: serialization.h:229
device_snapshot()
Definition: serialization.h:269
serialized_end_of_file()
Definition: serialization.h:160
std::shared_ptr< extension_snapshot > find(rs2_extension t) const
Definition: serialization.h:199
Definition: serialization.h:319
const std::shared_ptr< extension_snapshot > & operator[](rs2_extension extension) const
Definition: serialization.h:213
serialized_data_type
Definition: serialization.h:51
serialized_frame(device_serializer::nanoseconds time, stream_identifier id, frame_holder f)
Definition: serialization.h:106
Definition: serialization.h:17
virtual device_serializer::nanoseconds get_timestamp() const
Definition: serialization.h:92
Definition: serialization.h:58
static serialized_data_type get_type()
Definition: serialization.h:180
serialized_data(const device_serializer::nanoseconds ×tamp=device_serializer::nanoseconds::max())
Definition: serialization.h:62
Definition: serialization.h:57
Definition: serialization.h:190
snapshot_collection(const std::map< rs2_extension, std::shared_ptr< extension_snapshot >> &snapshots)
Definition: serialization.h:194
serialized_data_type type() const override
Definition: serialization.h:165
sensor_snapshot(uint32_t index, const snapshot_collection &sensor_extensions, stream_profiles streams)
Definition: serialization.h:235
bool operator==(const stream_identifier &lhs, const stream_identifier &rhs)
Definition: serialization.h:29
Definition: serialization.h:123
uint32_t stream_index
Definition: serialization.h:27
static serialized_data_type get_type()
Definition: serialization.h:147
Definition: serialization.h:336
Definition: serialization.h:137
Definition: serialization.h:171
Definition: serialization.h:311
Definition: serialization.h:321