4#ifndef LIBREALSENSE_RS2_PROCESSING_HPP
5#define LIBREALSENSE_RS2_PROCESSING_HPP
34 const frame& original,
43 original.
get(), new_bpp, new_width, new_height, new_stride, frame_type, &e);
57 const frame& original,
62 original.
get(), frame_type, &e);
68 const frame& original)
const
86 std::vector<rs2_frame*> refs(frames.size(), (
rs2_frame*)
nullptr);
87 for (
size_t i = 0; i < frames.size(); i++)
88 std::swap(refs[i], frames[i].frame_ref);
104 result.frame_ref =
nullptr;
128 on_frame_function(std::move(frm), src);
146 _queue = std::shared_ptr<rs2_frame_queue>(
162 f.frame_ref =
nullptr;
222 return static_cast<size_t>(
res);
240 std::shared_ptr<rs2_frame_queue>
get() {
return _queue; }
243 std::shared_ptr<rs2_frame_queue> _queue;
288 std::swap(
f.frame_ref,
ptr);
313 _block = std::shared_ptr<rs2_processing_block>(
355 std::shared_ptr<rs2_processing_block>
_block;
375 throw std::runtime_error(
"Error occured during execution of the processing block! See the log for more info");
463 throw std::runtime_error(
"Error occured during execution of the processing block! See the log for more info");
484 std::shared_ptr<rs2_processing_block> init()
488 auto block = std::shared_ptr<rs2_processing_block>(
517 std::shared_ptr<rs2_processing_block> init()
520 auto block = std::shared_ptr<rs2_processing_block>(
544 static std::shared_ptr<rs2_processing_block> init()
547 auto block = std::shared_ptr<rs2_processing_block>(
584 std::shared_ptr<rs2_processing_block> init()
587 auto block = std::shared_ptr<rs2_processing_block>(
608 std::shared_ptr<rs2_processing_block> init()
611 auto block = std::shared_ptr<rs2_processing_block>(
629 std::shared_ptr<rs2_processing_block> init()
632 auto block = std::shared_ptr<rs2_processing_block>(
648 :_results(queue_size)
650 _sync.
start(_results);
698 _sync.
invoke(std::move(f));
743 auto block = std::shared_ptr<rs2_processing_block>(
793 std::shared_ptr<rs2_processing_block> init()
796 auto block = std::shared_ptr<rs2_processing_block>(
839 std::shared_ptr<rs2_processing_block> init()
842 auto block = std::shared_ptr<rs2_processing_block>(
900 std::shared_ptr<rs2_processing_block> init()
903 auto block = std::shared_ptr<rs2_processing_block>(
956 std::shared_ptr<rs2_processing_block> init()
959 auto block = std::shared_ptr<rs2_processing_block>(
994 auto block = std::shared_ptr<rs2_processing_block>(
1029 std::shared_ptr<rs2_processing_block> init()
1032 auto block = std::shared_ptr<rs2_processing_block>(
1063 std::shared_ptr<rs2_processing_block> init()
1066 auto block = std::shared_ptr<rs2_processing_block>(
1109 std::shared_ptr<rs2_processing_block> init()
1112 auto block = std::shared_ptr<rs2_processing_block>(
1136 std::shared_ptr<rs2_processing_block> init()
1139 auto block = std::shared_ptr<rs2_processing_block>(
1171 std::shared_ptr<rs2_processing_block> init()
1174 auto block = std::shared_ptr<rs2_processing_block>(
1215 std::shared_ptr<rs2_processing_block> init()
1218 auto block = std::shared_ptr<rs2_processing_block>(
Definition rs_processing.hpp:709
align(std::shared_ptr< rs2_processing_block > block)
Definition rs_processing.hpp:736
frameset process(frameset frames)
Definition rs_processing.hpp:730
align(rs2_stream align_to)
Definition rs_processing.hpp:720
Definition rs_processing.hpp:621
asynchronous_syncer()
Definition rs_processing.hpp:626
Definition rs_processing.hpp:753
colorizer(std::shared_ptr< rs2_processing_block > block)
Definition rs_processing.hpp:790
video_frame colorize(frame depth) const
Definition rs_processing.hpp:784
colorizer()
Definition rs_processing.hpp:759
colorizer(float color_scheme)
Definition rs_processing.hpp:775
Definition rs_context.hpp:97
Definition rs_processing.hpp:809
decimation_filter(float magnitude)
Definition rs_processing.hpp:821
decimation_filter()
Definition rs_processing.hpp:815
decimation_filter(filter f)
Definition rs_processing.hpp:826
Definition rs_processing.hpp:1042
depth_huffman_decoder(filter f)
Definition rs_processing.hpp:1050
depth_huffman_decoder()
Definition rs_processing.hpp:1047
static void handle(rs2_error *e)
Definition rs_types.hpp:144
Definition rs_frame.hpp:339
Definition rs_processing.hpp:362
filter(std::shared_ptr< rs2_processing_block > block, int queue_size=1)
Definition rs_processing.hpp:384
filter(S processing_function, int queue_size=1)
Definition rs_processing.hpp:397
rs2_processing_block * get() const
Definition rs_processing.hpp:406
rs2::frame process(rs2::frame frame) const override
Definition rs_processing.hpp:370
bool is() const
Definition rs_processing.hpp:409
T as() const
Definition rs_processing.hpp:416
frame_queue get_queue()
Definition rs_processing.hpp:405
frame_queue _queue
Definition rs_processing.hpp:424
Definition rs_frame.hpp:1171
Definition rs_processing.hpp:119
void on_frame(rs2_frame *f, rs2_source *source) override
Definition rs_processing.hpp:124
frame_processor_callback(T on_frame)
Definition rs_processing.hpp:122
void release() override
Definition rs_processing.hpp:131
Definition rs_processing.hpp:135
void enqueue(frame f) const
Definition rs_processing.hpp:158
size_t capacity() const
Definition rs_processing.hpp:229
void operator()(frame f) const
Definition rs_processing.hpp:208
frame wait_for_frame(unsigned int timeout_ms=5000) const
Definition rs_processing.hpp:169
size_t size() const
Definition rs_processing.hpp:217
frame_queue()
Definition rs_processing.hpp:152
bool keep_frames() const
Definition rs_processing.hpp:234
std::shared_ptr< rs2_frame_queue > get()
Definition rs_processing.hpp:240
std::enable_if< std::is_base_of< rs2::frame, T >::value, bool >::type poll_for_frame(T *output) const
Definition rs_processing.hpp:183
std::enable_if< std::is_base_of< rs2::frame, T >::value, bool >::type try_wait_for_frame(T *output, unsigned int timeout_ms=5000) const
Definition rs_processing.hpp:195
frame_queue(unsigned int capacity, bool keep_frames=false)
Definition rs_processing.hpp:143
Definition rs_processing.hpp:19
frame allocate_composite_frame(std::vector< frame > frames) const
Definition rs_processing.hpp:82
void frame_ready(frame result) const
Definition rs_processing.hpp:99
rs2_source * _source
Definition rs_processing.hpp:107
frame allocate_motion_frame(const stream_profile &profile, const frame &original, rs2_extension frame_type=RS2_EXTENSION_MOTION_FRAME) const
Definition rs_processing.hpp:56
frame allocate_video_frame(const stream_profile &profile, const frame &original, int new_bpp=0, int new_width=0, int new_height=0, int new_stride=0, rs2_extension frame_type=RS2_EXTENSION_VIDEO_FRAME) const
Definition rs_processing.hpp:33
frame allocate_points(const stream_profile &profile, const frame &original) const
Definition rs_processing.hpp:67
Definition rs_frame.hpp:346
rs2_frame * get() const
Definition rs_frame.hpp:592
Definition rs_frame.hpp:948
Definition rs_processing.hpp:1149
hdr_merge(filter f)
Definition rs_processing.hpp:1158
hdr_merge()
Definition rs_processing.hpp:1156
Definition rs_processing.hpp:1076
hole_filling_filter(int mode)
Definition rs_processing.hpp:1092
hole_filling_filter(filter f)
Definition rs_processing.hpp:1097
hole_filling_filter()
Definition rs_processing.hpp:1082
Definition rs_options.hpp:12
options & operator=(const options &other)
Definition rs_options.hpp:134
void set_option(rs2_option option, float value) const
Definition rs_options.hpp:99
bool supports(rs2_option option) const
Definition rs_options.hpp:19
Definition rs_processing.hpp:431
pointcloud()
Definition rs_processing.hpp:436
pointcloud(rs2_stream stream, int index=0)
Definition rs_processing.hpp:438
pointcloud(std::shared_ptr< rs2_processing_block > block)
Definition rs_processing.hpp:479
points calculate(frame depth) const
Definition rs_processing.hpp:449
void map_to(frame mapped)
Definition rs_processing.hpp:470
Definition rs_frame.hpp:740
Definition rs_processing.hpp:252
const char * get_info(rs2_camera_info info) const
Definition rs_processing.hpp:341
processing_block(S processing_function)
Definition rs_processing.hpp:310
processing_block(std::shared_ptr< rs2_processing_block > block)
Definition rs_processing.hpp:299
void invoke(frame f) const
Definition rs_processing.hpp:285
bool supports(rs2_camera_info info) const
Definition rs_processing.hpp:328
void register_simple_option(rs2_option option_id, option_range range)
Definition rs_processing.hpp:349
std::shared_ptr< rs2_processing_block > _block
Definition rs_processing.hpp:355
void start(S on_frame)
Definition rs_processing.hpp:262
rs2_processing_block * get() const
Definition rs_processing.hpp:321
S & operator>>(S &on_frame)
Definition rs_processing.hpp:275
Definition rs_processing.hpp:1125
rates_printer()
Definition rs_processing.hpp:1131
Definition rs_processing.hpp:1184
sequence_id_filter()
Definition rs_processing.hpp:1190
sequence_id_filter(filter f)
Definition rs_processing.hpp:1202
sequence_id_filter(float sequence_id)
Definition rs_processing.hpp:1197
Definition rs_processing.hpp:916
spatial_filter(filter f)
Definition rs_processing.hpp:944
spatial_filter()
Definition rs_processing.hpp:925
spatial_filter(float smooth_alpha, float smooth_delta, float magnitude, float hole_fill)
Definition rs_processing.hpp:936
Definition rs_frame.hpp:23
const rs2_stream_profile * get() const
Definition rs_frame.hpp:137
Definition rs_processing.hpp:642
bool try_wait_for_frames(frameset *fs, unsigned int timeout_ms=5000) const
Definition rs_processing.hpp:685
bool poll_for_frames(frameset *fs) const
Definition rs_processing.hpp:668
void operator()(frame f) const
Definition rs_processing.hpp:696
syncer(int queue_size=1)
Definition rs_processing.hpp:647
frameset wait_for_frames(unsigned int timeout_ms=5000) const
Definition rs_processing.hpp:658
Definition rs_processing.hpp:855
temporal_filter(float smooth_alpha, float smooth_delta, int persistence_control)
Definition rs_processing.hpp:881
temporal_filter()
Definition rs_processing.hpp:863
temporal_filter(filter f)
Definition rs_processing.hpp:888
Definition rs_processing.hpp:556
threshold_filter(std::shared_ptr< rs2_processing_block > block)
Definition rs_processing.hpp:581
threshold_filter(float min_dist=0.15f, float max_dist=4.f)
Definition rs_processing.hpp:563
threshold_filter(filter f)
Definition rs_processing.hpp:570
Definition rs_frame.hpp:639
Definition rs_processing.hpp:530
y411_decoder()
Definition rs_processing.hpp:538
y411_decoder(std::shared_ptr< rs2_processing_block > block)
Definition rs_processing.hpp:541
Definition rs_processing.hpp:501
yuy_decoder()
Definition rs_processing.hpp:511
yuy_decoder(std::shared_ptr< rs2_processing_block > block)
Definition rs_processing.hpp:514
Definition rs_processing.hpp:1007
zero_order_invalidation()
Definition rs_processing.hpp:1013
zero_order_invalidation(filter f)
Definition rs_processing.hpp:1016
Definition rs_processing_gl.hpp:13
rs2_frame * rs2_allocate_points(rs2_source *source, const rs2_stream_profile *new_stream, rs2_frame *original, rs2_error **error)
rs2_frame * rs2_allocate_synthetic_motion_frame(rs2_source *source, const rs2_stream_profile *new_stream, rs2_frame *original, rs2_extension frame_type, rs2_error **error)
rs2_frame * rs2_allocate_composite_frame(rs2_source *source, rs2_frame **frames, int count, rs2_error **error)
void rs2_synthetic_frame_ready(rs2_source *source, rs2_frame *frame, rs2_error **error)
rs2_frame * rs2_allocate_synthetic_video_frame(rs2_source *source, const rs2_stream_profile *new_stream, rs2_frame *original, int new_bpp, int new_width, int new_height, int new_stride, rs2_extension frame_type, rs2_error **error)
rs2_option
Defines general configuration controls. These can generally be mapped to camera UVC controls,...
Definition rs_option.h:23
@ RS2_OPTION_FILTER_SMOOTH_ALPHA
Definition rs_option.h:61
@ RS2_OPTION_STREAM_FILTER
Definition rs_option.h:67
@ RS2_OPTION_HOLES_FILL
Definition rs_option.h:63
@ RS2_OPTION_SEQUENCE_ID
Definition rs_option.h:104
@ RS2_OPTION_MAX_DISTANCE
Definition rs_option.h:58
@ RS2_OPTION_COLOR_SCHEME
Definition rs_option.h:55
@ RS2_OPTION_STREAM_INDEX_FILTER
Definition rs_option.h:69
@ RS2_OPTION_MIN_DISTANCE
Definition rs_option.h:57
@ RS2_OPTION_FILTER_SMOOTH_DELTA
Definition rs_option.h:62
@ RS2_OPTION_FILTER_MAGNITUDE
Definition rs_option.h:60
@ RS2_OPTION_STREAM_FORMAT_FILTER
Definition rs_option.h:68
void rs2_delete_processing_block(rs2_processing_block *block)
rs2_processing_block * rs2_create_decimation_filter_block(rs2_error **error)
void rs2_delete_frame_queue(rs2_frame_queue *queue)
rs2_processing_block * rs2_create_sequence_id_filter(rs2_error **error)
rs2_processing_block * rs2_create_threshold(rs2_error **error)
rs2_processing_block * rs2_create_yuy_decoder(rs2_error **error)
int rs2_processing_block_register_simple_option(rs2_processing_block *block, rs2_option option_id, float min, float max, float step, float def, rs2_error **error)
void rs2_process_frame(rs2_processing_block *block, rs2_frame *frame, rs2_error **error)
const char * rs2_get_processing_block_info(const rs2_processing_block *block, rs2_camera_info info, rs2_error **error)
rs2_processing_block * rs2_create_units_transform(rs2_error **error)
int rs2_is_processing_block_extendable_to(const rs2_processing_block *block, rs2_extension extension_type, rs2_error **error)
rs2_frame_queue * rs2_create_frame_queue(int capacity, rs2_error **error)
void rs2_enqueue_frame(rs2_frame *frame, void *queue)
rs2_processing_block * rs2_create_temporal_filter_block(rs2_error **error)
rs2_processing_block * rs2_create_rates_printer_block(rs2_error **error)
rs2_processing_block * rs2_create_processing_block(rs2_frame_processor_callback *proc, rs2_error **error)
void rs2_start_processing(rs2_processing_block *block, rs2_frame_callback *on_frame, rs2_error **error)
rs2_frame * rs2_wait_for_frame(rs2_frame_queue *queue, unsigned int timeout_ms, rs2_error **error)
rs2_processing_block * rs2_create_hdr_merge_processing_block(rs2_error **error)
rs2_processing_block * rs2_create_colorizer(rs2_error **error)
int rs2_try_wait_for_frame(rs2_frame_queue *queue, unsigned int timeout_ms, rs2_frame **output_frame, rs2_error **error)
rs2_processing_block * rs2_create_align(rs2_stream align_to, rs2_error **error)
rs2_processing_block * rs2_create_y411_decoder(rs2_error **error)
int rs2_supports_processing_block_info(const rs2_processing_block *block, rs2_camera_info info, rs2_error **error)
rs2_processing_block * rs2_create_hole_filling_filter_block(rs2_error **error)
int rs2_poll_for_frame(rs2_frame_queue *queue, rs2_frame **output_frame, rs2_error **error)
rs2_processing_block * rs2_create_zero_order_invalidation_block(rs2_error **error)
int rs2_frame_queue_size(rs2_frame_queue *queue, rs2_error **error)
rs2_processing_block * rs2_create_spatial_filter_block(rs2_error **error)
rs2_processing_block * rs2_create_sync_processing_block(rs2_error **error)
rs2_processing_block * rs2_create_disparity_transform_block(unsigned char transform_to_disparity, rs2_error **error)
rs2_processing_block * rs2_create_huffman_depth_decompress_block(rs2_error **error)
rs2_processing_block * rs2_create_pointcloud(rs2_error **error)
rs2_stream
Streams are different types of data provided by RealSense devices.
Definition rs_sensor.h:43
rs2_camera_info
Read-only strings that can be queried from the device. Not all information attributes are available o...
Definition rs_sensor.h:22
struct rs2_source rs2_source
Definition rs_types.h:275
rs2_extension
Specifies advanced interfaces (capabilities) objects may implement.
Definition rs_types.h:167
@ RS2_EXTENSION_MOTION_FRAME
Definition rs_types.h:177
@ RS2_EXTENSION_HDR_MERGE
Definition rs_types.h:219
@ RS2_EXTENSION_HOLE_FILLING_FILTER
Definition rs_types.h:198
@ RS2_EXTENSION_ZERO_ORDER_FILTER
Definition rs_types.h:199
@ RS2_EXTENSION_DISPARITY_FILTER
Definition rs_types.h:195
@ RS2_EXTENSION_TEMPORAL_FILTER
Definition rs_types.h:197
@ RS2_EXTENSION_DEPTH_HUFFMAN_DECODER
Definition rs_types.h:213
@ RS2_EXTENSION_VIDEO_FRAME
Definition rs_types.h:176
@ RS2_EXTENSION_SPATIAL_FILTER
Definition rs_types.h:196
@ RS2_EXTENSION_DECIMATION_FILTER
Definition rs_types.h:193
@ RS2_EXTENSION_SEQUENCE_ID_FILTER
Definition rs_types.h:220
@ RS2_EXTENSION_THRESHOLD_FILTER
Definition rs_types.h:194
struct rs2_error rs2_error
Definition rs_types.h:259
struct rs2_options rs2_options
Definition rs_types.h:284
struct rs2_frame rs2_frame
Definition rs_types.h:262
struct rs2_processing_block rs2_processing_block
Definition rs_types.h:276
Definition rs_types.hpp:177
Definition rs_types.hpp:33