Skip to content

API Changes

ev-mp edited this page Jun 10, 2019 · 36 revisions

Version 2.23.0

  • Depth linearity enhancement - Mitigate the half-pixel disparity issue by adjusting the Amplitude factor in the modulation funciton ()

Version 2.22.0

  • Global Camera Timestamp:
  • Add rs2_timestamp_domain::RS2_TIMESTAMP_DOMAIN_GLOBAL_TIME enumeration type that will be used as default when the HW timestamp is available via the appropriate metadata attribute.
  • Add rs2_sensor* rs2_get_frame_sensor function
  • Depth units transformation - Processing block
  • rs2_processing_block* rs2_create_units_transform function

  • Add rs2_format::RS2_FORMAT_DISTANCE synthetic stream format

  • Add units_transform class

  • Add rs2_error * rs2_create_error functionality

  • Add pose_stream_profile class to handle T265 pose sensor.

  • Add frame::get_sensor() functionality

  • Add sensor_from_frame(frame f) functionality

  • GLSL Processing Blocks Module:

Version 2.20.0 to 2.21.0

New IR format introduced to D415 - W10:

  • Rectified, 10 bit per-pixels (packed) IR stream
  • FullHD configuration only 30 fps
  • Can be configured for use in conjunction with Depth stream (which is limited to 720p)
  • Available as:

Version 2.19.0 to 2.20.0

New Lens distortion model support added for T265 optical sensors -
The model is utilized in Project/Deproject routines

rs2_send_wheel_odometry - Wheel odometer API velocity type updated from angular to linear.

From version 2.19.0 to 2.19.1

No API changes

From version 2.18.0 to 2.19.0


Processing blocks/filters:

  1. rs2_get_recommended_processing_blocks Retrieving an ordered list of processing blocks/filters that are recommended to be used for a specific sensor. For instance, for the Depth sensor the list may include (Decimation->Disparity->Spatial->Temporal->HoleFilling->Disparity``) sequence.
  2. rs2_get_recommended_processing_blocks_count Retrieving the number of elements on the processing blocks list
  3. rs2_get_processing_block Extracting a specific processing block from the list
  4. rs2_delete_recommended_processing_blocks Deleting the processing blocks list. The function shall be used in conjunction with rs2_get_recommended_processing_blocks mentioned above to explicitly release the allocated resources.
  5. rs2_supports_processing_block_info Test for attribute availbility without throwing exception
  6. rs2_get_processing_block_info Retrieve processing block attribute
  7. rs2_is_processing_block_extendable_to Check API extension support
  8. rs2_create_zero_order_invalidation_block Adding zero order invalidation processing block

