Intel® RealSense™ Cross Platform API  2.13.0
Intel Realsense Cross-platform API
Functions
rs_processing.h File Reference

Exposes RealSense processing-block functionality for C compilers. More...

#include "rs_types.h"
#include "rs_sensor.h"

Go to the source code of this file.

Functions

rs2_processing_blockrs2_create_colorizer (rs2_error **error)
 
rs2_processing_blockrs2_create_sync_processing_block (rs2_error **error)
 
rs2_processing_blockrs2_create_pointcloud (rs2_error **error)
 
rs2_processing_blockrs2_create_processing_block (rs2_frame_processor_callback *proc, rs2_error **error)
 
rs2_processing_blockrs2_create_processing_block_fptr (rs2_frame_processor_callback_ptr proc, void *context, rs2_error **error)
 
void rs2_start_processing (rs2_processing_block *block, rs2_frame_callback *on_frame, rs2_error **error)
 
void rs2_start_processing_fptr (rs2_processing_block *block, rs2_frame_callback_ptr on_frame, void *user, rs2_error **error)
 
void rs2_start_processing_queue (rs2_processing_block *block, rs2_frame_queue *queue, rs2_error **error)
 
void rs2_process_frame (rs2_processing_block *block, rs2_frame *frame, rs2_error **error)
 
void rs2_delete_processing_block (rs2_processing_block *block)
 
rs2_frame_queuers2_create_frame_queue (int capacity, rs2_error **error)
 
void rs2_delete_frame_queue (rs2_frame_queue *queue)
 
rs2_framers2_wait_for_frame (rs2_frame_queue *queue, unsigned int timeout_ms, rs2_error **error)
 
int rs2_poll_for_frame (rs2_frame_queue *queue, rs2_frame **output_frame, rs2_error **error)
 
void rs2_enqueue_frame (rs2_frame *frame, void *queue)
 
rs2_processing_blockrs2_create_align (rs2_stream align_to, rs2_error **error)
 
rs2_processing_blockrs2_create_decimation_filter_block (rs2_error **error)
 
rs2_processing_blockrs2_create_temporal_filter_block (rs2_error **error)
 
rs2_processing_blockrs2_create_spatial_filter_block (rs2_error **error)
 
rs2_processing_blockrs2_create_disparity_transform_block (unsigned char transform_to_disparity, rs2_error **error)
 
rs2_processing_blockrs2_create_hole_filling_filter_block (rs2_error **error)
 

Detailed Description

Exposes RealSense processing-block functionality for C compilers.

Function Documentation

◆ rs2_create_align()

rs2_processing_block* rs2_create_align ( rs2_stream  align_to,
rs2_error **  error 
)

Creates Align processing block.

Parameters
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_create_colorizer()

rs2_processing_block* rs2_create_colorizer ( rs2_error **  error)

Creates Depth-Colorizer processing block that can be used to quickly visualize the depth data This block will accept depth frames as input and replace them by depth frames with format RGB8 Non-depth frames are passed through Further customization will be added soon (format, color-map, histogram equalization control)

Parameters
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_create_decimation_filter_block()

rs2_processing_block* rs2_create_decimation_filter_block ( rs2_error **  error)

Creates Depth post-processing filter block. This block accepts depth frames, applies decimation filter and plots modified prames Note that due to the modifiedframe size, the decimated frame repaces the original one

Parameters
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_create_disparity_transform_block()

rs2_processing_block* rs2_create_disparity_transform_block ( unsigned char  transform_to_disparity,
rs2_error **  error 
)

Creates a post processing block that provides for depth<->disparity domain transformation for stereo-based depth modules

Parameters
[in]transform_to_disparityflag select the transform direction: true = depth->disparity, and vice versa
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_create_frame_queue()

rs2_frame_queue* rs2_create_frame_queue ( int  capacity,
rs2_error **  error 
)

create frame queue. frame queues are the simplest x-platform synchronization primitive provided by librealsense to help developers who are not using async APIs

Parameters
[in]capacitymax number of frames to allow to be stored in the queue before older frames will start to get dropped
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored
Returns
handle to the frame queue, must be released using rs2_delete_frame_queue

◆ rs2_create_hole_filling_filter_block()

rs2_processing_block* rs2_create_hole_filling_filter_block ( rs2_error **  error)

Creates Depth post-processing hole filling block. The filter replaces empty pixels with data from adjacent pixels based on the method selected

Parameters
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_create_pointcloud()

rs2_processing_block* rs2_create_pointcloud ( rs2_error **  error)

Creates Point-Cloud processing block. This block accepts depth frames and outputs Points frames In addition, given non-depth frame, the block will align texture coordinate to the non-depth stream

