Intel® RealSense™ Cross Platform API
Intel Realsense Cross-platform API
|
Go to the documentation of this file.
4 #ifndef LIBREALSENSE_RS2_FRAME_HPP
5 #define LIBREALSENSE_RS2_FRAME_HPP
14 class processing_block;
18 class pipeline_profile;
20 class video_stream_profile;
115 std::stringstream ss;
131 operator bool()
const {
return _profile !=
nullptr; }
181 explicit operator std::shared_ptr<rs2_stream_profile>() {
return _clone; }
190 std::shared_ptr<rs2_stream_profile>
_clone;
373 other.frame_ref =
nullptr;
375 frame_number = other.frame_number;
376 profile = other.profile;
394 : frame_ref(other.frame_ref)
398 frame_number = other.frame_number;
399 profile = other.profile;
408 std::swap(frame_ref, other.frame_ref);
411 std::swap(frame_number, other.frame_number);
412 std::swap(profile, other.profile);
436 operator bool()
const {
return frame_ref !=
nullptr; }
625 unsigned long long frame_number = 0;
705 operator const float*()
const {
return &
x; }
709 operator const float*()
const {
return &
u; }
749 return (
const vertex*)res;
760 std::swap(texture.frame_ref, ptr);
872 auto data =
reinterpret_cast<const float*
>(
get_data());
873 return rs2_vector{ data[0], data[1], data[2] };
949 result = std::move(frm);
963 if (!frm)
throw error(
"Frame of requested stream type was not found!");
1075 auto count =
size();
1076 for (
size_t i = 0; i < count; i++)
1081 action(
frame(fref));
1099 throw error(
"Requested index is out of range!");
1102 class iterator :
public std::iterator<std::forward_iterator_tag, frame>
1125 T on_frame_function;
1131 on_frame_function(
frame{ fref });
1137 #endif // LIBREALSENSE_RS2_FRAME_HPP
Definition: rs_frame.hpp:703
video_frame get_fisheye_frame(const size_t index=0) const
Definition: rs_frame.hpp:1019
3D vector in Euclidean coordinate space
Definition: rs_types.h:97
void rs2_get_video_stream_intrinsics(const rs2_stream_profile *mode, rs2_intrinsics *intrinsics, rs2_error **error)
void foreach_rs(T action) const
Definition: rs_frame.hpp:1072
motion_stream_profile(const stream_profile &sp)
Definition: rs_frame.hpp:282
rs2_format format() const
Definition: rs_frame.hpp:44
bool operator==(const stream_profile &rhs)
Definition: rs_frame.hpp:79
int get_stride_in_bytes() const
Definition: rs_frame.hpp:676
depth_frame get_depth_frame() const
Definition: rs_frame.hpp:971
rs2_time_t rs2_get_frame_timestamp(const rs2_frame *frame, rs2_error **error)
@ RS2_STREAM_POSE
Definition: rs_sensor.h:51
Definition: rs_frame.hpp:336
stream_profile clone(rs2_stream type, int index, rs2_format format, int width, int height, const rs2_intrinsics &intr) const
Definition: rs_frame.hpp:259
rs2_intrinsics get_intrinsics() const
Definition: rs_frame.hpp:238
Definition: rs_processing.hpp:18
Definition: rs_frame.hpp:908
int rs2_supports_frame_metadata(const rs2_frame *frame, rs2_frame_metadata_value frame_metadata, rs2_error **error)
float get_distance(int x, int y) const
Definition: rs_frame.hpp:810
@ RS2_EXTENSION_MOTION_FRAME
Definition: rs_types.h:145
Cross-stream extrinsics: encodes the topology describing how the different devices are oriented.
Definition: rs_sensor.h:94
Definition: rs_frame.hpp:22
const rs2_stream_profile * _profile
Definition: rs_frame.hpp:189
rs2_sensor * get_sensor()
Definition: rs_frame.hpp:438
int fps() const
Definition: rs_frame.hpp:49
stream_profile(const rs2_stream_profile *profile)
Definition: rs_frame.hpp:170
bool is() const
Definition: rs_frame.hpp:563
T as() const
Definition: rs_frame.hpp:103
void rs2_register_extrinsics(const rs2_stream_profile *from, const rs2_stream_profile *to, rs2_extrinsics extrin, rs2_error **error)
void rs2_delete_stream_profile(rs2_stream_profile *mode)
float get_baseline(void) const
Definition: rs_frame.hpp:840
frame first(rs2_stream s, rs2_format f=RS2_FORMAT_ANY) const
Definition: rs_frame.hpp:960
const vertex * get_vertices() const
Definition: rs_frame.hpp:744
void swap(frame &other)
Definition: rs_frame.hpp:406
@ RS2_EXTENSION_POSE_PROFILE
Definition: rs_types.h:157
void keep()
Definition: rs_frame.hpp:430
frame & operator=(frame other)
Definition: rs_frame.hpp:383
Video stream intrinsics.
Definition: rs_types.h:58
float z
Definition: rs_frame.hpp:704
frame apply_filter(filter_interface &filter)
Definition: rs_frame.hpp:586
struct rs2_frame rs2_frame
Definition: rs_types.h:220
frame first_or_default(rs2_stream s, rs2_format f=RS2_FORMAT_ANY) const
Definition: rs_frame.hpp:943
const char * rs2_stream_to_string(rs2_stream stream)
@ RS2_FORMAT_RGB8
Definition: rs_sensor.h:65
rs2_stream _type
Definition: rs_frame.hpp:196
unsigned long long get_frame_number() const
Definition: rs_frame.hpp:514
std::shared_ptr< rs2_stream_profile > _clone
Definition: rs_frame.hpp:190
void rs2_release_frame(rs2_frame *frame)
Definition: rs_frame.hpp:707
float rs2_depth_stereo_frame_get_baseline(const rs2_frame *frame_ref, rs2_error **error)
std::string stream_name() const
Definition: rs_frame.hpp:113
rs2_stream stream_type() const
Definition: rs_frame.hpp:39
@ RS2_EXTENSION_COMPOSITE_FRAME
Definition: rs_types.h:146
stream_profile clone(rs2_stream type, int index, rs2_format format) const
Definition: rs_frame.hpp:63
pose_stream_profile(const stream_profile &sp)
Definition: rs_frame.hpp:314
rs2_timestamp_domain rs2_get_frame_timestamp_domain(const rs2_frame *frameset, rs2_error **error)
rs2_motion_device_intrinsic get_motion_intrinsics() const
Definition: rs_frame.hpp:297
int rs2_get_frame_width(const rs2_frame *frame, rs2_error **error)
@ RS2_STREAM_FISHEYE
Definition: rs_sensor.h:47
float rs2_depth_frame_get_distance(const rs2_frame *frame_ref, int x, int y, rs2_error **error)
void rs2_get_video_stream_resolution(const rs2_stream_profile *mode, int *width, int *height, rs2_error **error)
int rs2_is_stream_profile_default(const rs2_stream_profile *mode, rs2_error **error)
Definition: rs_frame.hpp:1102
const void * get_data() const
Definition: rs_frame.hpp:538
rs2_extrinsics get_extrinsics_to(const stream_profile &to) const
Definition: rs_frame.hpp:148
frame operator[](size_t index) const
Definition: rs_frame.hpp:1089
@ RS2_STREAM_COLOR
Definition: rs_sensor.h:45
@ RS2_EXTENSION_MOTION_PROFILE
Definition: rs_types.h:155
iterator begin() const
Definition: rs_frame.hpp:1116
rs2_sensor * rs2_get_frame_sensor(const rs2_frame *frame, rs2_error **error)
int get_bits_per_pixel() const
Definition: rs_frame.hpp:688
@ RS2_FORMAT_Z16
Definition: rs_sensor.h:61
float u
Definition: rs_frame.hpp:708
pose_frame get_pose_frame(const size_t index=0) const
Definition: rs_frame.hpp:1041
rs2_format _format
Definition: rs_frame.hpp:195
rs2_pixel * rs2_get_frame_texture_coordinates(const rs2_frame *frame, rs2_error **error)
bool supports_frame_metadata(rs2_frame_metadata_value frame_metadata) const
Definition: rs_frame.hpp:502
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)
rs2_format
A stream's format identifies how binary data is encoded within a frame.
Definition: rs_sensor.h:58
int rs2_get_frame_height(const rs2_frame *frame, rs2_error **error)
Motion device intrinsics: scale, bias, and variances.
Definition: rs_types.h:71
double get_timestamp() const
Definition: rs_frame.hpp:467
depth_frame(const frame &f)
Definition: rs_frame.hpp:793
stream_profile()
Definition: rs_frame.hpp:28
Definition: rs_frame.hpp:201
float y
Definition: rs_frame.hpp:704
frameset(const frame &f)
Definition: rs_frame.hpp:919
frame()
Definition: rs_frame.hpp:342
frame(frame &&other) noexcept
Definition: rs_frame.hpp:371
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)
Definition: rs_frame.hpp:712
Definition: rs_processing.hpp:233
rs2_frame * get() const
Definition: rs_frame.hpp:583
float x
Definition: rs_frame.hpp:704
bool is_cloned()
Definition: rs_frame.hpp:169
rs2_metadata_type rs2_get_frame_metadata(const rs2_frame *frame, rs2_frame_metadata_value frame_metadata, rs2_error **error)
size_t size() const
Definition: rs_frame.hpp:1062
void on_frame(rs2_frame *fref) override
Definition: rs_frame.hpp:1129
video_stream_profile(const stream_profile &sp)
Definition: rs_frame.hpp:208
Definition: rs_processing.hpp:597
bool _default
Definition: rs_frame.hpp:198
@ RS2_EXTENSION_VIDEO_PROFILE
Definition: rs_types.h:151
Definition: rs_context.hpp:11
rs2_stream_profile * rs2_clone_stream_profile(const rs2_stream_profile *mode, rs2_stream stream, int index, rs2_format format, rs2_error **error)
long long rs2_metadata_type
Definition: rs_types.h:255
Definition: rs_sensor.hpp:103
rs2_vertex * rs2_get_frame_vertices(const rs2_frame *frame, rs2_error **error)
frame(rs2_frame *ref)
Definition: rs_frame.hpp:347
void rs2_get_extrinsics(const rs2_stream_profile *from, const rs2_stream_profile *to, rs2_extrinsics *extrin, rs2_error **error)
struct rs2_sensor rs2_sensor
Definition: rs_types.h:241
@ RS2_STREAM_DEPTH
Definition: rs_sensor.h:44
@ RS2_EXTENSION_VIDEO_FRAME
Definition: rs_types.h:144
rs2_frame * rs2_extract_frame(rs2_frame *composite, int index, rs2_error **error)
video_frame(const frame &f)
Definition: rs_frame.hpp:636
int get_width() const
Definition: rs_frame.hpp:652
bool operator==(const iterator &other) const
Definition: rs_frame.hpp:1107
iterator end() const
Definition: rs_frame.hpp:1117
void rs2_frame_add_ref(rs2_frame *frame, rs2_error **error)
int _index
Definition: rs_frame.hpp:192
@ RS2_STREAM_ANY
Definition: rs_sensor.h:43
Definition: rs_types.h:108
int rs2_stream_profile_is(const rs2_stream_profile *mode, rs2_extension type, rs2_error **error)
const rs2_stream_profile * get() const
Definition: rs_frame.hpp:137
frame operator*()
Definition: rs_frame.hpp:1110
bool is_default() const
Definition: rs_frame.hpp:125
int rs2_embedded_frames_count(rs2_frame *composite, rs2_error **error)
void rs2_export_to_ply(const rs2_frame *frame, const char *fname, rs2_frame *texture, rs2_error **error)
Definition: rs_frame.hpp:877
int height() const
Definition: rs_frame.hpp:230
~frame()
Definition: rs_frame.hpp:419
size_t size() const
Definition: rs_frame.hpp:777
frameset()
Definition: rs_frame.hpp:914
Definition: rs_frame.hpp:307
iterator & operator++()
Definition: rs_frame.hpp:1106
points(const frame &f)
Definition: rs_frame.hpp:724
video_frame get_color_frame() const
Definition: rs_frame.hpp:980
bool is() const
Definition: rs_frame.hpp:92
@ RS2_EXTENSION_DEPTH_FRAME
Definition: rs_types.h:148
@ RS2_FORMAT_ANY
Definition: rs_sensor.h:60
rs2_metadata_type get_frame_metadata(rs2_frame_metadata_value frame_metadata) const
Definition: rs_frame.hpp:490
frame_callback(T on_frame)
Definition: rs_frame.hpp:1127
int rs2_get_frame_stride_in_bytes(const rs2_frame *frame, rs2_error **error)
virtual ~filter_interface()=default
void register_extrinsics_to(const stream_profile &to, rs2_extrinsics extrinsics)
Definition: rs_frame.hpp:162
points()
Definition: rs_frame.hpp:718
rs2_timestamp_domain get_frame_timestamp_domain() const
Definition: rs_frame.hpp:478
Definition: rs_frame.hpp:819
Definition: rs_frame.hpp:786
T as() const
Definition: rs_frame.hpp:573
struct rs2_stream_profile rs2_stream_profile
Definition: rs_types.h:228
Definition: rs_types.hpp:78
Definition: rs_frame.hpp:329
frame(const frame &other)
Definition: rs_frame.hpp:393
Definition: rs_processing.hpp:343
const int get_data_size() const
Definition: rs_frame.hpp:526
const void * rs2_get_frame_data(const rs2_frame *frame, rs2_error **error)
stream_profile get_profile() const
Definition: rs_frame.hpp:550
Definition: rs_processing.hpp:134
void release() override
Definition: rs_frame.hpp:1134
unsigned long long rs2_get_frame_number(const rs2_frame *frame, rs2_error **error)
int unique_id() const
Definition: rs_frame.hpp:54
Definition: rs_frame.hpp:629
virtual rs2::frame process(rs2::frame frame) const =0
static void handle(rs2_error *e)
Definition: rs_types.hpp:130
video_frame get_infrared_frame(const size_t index=0) const
Definition: rs_frame.hpp:997
@ RS2_STREAM_INFRARED
Definition: rs_sensor.h:46
float v
Definition: rs_frame.hpp:708
void export_to_ply(const std::string &fname, video_frame texture)
Definition: rs_frame.hpp:757
void reset()
Definition: rs_frame.hpp:604
iterator(const frameset *owner, size_t index=0)
Definition: rs_frame.hpp:1105
int rs2_get_frame_data_size(const rs2_frame *frame, rs2_error **error)
const texture_coordinate * get_texture_coordinates() const
Definition: rs_frame.hpp:769
int width() const
Definition: rs_frame.hpp:225
Definition: rs_frame.hpp:1123
int get_bytes_per_pixel() const
Definition: rs_frame.hpp:700
const rs2_stream_profile * rs2_get_frame_stream_profile(const rs2_frame *frame, rs2_error **error)
motion_frame(const frame &f)
Definition: rs_frame.hpp:856
@ RS2_EXTENSION_POINTS
Definition: rs_types.h:147
int _uid
Definition: rs_frame.hpp:193
@ RS2_EXTENSION_POSE_FRAME
Definition: rs_types.h:156
Definition: rs_pipeline.hpp:18
rs2_timestamp_domain
Specifies the clock in relation to which the frame timestamp was measured.
Definition: rs_frame.h:19
Definition: rs_processing.hpp:412
int _framerate
Definition: rs_frame.hpp:194
@ RS2_EXTENSION_DISPARITY_FRAME
Definition: rs_types.h:154
rs2_pose get_pose_data() const
Definition: rs_frame.hpp:898
rs2_vector get_motion_data() const
Definition: rs_frame.hpp:870
int stream_index() const
Definition: rs_frame.hpp:34
Definition: rs_frame.hpp:275
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:29
bool operator!=(const iterator &other) const
Definition: rs_frame.hpp:1108
int rs2_is_frame_extendable_to(const rs2_frame *frame, rs2_extension extension_type, rs2_error **error)
void add_ref() const
Definition: rs_frame.hpp:597
int rs2_get_frame_bits_per_pixel(const rs2_frame *frame, rs2_error **error)
int rs2_get_frame_points_count(const rs2_frame *frame, rs2_error **error)
pose_frame(const frame &f)
Definition: rs_frame.hpp:884
void rs2_pose_frame_get_pose_data(const rs2_frame *frame, rs2_pose *pose, rs2_error **error)
Definition: rs_frame.hpp:849
void rs2_keep_frame(rs2_frame *frame)
disparity_frame(const frame &f)
Definition: rs_frame.hpp:826
rs2_stream
Streams are different types of data provided by RealSense devices.
Definition: rs_sensor.h:41
struct rs2_error rs2_error
Definition: rs_types.h:217
int get_height() const
Definition: rs_frame.hpp:664
rs2::frame process(rs2::frame frame) const override
Definition: rs_processing.hpp:352
void rs2_get_motion_intrinsics(const rs2_stream_profile *mode, rs2_motion_device_intrinsic *intrinsics, rs2_error **error)
Definition: rs_types.hpp:25