Options API:

  1. rs2_get_options_list Dynamic discovery of the options supported by a librealsense entity (sensor/processing_block/etc`).
  2. rs2_get_options_list_size Retrieve the number of elements in the options list.
  3. rs2_get_option_name Return human-readable option's name attribute.
  4. rs2_get_option_from_list Return an indexed element from the lsit
  5. rs2_delete_options_list Deleting the processing blocks list. The function shall be used in conjunction with rs2_get_options_list to explicitly release previously allocated resources.
  6. Extending RS2_OPTIONS enumeration list with:

Device management

  1. rs2_get_stereo_baseline Retrieve Stereo-based Depth sensor baseline
  2. rs2_context_add_software_device Inject a software (mockup) device into the SDK's context to be discoverable via query_devices API call.

T265-specific APIs

  1. rs2_context_unload_tracking_module Unload all perviously acquired tracking device instances. A device query for T265 will automatically take ownership of the connected device. This new API allows to explicitly release the devices so that they will be available for use by external processes.
  2. rs2_export_localization_map Advanced feature that allows to export the localization map for later reuse.
  3. rs2_import_localization_map Import previously-obtained localization map into device.
  4. rs2_set_static_node Add a positional bookmark (name&location) for positional referencing.
  5. rs2_get_static_node Retrieve previously stored bookmark position.
  6. rs2_load_wheel_odometry_config Load the robot platform configuration and calibration data into device. The data includes the rigid body transformation as well as calibration parameters.
  7. rs2_send_wheel_odometry Feed odometer data generated by a third-party sensor into the tracking device.

To be deprecated

  1. rs2_option_to_string - For existing options it will return option name, but for future API additions the user should call rs2_get_option_name instead

From version 2.17.0 to 2.18.0


  1. rs2_create_yuy_decoder Adding YUY2 to RGB processing block #3056 :
  2. rs2_create_error Exposing librealsense error to avoid cross-boundary new/delete operations:
  3. rs2_create_threshold Adding depth min/max clamp filter (processing block):
  4. RS2_OPTION_EMITTER_ON_OFF - adding RS2_OPTION_EMITTER_ON_OFF to options enumeration
  5. rs2_processing_block_register_simple_option - adding ability to register custom processing block options
  6. Adding save_to_ply and save_single_frameset processing blocks to C++ headers only (staging to be added to the API) under rs_export.hpp.


  1. set_devices_changed_callback - was removed from C++ header files

From version 2.16.0 to 2.17.0


  • #2773 introduced asynchronous pipeline API (recommended for high frequency data such as IMU). This change is limited to adding new overloads to pipeline.start method:
  1. rs2_pipeline_start_with_callback - pipeline start with C function pointer and user data, similar to sensor.start
  2. rs2_pipeline_start_with_callback_cpp - pipeline start with C++ frame callback object, similar to sensor.start
  3. rs2_pipeline_start_with_config_and_callback - pipeline start with callback and config
  4. rs2_pipeline_start_with_config_and_callback_cpp - pipeline start with callback and config (C++ frame callback object)
  • #2687 introduces new API to control recording compression:
  1. rs2_create_record_device_ex - create recorder and explicitly enable or disable compression. By default, compression will be enabled based on device type. D435i and T265 devices that provide high FPS streams disable compression by default to avoid frame drops during recording.
  • #2673 adds API to generate IMU and pose data with software_device:

Added support for IMU stream and recording IMU frames in software sensor:

  • stream_profile add_motion_stream(rs2_motion_stream motion_stream)
  • rs2_stream_profile* rs2_software_sensor_add_motion_stream(rs2_sensor* sensor, rs2_motion_stream motion_stream, rs2_error** error);
  • void on_motion_frame(rs2_software_motion_frame frame)
  • void rs2_software_sensor_on_motion_frame(rs2_sensor* sensor, rs2_software_motion_frame frame, rs2_error** error);

Added support for pose stream and recording pose frames in software sensor:

  • stream_profile add_pose_stream(rs2_pose_stream pose_stream)
  • rs2_stream_profile* rs2_software_sensor_add_pose_stream(rs2_sensor* sensor, rs2_pose_stream pose_stream, rs2_error** error);
  • void on_pose_frame(rs2_software_pose_frame frame)
  • void rs2_software_sensor_on_pose_frame(rs2_sensor* sensor, rs2_software_pose_frame frame, rs2_error** error);


  • #2757 is splitting C++ processing_block class into processing_block and filter classes, with filter being derived from processing_block. processing_block abstraction offers start and invoke operations and does not guaranty results will be immediately available (processing_block can chose to delay frames). filter is special type of processing block that performs its operation immediately. This lets users compose filters using apply_filter operation.

From version 2.15.0 to 2.16.0



  • processing_block::operator()(frame f) const was removed to reduce the overall ways processing block can be invoked. All processing blocks still contain invoke method for async processing (that sends the results to callback), and can be applied using added apply_filter method, in addition to helper methods like colorize and calculate specific to each block.

From version 2.14.0 to 2.15.0


  • rs2_query_devices_ex - provide a list of connected devices with user-specified mask. This allows to cherry-pick specific types (e.g D400/SR300) during device acquisition stage.

Version 2.14.0 vs 2.13.1


Version 2.13.0 (vs 2.11.1)


  • rs2_option::RS2_OPTION_INTER_CAM_SYNC_MODE - Master/Slave control for multi-cam setup synchronization.

  • rs2_frame_metadata_value - Extending available attributes:

    • Depth Sensor:
      • Laser Power, Laser Power Mode, Exposure Priority, Exposure ROI.
    • RGB Sensor:
      • Brightness, Contrast, Saturation, Sharpness, Backlight_Compensation, Hue, Gamma, White_Balance_Mode & Temperature, Powerline Frequency and Low Light Compensation.

From 2.11.0 to 2.11.1


From 2.10.4 to 2.11.0


  • rs2_create_processing_block_fptr - Allows to create custom processing blocks using C-bindings (C, LabView, .NET)
  • rs2_start_processing_fptr - Allows to start a processing block with a callback
  • rs2_config_enable_device_from_file_repeat_option - Allows to configure pipeline to play from recording while controlling playback-repeat behavior
  • rs2_create_hole_filling_filter_block - Hole-Filling filter supports three modes of operation:
    • Fill from left - fill the hole by the value from an immediate left neighbor
    • Fill from Far - select one of the up/down/left/right pixel neighbors farthest away from the camera
    • Fill from Near - select one of the up/down/left/right neighbors closest to the camera.
      It is recommended to use this post-processing block last in the filters chain. The functionality is integrated and can be reviewed in realsense-viewer/post-processing section

From 2.10.3 to 2.10.4

No API changes

From 2.10.2 to 2.10.3


Adding RS2_CAMERA_INFO_USB_TYPE_DESCRIPTOR enumeration to detect USB2 vs USB3 mode (when supported by the firmware).

From 2.10.1 to 2.10.2


Adding RS2_OPTION_AUTO_EXPOSURE_CONVERGE_STEP enumeration to control the FishEye Auto-Exposure algorithm The option is available for TM1-enabled devices only.

From 2.10.0 to 2.10.1

No API changes

From 2.9.1 to 2.10.0



  • Fixed rs2_set_devices_changed_callback - missing const specifier and void** user parameter were added.
  • Change the 'Holes Filling' control for Temporal Post-Processing filter to be activated with RS2_OPTION_HOLES_FILL instead of RS2_OPTION_FILTER_MAGNITUDE

From 2.9.0 to 2.9.1


  • rs2_keep_frame - this function can be used to preserve specific frame for longer processing. Calling it signals the intention to not return this frame to the pool within next 100ms.

From 2.8.3 to 2.9.0


  • rs2_create_disparity_transform_block A depth data conversion class that transforms depth data info/from disparity domain for stereo-based depth sensors (D400 series). This functionality allows to run post-processing filters in disparity domain to enhance the filtered outcome.

  • rs2_depth_stereo_frame_get_baseline Retrieve the stereoscopic baseline in mm for stereo-based depth camera.

  • rs2_export_to_ply Making the export functionality publicly available, also addressing #862

From 2.8.2 to 2.8.3


  • rs2_log - Usability function that allows the user to add logs to librealsense internal logger. The feature is useful in debugging and profiling scenarios.

Post-processing depth filters:

The filters have been integrated into the realsense-viewer and depth-quality tools.

From 2.8.1 to 2.8.2

No API changes introduced

From 2.8.0 to 2.8.1


  • rs2_start_processing_queue - convenience function that lets the user target the output of a processing block (for example align) directly into a frame_queue. This helps in languages where function pointers are not available, such as LabView

Signature of rs2_is_option_read_only, rs2_get_option, rs2_set_option, rs2_supports_option, rs2_get_option_description and rs2_get_option_value_description was changed. First parameter used to be pointer to rs2_sensor and now is pointer to rs2_options. However, it is 100% safe to cast pointer to rs2_sensor to pointer to rs2_options.

From 2.7.9 to 2.8.0


See Pipeline Changes pull-request for explanation



From 2.7.7 to 2.7.9




Signature Changed

You can’t perform that action at this time.