4#ifndef LIBREALSENSE_RS2_FRAME_HPP
5#define LIBREALSENSE_RS2_FRAME_HPP
120 std::stringstream ss;
140 operator bool()
const {
return _profile !=
nullptr; }
190 explicit operator std::shared_ptr<rs2_stream_profile>() {
return _clone; }
199 std::shared_ptr<rs2_stream_profile>
_clone;
406 other.frame_ref =
nullptr;
408 frame_number = other.frame_number;
409 profile = other.profile;
427 : frame_ref(other.frame_ref)
431 frame_number = other.frame_number;
432 profile = other.profile;
441 std::swap(frame_ref, other.frame_ref);
444 std::swap(frame_number, other.frame_number);
445 std::swap(profile, other.profile);
469 operator bool()
const {
return frame_ref !=
nullptr; }
594 if( copied ) *copied = ( c != 0 );
677 unsigned long long frame_number = 0;
769 return (e ==
nullptr);
775 operator const float*()
const {
return &
x; }
779 operator const float*()
const {
return &
u; }
819 return (
const vertex*)res;
830 std::swap(texture.frame_ref, ptr);
895 return (
const vertex*)res;
907 return (uint8_t * )res;
1099 auto data =
reinterpret_cast<const float*
>(
get_data());
1100 return rs2_vector{ data[0], data[1], data[2] };
1232 :
frame(f), _size(0)
1261 result = std::move(frm);
1275 if (!frm)
throw error(
"Frame of requested stream type was not found!");
1428 auto count =
size();
1429 for (
size_t i = 0; i < count; i++)
1434 action(
frame(fref));
1452 throw error(
"Requested index is out of range!");
1486 T on_frame_function;
1492 on_frame_function(
frame{ fref });
Definition rs_frame.hpp:957
float get_units() const
Definition rs_frame.hpp:992
float get_distance(int x, int y) const
Definition rs_frame.hpp:980
depth_frame(const frame &f)
Definition rs_frame.hpp:963
disparity_frame(const frame &f)
Definition rs_frame.hpp:1008
float get_baseline(void) const
Definition rs_frame.hpp:1022
error(rs2_error *err)
Definition rs_types.hpp:115
static void handle(rs2_error *e)
Definition rs_types.hpp:162
Definition rs_frame.hpp:363
virtual rs2::frame process(rs2::frame frame) const =0
virtual ~filter_interface()=default
Definition rs_processing.hpp:361
rs2::frame process(rs2::frame frame) const override
Definition rs_processing.hpp:369
void release() override
Definition rs_frame.hpp:1495
void on_frame(rs2_frame *fref) override
Definition rs_frame.hpp:1490
frame_callback(T on_frame)
Definition rs_frame.hpp:1488
Definition rs_processing.hpp:134
Definition rs_processing.hpp:18
Definition rs_frame.hpp:370
void reset()
Definition rs_frame.hpp:656
frame(rs2_frame *ref)
Definition rs_frame.hpp:380
const void * get_gpu_data_or_upload(bool *copied=nullptr) const
Definition rs_frame.hpp:588
rs2_timestamp_domain get_frame_timestamp_domain() const
Definition rs_frame.hpp:511
frame & operator=(frame other)
Definition rs_frame.hpp:416
double get_timestamp() const
Definition rs_frame.hpp:500
frame(frame &&other) noexcept
Definition rs_frame.hpp:404
frame()
Definition rs_frame.hpp:375
frame(const frame &other)
Definition rs_frame.hpp:426
void keep()
Definition rs_frame.hpp:463
void swap(frame &other)
Definition rs_frame.hpp:439
frame apply_filter(filter_interface &filter)
Definition rs_frame.hpp:638
~frame()
Definition rs_frame.hpp:452
rs2_metadata_type get_frame_metadata(rs2_frame_metadata_value frame_metadata) const
Definition rs_frame.hpp:523
bool is() const
Definition rs_frame.hpp:615
stream_profile get_profile() const
Definition rs_frame.hpp:602
bool supports_frame_metadata(rs2_frame_metadata_value frame_metadata) const
Definition rs_frame.hpp:535
const int get_data_size() const
Definition rs_frame.hpp:559
T as() const
Definition rs_frame.hpp:625
const void * get_data() const
Definition rs_frame.hpp:571
unsigned long long get_frame_number() const
Definition rs_frame.hpp:547
rs2_sensor * get_sensor()
Definition rs_frame.hpp:471
rs2_frame * get() const
Definition rs_frame.hpp:635
void add_ref() const
Definition rs_frame.hpp:649
Definition rs_frame.hpp:1456
bool operator!=(const iterator &other) const
Definition rs_frame.hpp:1469
frame * pointer
Definition rs_frame.hpp:1463
iterator & operator++()
Definition rs_frame.hpp:1467
bool operator==(const iterator &other) const
Definition rs_frame.hpp:1468
iterator(const frameset *owner, size_t index=0)
Definition rs_frame.hpp:1466
std::ptrdiff_t difference_type
Definition rs_frame.hpp:1462
frame operator*()
Definition rs_frame.hpp:1471
frame value_type
Definition rs_frame.hpp:1461
frame & reference
Definition rs_frame.hpp:1464
std::forward_iterator_tag iterator_category
Definition rs_frame.hpp:1460
frame first_or_default(rs2_stream s, rs2_format f=RS2_FORMAT_ANY) const
Definition rs_frame.hpp:1255
labeled_points get_labeled_point_cloud_frame() const
Definition rs_frame.hpp:1316
pose_frame get_pose_frame(const size_t index=0) const
Definition rs_frame.hpp:1372
video_frame get_fisheye_frame(const size_t index=0) const
Definition rs_frame.hpp:1350
video_frame get_infrared_frame(const size_t index=0) const
Definition rs_frame.hpp:1327
void foreach_rs(T action) const
Definition rs_frame.hpp:1425
iterator end() const
Definition rs_frame.hpp:1478
object_detection_frame get_object_detection_frame(const size_t index=0) const
Definition rs_frame.hpp:1394
frame operator[](size_t index) const
Definition rs_frame.hpp:1442
depth_frame get_depth_frame() const
Definition rs_frame.hpp:1283
frameset()
Definition rs_frame.hpp:1226
iterator begin() const
Definition rs_frame.hpp:1477
frameset(const frame &f)
Definition rs_frame.hpp:1231
frame first(rs2_stream s, rs2_format f=RS2_FORMAT_ANY) const
Definition rs_frame.hpp:1272
video_frame get_color_frame(const size_t index=0) const
Definition rs_frame.hpp:1292
size_t size() const
Definition rs_frame.hpp:1415
gpu_frame(const frame &f)
Definition rs_frame.hpp:1049
const void * get_gpu_data() const
Definition rs_frame.hpp:1066
Definition rs_frame.hpp:858
const uint8_t * get_labels() const
Definition rs_frame.hpp:902
unsigned int get_bits_per_pixel() const
Definition rs_frame.hpp:944
size_t size() const
Definition rs_frame.hpp:911
unsigned int get_width() const
Definition rs_frame.hpp:920
unsigned int get_height() const
Definition rs_frame.hpp:932
labeled_points(const frame &f)
Definition rs_frame.hpp:869
const vertex * get_vertices() const
Definition rs_frame.hpp:890
labeled_points()
Definition rs_frame.hpp:863
motion_frame(const frame &f)
Definition rs_frame.hpp:1082
rs2_combined_motion get_combined_motion_data() const
Definition rs_frame.hpp:1107
rs2_vector get_motion_data() const
Definition rs_frame.hpp:1097
motion_stream_profile(const stream_profile &sp)
Definition rs_frame.hpp:300
rs2_motion_device_intrinsic get_motion_intrinsics() const
Definition rs_frame.hpp:315
Definition rs_frame.hpp:1170
object_detection_frame()
Definition rs_frame.hpp:1175
object_detection_frame(const frame &f)
Definition rs_frame.hpp:1181
unsigned int get_detection_count() const
Definition rs_frame.hpp:1196
rs2_object_detection get_detection(unsigned int index) const
Definition rs_frame.hpp:1210
perception_frame(const frame &f)
Definition rs_frame.hpp:1158
perception_frame()
Definition rs_frame.hpp:1150
perception_stream_profile(const stream_profile &sp)
Definition rs_frame.hpp:347
Definition rs_pipeline.hpp:19
Definition rs_processing.hpp:430
Definition rs_frame.hpp:783
points()
Definition rs_frame.hpp:788
const texture_coordinate * get_texture_coordinates() const
Definition rs_frame.hpp:839
size_t size() const
Definition rs_frame.hpp:847
void export_to_ply(const std::string &fname, video_frame texture)
Definition rs_frame.hpp:827
const vertex * get_vertices() const
Definition rs_frame.hpp:814
points(const frame &f)
Definition rs_frame.hpp:794
Definition rs_frame.hpp:1114
pose_frame(const frame &f)
Definition rs_frame.hpp:1120
rs2_pose get_pose_data() const
Definition rs_frame.hpp:1134
pose_stream_profile(const stream_profile &sp)
Definition rs_frame.hpp:332
Definition rs_processing.hpp:251
Definition rs_sensor.hpp:104
Definition rs_frame.hpp:23
rs2_extrinsics get_extrinsics_to(const stream_profile &to) const
Definition rs_frame.hpp:157
rs2_format format() const
Definition rs_frame.hpp:44
stream_profile(const rs2_stream_profile *profile)
Definition rs_frame.hpp:179
rs2_format _format
Definition rs_frame.hpp:204
int _uid
Definition rs_frame.hpp:202
stream_profile()
Definition rs_frame.hpp:28
int _framerate
Definition rs_frame.hpp:203
int stream_index() const
Definition rs_frame.hpp:34
int unique_id() const
Definition rs_frame.hpp:54
bool is_default() const
Definition rs_frame.hpp:134
std::shared_ptr< rs2_stream_profile > _clone
Definition rs_frame.hpp:199
std::string stream_name() const
Definition rs_frame.hpp:113
rs2_stream _type
Definition rs_frame.hpp:205
const rs2_stream_profile * _profile
Definition rs_frame.hpp:198
bool is() const
Definition rs_frame.hpp:92
int fps() const
Definition rs_frame.hpp:49
T as() const
Definition rs_frame.hpp:103
void register_extrinsics_to(const stream_profile &to, rs2_extrinsics extrinsics)
Definition rs_frame.hpp:171
bool _default
Definition rs_frame.hpp:207
rs2_stream stream_type() const
Definition rs_frame.hpp:39
const rs2_stream_profile * get() const
Definition rs_frame.hpp:146
int _index
Definition rs_frame.hpp:201
stream_profile clone(rs2_stream type, int index, rs2_format format) const
Definition rs_frame.hpp:63
bool operator==(const stream_profile &rhs)
Definition rs_frame.hpp:79
bool is_cloned()
Definition rs_frame.hpp:178
Definition rs_processing.hpp:700
Definition rs_frame.hpp:682
int get_bits_per_pixel() const
Definition rs_frame.hpp:740
int get_height() const
Definition rs_frame.hpp:716
video_frame(const frame &f)
Definition rs_frame.hpp:688
int get_stride_in_bytes() const
Definition rs_frame.hpp:728
int get_width() const
Definition rs_frame.hpp:704
int get_bytes_per_pixel() const
Definition rs_frame.hpp:752
bool extract_target_dimensions(rs2_calib_target_type calib_type, float *target_dims, unsigned int target_dims_size) const
Definition rs_frame.hpp:764
Definition rs_frame.hpp:211
stream_profile clone(rs2_stream type, int index, rs2_format format, int width, int height, const rs2_intrinsics &intr) const
Definition rs_frame.hpp:277
int height() const
Definition rs_frame.hpp:241
video_stream_profile()
Definition rs_frame.hpp:213
video_stream_profile(const stream_profile &sp)
Definition rs_frame.hpp:219
int width() const
Definition rs_frame.hpp:236
rs2_intrinsics get_intrinsics() const
Definition rs_frame.hpp:249
bool operator==(const video_stream_profile &other) const
Definition rs_frame.hpp:258
Definition rs_processing_gl.hpp:13
float rs2_depth_frame_get_distance(const rs2_frame *frame_ref, int x, int y, rs2_error **error)
rs2_vertex * rs2_get_frame_labeled_vertices(const rs2_frame *frame, rs2_error **error)
rs2_frame * rs2_extract_frame(rs2_frame *composite, int index, rs2_error **error)
void rs2_extract_target_dimensions(const rs2_frame *frame, rs2_calib_target_type calib_type, float *target_dims, unsigned int target_dims_size, rs2_error **error)
const void * rs2_get_frame_gpu_data_or_upload(const rs2_frame *frame, int *copied, rs2_error **error)
rs2_timestamp_domain rs2_get_frame_timestamp_domain(const rs2_frame *frameset, rs2_error **error)
rs2_time_t rs2_get_frame_timestamp(const rs2_frame *frame, rs2_error **error)
int rs2_get_frame_data_size(const rs2_frame *frame, rs2_error **error)
rs2_vertex * rs2_get_frame_vertices(const rs2_frame *frame, rs2_error **error)
int rs2_get_frame_points_count(const rs2_frame *frame, rs2_error **error)
void rs2_release_frame(rs2_frame *frame)
unsigned long long rs2_get_frame_number(const rs2_frame *frame, rs2_error **error)
unsigned int rs2_get_frame_labeled_points_height(const rs2_frame *frame, rs2_error **error)
unsigned int rs2_get_frame_labeled_points_width(const rs2_frame *frame, rs2_error **error)
int rs2_get_frame_bits_per_pixel(const rs2_frame *frame, rs2_error **error)
int rs2_is_frame_extendable_to(const rs2_frame *frame, rs2_extension extension_type, rs2_error **error)
const rs2_stream_profile * rs2_get_frame_stream_profile(const rs2_frame *frame, rs2_error **error)
unsigned int rs2_get_frame_labeled_points_bits_per_pixel(const rs2_frame *frame, rs2_error **error)
rs2_metadata_type rs2_get_frame_metadata(const rs2_frame *frame, rs2_frame_metadata_value frame_metadata, rs2_error **error)
int rs2_get_frame_height(const rs2_frame *frame, rs2_error **error)
void rs2_frame_add_ref(rs2_frame *frame, rs2_error **error)
int rs2_get_frame_labeled_points_count(const rs2_frame *frame, rs2_error **error)
rs2_timestamp_domain
Specifies the clock in relation to which the frame timestamp was measured.
Definition rs_frame.h:20
int rs2_supports_frame_metadata(const rs2_frame *frame, rs2_frame_metadata_value frame_metadata, rs2_error **error)
rs2_pixel * rs2_get_frame_texture_coordinates(const rs2_frame *frame, rs2_error **error)
void rs2_export_to_ply(const rs2_frame *frame, const char *fname, rs2_frame *texture, rs2_error **error)
rs2_frame_metadata_value
Per-Frame-Metadata is the set of read-only properties that might be exposed for each individual frame...
Definition rs_frame.h:30
void rs2_keep_frame(rs2_frame *frame)
const void * rs2_get_frame_gpu_data(const rs2_frame *frame, rs2_error **error)
int rs2_get_frame_stride_in_bytes(const rs2_frame *frame, rs2_error **error)
void rs2_pose_frame_get_pose_data(const rs2_frame *frame, rs2_pose *pose, rs2_error **error)
const void * rs2_get_frame_data(const rs2_frame *frame, rs2_error **error)
int rs2_embedded_frames_count(rs2_frame *composite, rs2_error **error)
rs2_sensor * rs2_get_frame_sensor(const rs2_frame *frame, rs2_error **error)
int rs2_get_frame_width(const rs2_frame *frame, rs2_error **error)
unsigned int rs2_get_frame_object_detection_count(const rs2_frame *frame, rs2_error **error)
void rs2_get_frame_object_detection(const rs2_frame *frame, unsigned int index, rs2_object_detection *detection, rs2_error **error)
float rs2_depth_frame_get_units(const rs2_frame *frame, rs2_error **error)
const char * rs2_get_stream_profile_name(const rs2_stream_profile *profile, rs2_error **error)
void * rs2_get_frame_labels(const rs2_frame *frame, rs2_error **error)
rs2_calib_target_type
Calibration target type.
Definition rs_frame.h:170
rs2_stream
Streams are different types of data provided by RealSense devices.
Definition rs_sensor.h:48
@ RS2_STREAM_DEPTH
Definition rs_sensor.h:50
@ RS2_STREAM_ANY
Definition rs_sensor.h:49
@ RS2_STREAM_INFRARED
Definition rs_sensor.h:52
@ RS2_STREAM_LABELED_POINT_CLOUD
Definition rs_sensor.h:62
@ RS2_STREAM_OBJECT_DETECTION
Definition rs_sensor.h:63
@ RS2_STREAM_COLOR
Definition rs_sensor.h:51
@ RS2_STREAM_POSE
Definition rs_sensor.h:57
@ RS2_STREAM_FISHEYE
Definition rs_sensor.h:53
void rs2_get_motion_intrinsics(const rs2_stream_profile *mode, rs2_motion_device_intrinsic *intrinsics, rs2_error **error)
float rs2_depth_stereo_frame_get_baseline(const rs2_frame *frame_ref, rs2_error **error)
void rs2_delete_stream_profile(rs2_stream_profile *mode)
const char * rs2_stream_to_string(rs2_stream stream)
int rs2_stream_profile_is(const rs2_stream_profile *mode, rs2_extension type, rs2_error **error)
void rs2_get_video_stream_resolution(const rs2_stream_profile *mode, int *width, int *height, rs2_error **error)
rs2_stream_profile * rs2_clone_video_stream_profile(const rs2_stream_profile *mode, rs2_stream stream, int index, rs2_format format, int width, int height, const rs2_intrinsics *intr, rs2_error **error)
int rs2_is_stream_profile_default(const rs2_stream_profile *mode, rs2_error **error)
void rs2_get_stream_profile_data(const rs2_stream_profile *mode, rs2_stream *stream, rs2_format *format, int *index, int *unique_id, int *framerate, rs2_error **error)
void rs2_get_extrinsics(const rs2_stream_profile *from, const rs2_stream_profile *to, rs2_extrinsics *extrin, rs2_error **error)
void rs2_get_video_stream_intrinsics(const rs2_stream_profile *mode, rs2_intrinsics *intrinsics, rs2_error **error)
rs2_format
A stream's format identifies how binary data is encoded within a frame.
Definition rs_sensor.h:70
@ RS2_FORMAT_RGB8
Definition rs_sensor.h:76
@ RS2_FORMAT_Z16
Definition rs_sensor.h:72
@ RS2_FORMAT_ANY
Definition rs_sensor.h:71
void rs2_register_extrinsics(const rs2_stream_profile *from, const rs2_stream_profile *to, rs2_extrinsics extrin, rs2_error **error)
rs2_stream_profile * rs2_clone_stream_profile(const rs2_stream_profile *mode, rs2_stream stream, int index, rs2_format format, rs2_error **error)
struct rs2_sensor rs2_sensor
Definition rs_types.h:320
struct rs2_stream_profile rs2_stream_profile
Definition rs_types.h:307
@ RS2_EXTENSION_MOTION_FRAME
Definition rs_types.h:164
@ RS2_EXTENSION_MOTION_PROFILE
Definition rs_types.h:174
@ RS2_EXTENSION_DISPARITY_FRAME
Definition rs_types.h:173
@ RS2_EXTENSION_POSE_PROFILE
Definition rs_types.h:176
@ RS2_EXTENSION_VIDEO_PROFILE
Definition rs_types.h:170
@ RS2_EXTENSION_PERCEPTION_FRAME
Definition rs_types.h:220
@ RS2_EXTENSION_VIDEO_FRAME
Definition rs_types.h:163
@ RS2_EXTENSION_PERCEPTION_PROFILE
Definition rs_types.h:223
@ RS2_EXTENSION_GPU_FRAME
Definition rs_types.h:224
@ RS2_EXTENSION_COMPOSITE_FRAME
Definition rs_types.h:165
@ RS2_EXTENSION_OBJECT_DETECTION_FRAME
Definition rs_types.h:221
@ RS2_EXTENSION_DEPTH_FRAME
Definition rs_types.h:167
@ RS2_EXTENSION_LABELED_POINTS
Definition rs_types.h:214
@ RS2_EXTENSION_POINTS
Definition rs_types.h:166
@ RS2_EXTENSION_POSE_FRAME
Definition rs_types.h:175
struct rs2_error rs2_error
Definition rs_types.h:296
long long rs2_metadata_type
Definition rs_types.h:344
struct rs2_frame rs2_frame
Definition rs_types.h:299
Definition rs_frame.hpp:777
float v
Definition rs_frame.hpp:778
float u
Definition rs_frame.hpp:778
Definition rs_frame.hpp:773
float y
Definition rs_frame.hpp:774
float x
Definition rs_frame.hpp:774
float z
Definition rs_frame.hpp:774
RS2_STREAM_MOTION / RS2_FORMAT_COMBINED_MOTION content is similar to ROS2's Imu message.
Definition rs_sensor.h:120
Cross-stream extrinsics: encodes the topology describing how the different devices are oriented.
Definition rs_sensor.h:113
Definition rs_types.hpp:27
Video stream intrinsics.
Definition rs_types.h:61
Motion device intrinsics: scale, bias, and variances.
Definition rs_types.h:74
Object detection result from algorithm.
Definition rs_types.h:124
Definition rs_types.h:111
3D vector in Euclidean coordinate space
Definition rs_types.h:100