Parameters
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_create_processing_block()

rs2_processing_block* rs2_create_processing_block ( rs2_frame_processor_callback proc,
rs2_error **  error 
)

This method creates new custom processing block. This lets the users pass frames between module boundaries for processing This is an infrastructure function aimed at middleware developers, and also used by provided blocks such as sync, colorizer, etc..

Parameters
procProcessing function to be applied to every frame entering the block
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored
Returns
new processing block, to be released by rs2_delete_processing_block

◆ rs2_create_processing_block_fptr()

rs2_processing_block* rs2_create_processing_block_fptr ( rs2_frame_processor_callback_ptr  proc,
void *  context,
rs2_error **  error 
)

This method creates new custom processing block from function pointer. This lets the users pass frames between module boundaries for processing This is an infrastructure function aimed at middleware developers, and also used by provided blocks such as sync, colorizer, etc..

Parameters
procProcessing function pointer to be applied to every frame entering the block
contextUser context (can be anything or null) to be passed later as ctx param of the callback
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored
Returns
new processing block, to be released by rs2_delete_processing_block

◆ rs2_create_spatial_filter_block()

rs2_processing_block* rs2_create_spatial_filter_block ( rs2_error **  error)

Creates Depth post-processing spatial filter block. This block accepts depth frames, applies spatial filters and plots modified prames

Parameters
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_create_sync_processing_block()

rs2_processing_block* rs2_create_sync_processing_block ( rs2_error **  error)

Creates Sync processing block. This block accepts arbitrary frames and output composite frames of best matches Some frames may be released within the syncer if they are waiting for match for too long Syncronization is done (mostly) based on timestamps so good hardware timestamps are a pre-condition

Parameters
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_create_temporal_filter_block()

rs2_processing_block* rs2_create_temporal_filter_block ( rs2_error **  error)

Creates Depth post-processing filter block. This block accepts depth frames, applies temporal filter

Parameters
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_delete_frame_queue()

void rs2_delete_frame_queue ( rs2_frame_queue queue)

deletes frame queue and releases all frames inside it

Parameters
[in]queuequeue to delete

◆ rs2_delete_processing_block()

void rs2_delete_processing_block ( rs2_processing_block block)

Deletes the processing block

Parameters
[in]blockProcessing block

◆ rs2_enqueue_frame()

void rs2_enqueue_frame ( rs2_frame frame,
void *  queue 
)

enqueue new frame into a queue

Parameters
[in]frameframe handle to enqueue (this operation passed ownership to the queue)
[in]queuethe frame queue data structure

◆ rs2_poll_for_frame()

int rs2_poll_for_frame ( rs2_frame_queue queue,
rs2_frame **  output_frame,
rs2_error **  error 
)

poll if a new frame is available and dequeue if it is

Parameters
[in]queuethe frame queue data structure
[out]output_frameframe handle to be released using rs2_release_frame
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored
Returns
true if new frame was stored to output_frame

◆ rs2_process_frame()

void rs2_process_frame ( rs2_processing_block block,
rs2_frame frame,
rs2_error **  error 
)

This method is used to pass frame into a processing block

Parameters
[in]blockProcessing block
[in]frameFrame to process, ownership is moved to the block object
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_start_processing()

void rs2_start_processing ( rs2_processing_block block,
rs2_frame_callback on_frame,
rs2_error **  error 
)

This method is used to direct the output from the processing block to some callback or sink object

Parameters
[in]blockProcessing block
[in]on_frameCallback to be invoked every time the processing block calls frame_ready
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_start_processing_fptr()

void rs2_start_processing_fptr ( rs2_processing_block block,
rs2_frame_callback_ptr  on_frame,
void *  user,
rs2_error **  error 
)

This method is used to direct the output from the processing block to some callback or sink object

Parameters
[in]blockProcessing block
[in]on_frameCallback function to be invoked every time the processing block calls frame_ready
[in]userUser context for the callback (can be anything or null)
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_start_processing_queue()

void rs2_start_processing_queue ( rs2_processing_block block,
rs2_frame_queue queue,
rs2_error **  error 
)

This method is used to direct the output from the processing block to a dedicated queue object

Parameters
[in]blockProcessing block
[in]queueQueue to place the processed frames to
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored

◆ rs2_wait_for_frame()

rs2_frame* rs2_wait_for_frame ( rs2_frame_queue queue,
unsigned int  timeout_ms,
rs2_error **  error 
)

wait until new frame becomes available in the queue and dequeue it

Parameters
[in]queuethe frame queue data structure
[out]errorif non-null, receives any error that occurs during this call, otherwise, errors are ignored
Returns
frame handle to be released using rs2_release_frame