15 class archive_interface;
16 class md_attribute_parser_base;
37 unsigned long long in_frame_number,
38 double in_system_time,
40 const uint8_t* md_buf,
60 typedef std::map<rs2_frame_metadata_value, std::shared_ptr<md_attribute_parser_base>>
metadata_parser_map;
69 explicit frame() : ref_count(0), _kept(false), owner(nullptr), on_release() {}
72 : ref_count(r.ref_count.exchange(0)), _kept(r._kept.exchange(false)),
73 owner(r.owner), on_release()
83 ref_count = r.ref_count.exchange(0);
84 _kept = r._kept.exchange(
false);
85 on_release = std::move(r.on_release);
108 void set_stream(std::shared_ptr<stream_profile_interface> sp)
override {
stream = std::move(sp); }
113 void acquire()
override { ref_count.fetch_add(1); }
115 void keep()
override;
123 std::shared_ptr<sensor_interface>
get_sensor()
const override;
124 void set_sensor(std::shared_ptr<sensor_interface> s)
override;
135 std::atomic<int> ref_count;
136 std::shared_ptr<archive_interface> owner;
137 std::weak_ptr<sensor_interface> sensor;
140 std::atomic_bool _kept;
141 std::shared_ptr<stream_profile_interface>
stream;
181 if (frames[i]) frames[i]->keep();
219 std::shared_ptr<sensor_interface>
get_sensor()
const override 231 :
frame(), _width(0), _height(0), _bpp(0), _stride(0)
239 void assign(
int width,
int height,
int stride,
int bpp)
248 int _width, _height, _bpp, _stride;
286 default:
throw std::runtime_error(
to_string() <<
"Unrecognized depth format " <<
int(
get_bpp() / 8) <<
" bytes per pixel");
306 if (prev)
return prev;
323 static float query_units(
const std::shared_ptr<sensor_interface>& sensor)
325 if (sensor !=
nullptr)
329 auto depth_sensor = As<librealsense::depth_sensor>(sensor);
337 auto extendable = As<librealsense::extendable_interface>(sensor);
344 catch (
const std::exception& e)
346 LOG_ERROR(
"Failed to query depth units from sensor. " << e.what());
350 LOG_ERROR(
"Failed to query depth units from sensor");
383 if (sensor !=
nullptr)
387 auto stereo_sensor = As<librealsense::depth_stereo_sensor>(sensor);
388 if (stereo_sensor !=
nullptr)
390 return stereo_sensor->get_stereo_baseline_mm();
395 auto extendable = As<librealsense::extendable_interface>(sensor);
398 return stereo_sensor->get_stereo_baseline_mm();
402 catch (
const std::exception& e)
404 LOG_ERROR(
"Failed to query stereo baseline from sensor. " << e.what());
408 LOG_ERROR(
"Failed to query stereo baseline from sensor");
469 virtual std::shared_ptr<metadata_parser_map>
get_md_parsers()
const = 0;
471 virtual void flush() = 0;
482 std::atomic<uint32_t>* in_max_frame_queue_size,
483 std::shared_ptr<platform::time_service> ts,
484 std::shared_ptr<metadata_parser_map> parsers);
virtual rs2_metadata_type get_frame_metadata(const rs2_frame_metadata_value &frame_metadata) const =0
std::shared_ptr< stream_profile_interface > get_stream() const override
Definition: archive.h:107
bool supports_frame_metadata(const rs2_frame_metadata_value &frame_metadata) const override
float3 get_acceleration() const
Definition: archive.h:451
virtual const byte * get_frame_data() const =0
bool fisheye_ae_mode
Definition: archive.h:28
virtual rs2_timestamp_domain get_frame_timestamp_domain() const =0
T & value() &
Definition: types.h:1478
void disable_continuation() override
Definition: archive.h:119
uint32_t get_mapper_confidence() const
Definition: archive.h:456
uint32_t mapper_confidence
Definition: archive.h:444
frame_additional_data(double in_timestamp, unsigned long long in_frame_number, double in_system_time, uint8_t md_size, const uint8_t *md_buf, double backend_time, rs2_time_t last_timestamp, unsigned long long last_frame_number)
Definition: archive.h:36
int get_height() const
Definition: archive.h:235
float3 get_angular_acceleration() const
Definition: archive.h:454
unsigned char byte
Definition: types.h:33
frame_interface * publish(std::shared_ptr< archive_interface > new_owner) override
Definition: archive.h:260
frame(frame &&r)
Definition: archive.h:71
rs2_time_t frame_callback_started
Definition: archive.h:26
Definition: streaming.h:63
int get_width() const
Definition: archive.h:234
uint32_t metadata_size
Definition: archive.h:27
void keep() override
Definition: archive.h:177
Definition: rs_frame.h:21
Definition: archive.h:369
Definition: archive.h:435
Definition: rs_types.h:104
void keep() override
Definition: archive.h:266
#define LOG_WARNING(...)
Definition: types.h:109
float2 * get_texture_coordinates()
Definition: archive.h:253
rs2_time_t get_frame_system_time() const override
Definition: archive.h:215
motion_frame()
Definition: archive.h:425
Definition: rs_sensor.h:55
const uint8_t MAX_META_DATA_SIZE
Definition: backend.h:30
frame()
Definition: archive.h:69
Definition: rs_types.h:106
float3 velocity
Definition: archive.h:438
unsigned long long get_frame_number() const override
float get_units() const
Definition: archive.h:292
void mark_fixed() override
Definition: archive.h:130
optional_value< float > _depth_units
Definition: archive.h:362
void set_timestamp_domain(rs2_timestamp_domain timestamp_domain) override
Definition: archive.h:100
void export_to_ply(const std::string &fname, const frame_holder &texture)
void set_original(frame_holder h)
Definition: archive.h:311
archive_interface * get_owner() const override
Definition: archive.h:121
void log_callback_end(rs2_time_t timestamp) const override
int get_bpp() const
Definition: archive.h:237
uint32_t tracker_confidence
Definition: archive.h:443
frame_interface ** get_frames() const
Definition: archive.h:166
Definition: archive.h:155
float3 translation
Definition: archive.h:437
Definition: extension.h:112
frame & operator=(frame &&r)
Definition: archive.h:79
frame_additional_data additional_data
Definition: archive.h:67
int get_stride() const
Definition: archive.h:236
std::shared_ptr< sensor_interface > get_sensor() const override
virtual float get_depth_scale() const =0
frame_interface * publish(std::shared_ptr< archive_interface > new_owner) override
virtual std::shared_ptr< metadata_parser_map > get_md_parsers() const =0
Definition: streaming.h:21
float3 get_velocity() const
Definition: archive.h:450
const frame_interface * first() const
Definition: archive.h:168
Definition: archive.h:422
void set_timestamp(double new_ts) override
Definition: archive.h:97
virtual void keep_frame(frame_interface *frame)=0
frame_additional_data()
Definition: archive.h:34
float4 rotation
Definition: archive.h:440
Definition: archive.h:431
Definition: rs_types.h:107
std::shared_ptr< sensor_interface > get_sensor() const override
Definition: archive.h:219
const frame_interface * get_original_depth() const
Definition: archive.h:299
rs2_time_t backend_timestamp
Definition: archive.h:30
virtual frame_interface * alloc_and_track(const size_t size, const frame_additional_data &additional_data, bool requires_memory)=0
void set_stream(std::shared_ptr< stream_profile_interface > sp) override
Definition: archive.h:108
Definition: rs_types.h:105
rs2_time_t system_time
Definition: archive.h:25
rs2_time_t get_frame_timestamp() const override
Definition: archive.h:200
Definition: rs_types.h:113
rs2_timestamp_domain get_frame_timestamp_domain() const override
float3 get_translation() const
Definition: archive.h:449
float get_stereo_baseline(void) const
Definition: archive.h:377
void attach_continuation(frame_continuation &&continuation) override
Definition: archive.h:118
virtual void unpublish_frame(frame_interface *frame)=0
rs2_time_t get_frame_callback_start_time_point() const override
std::shared_ptr< archive_interface > make_archive(rs2_extension type, std::atomic< uint32_t > *in_max_frame_queue_size, std::shared_ptr< platform::time_service > ts, std::shared_ptr< metadata_parser_map > parsers)
virtual ~archive_interface()=default
static float query_units(const std::shared_ptr< sensor_interface > &sensor)
Definition: archive.h:323
virtual rs2_time_t get_frame_timestamp() const =0
float3 get_angular_velocity() const
Definition: archive.h:453
bool supports_frame_metadata(const rs2_frame_metadata_value &frame_metadata) const override
Definition: archive.h:192
uint32_t get_tracker_confidence() const
Definition: archive.h:455
frame & operator=(const frame &r)=delete
depth_frame()
Definition: archive.h:256
virtual frame_interface * publish_frame(frame_interface *frame)=0
virtual std::shared_ptr< sensor_interface > get_sensor() const =0
const byte * get_frame_data() const override
Definition: archive.h:196
Definition: archive.h:227
void set_sensor(std::shared_ptr< sensor_interface > s) override
rs2_time_t timestamp
Definition: archive.h:22
Definition: rs_types.h:103
unsigned long long last_frame_number
Definition: archive.h:32
float4 get_rotation() const
Definition: archive.h:452
unsigned long long get_frame_number() const override
Definition: archive.h:208
video_frame()
Definition: archive.h:230
void assign(int width, int height, int stride, int bpp)
Definition: archive.h:239
pose_frame()
Definition: archive.h:447
void log_callback_start(rs2_time_t timestamp) override
frame_interface * frame
Definition: types.h:589
const byte * get_frame_data() const override
virtual rs2_time_t get_frame_system_time() const =0
rs2_extension
Specifies advanced interfaces (capabilities) objects may implement.
Definition: rs_types.h:93
rs2_metadata_type get_frame_metadata(const rs2_frame_metadata_value &frame_metadata) const override
Definition: archive.h:188
float3 angular_velocity
Definition: archive.h:441
void update_frame_callback_start_ts(rs2_time_t ts) override
long long rs2_metadata_type
Definition: rs_types.h:180
composite_frame()
Definition: archive.h:158
virtual ~frame()
Definition: archive.h:91
float get_distance(int x, int y) const
Definition: archive.h:272
rs2_timestamp_domain timestamp_domain
Definition: archive.h:24
bool is_fixed() const override
Definition: archive.h:131
Definition: archive.h:144
unsigned long long frame_number
Definition: archive.h:23
float3 angular_acceleration
Definition: archive.h:442
frame_holder _original
Definition: archive.h:361
Definition: archive.h:462
frame_interface * get_frame(int i) const
Definition: archive.h:160
disparity_frame()
Definition: archive.h:372
float3 acceleration
Definition: archive.h:439
virtual callback_invocation_holder begin_callback()=0
std::array< uint8_t, MAX_META_DATA_SIZE > metadata_blob
Definition: archive.h:29
Definition: streaming.h:158
Definition: rs_types.h:115
size_t get_vertex_count() const
frame_interface * first()
Definition: archive.h:172
rs2_time_t get_frame_system_time() const override
static float query_stereo_baseline(const std::shared_ptr< sensor_interface > &sensor)
Definition: archive.h:381
double rs2_time_t
Definition: rs_types.h:179
rs2_timestamp_domain get_frame_timestamp_domain() const override
Definition: archive.h:204
void reset()
Definition: types.h:1216
virtual unsigned long long get_frame_number() const =0
std::map< rs2_frame_metadata_value, std::shared_ptr< md_attribute_parser_base > > metadata_parser_map
Definition: archive.h:60
void acquire() override
Definition: archive.h:113
rs2_time_t last_timestamp
Definition: archive.h:31
rs2_time_t get_frame_timestamp() const override
rs2_frame_metadata_value
Per-Frame-Metadata are set of read-only properties that might be exposed for each individual frame...
Definition: rs_frame.h:28
rs2_metadata_type get_frame_metadata(const rs2_frame_metadata_value &frame_metadata) const override
MAP_EXTENSION(RS2_EXTENSION_POINTS, librealsense::points)
struct rs2_frame rs2_frame
Definition: rs_types.h:150
#define LOG_ERROR(...)
Definition: types.h:110
void copy(void *dst, void const *src, size_t size)
virtual bool supports_frame_metadata(const rs2_frame_metadata_value &frame_metadata) const =0
std::vector< byte > data
Definition: archive.h:66
size_t get_embedded_frames_count() const
Definition: archive.h:185
rs2_timestamp_domain
Specifies the clock in relation to which the frame timestamp was measured.
Definition: rs_frame.h:19