Skip to content

API Changes

ev-mp edited this page Mar 2, 2020 · 72 revisions

Version 2.33.1

Configuration Serialization:

Logging enhancement:

L500-specific:

Controls:

Presets: /** \brief For L500 devices: provides optimized settings (presets) for specific types of usage. */

Option characterization:

Enum to string convenience APIs

Version 2.32.1

Version 2.31.0

D4xx Calibration routines: https://github.com/IntelRealSense/librealsense/commit/e89e4d6477e619291789d5b2be141e55303687e5

Metadata attributes:

Options:

Raw Streaming Formats:

PLY Exporter customization

Version 2.30.0

  • RS2_NOTIFICATION_CATEGORY_POSE_RELOCALIZATION - category added to rs2_notification_category. The notification designates T265 performing relocalization event, i.e. finding a match between the current position and a previously recorded map.

Version 2.29.0

Changed enum RS2_CAMERA_INFO_FIRMWARE_UPDATE_SERIAL_NUMBER to RS2_CAMERA_INFO_FIRMWARE_UPDATE_ID

Version 2.27.0

  • T265 Calibration Write APIs: Allow custom calibration to be provided to the device and committed to device flash memory. There is also a mechanism to roll-back to factory calibration. Currently these APIs are only implemented for the T265, but similar scheme is likely to be used for other families

  • rs2_clone_video_stream_profile - Utility function used when developing custom processing blocks that modify video stream resolution

Version 2.26.0

Firmware Update with non Digitally-signed images:

Version 2.25.0

Introduce T265-specific options

  • RS2_OPTION_ENABLE_MAPPING - Enable internal mapping generation required for location correction (feedback). Turning this option off will result in device running in an open loop.
  • RS2_OPTION_ENABLE_RELOCALIZATION - Allow the device ti utilize the internal/stored map to correct the current location based on previously recorded data.
  • RS2_OPTION_ENABLE_POSE_JUMPING - Allow the device to correct the location by making a discontinuous transformation (jump)
  • RS2_OPTION_ENABLE_DYNAMIC_CALIBRATION Read more in the above link

Version 2.24.0

  • Firmware Update functionality
  • Switch SR300 and D400 camera into DFU (Firmware Update) mode rs2_enter_update_state. When applied, the D400 camera will disconnect from host and reconnect as boot-loader device with a different VID/PID.
  • Perform Firmware Upgrade for D400/SR300 device rs2_update_firmware. The functionality requires a digitally-signed image to be provided as an input
  • Perform Firmware Upgrade for D400/SR300 device, report progress to user-provided callback rs2_update_firmware_cpp
  • Generate a firmware image copy rs2_create_flash_backup. Note that the generated backup image format is different from the file required in rs2_update_firmware/rs2_update_firmware_cpp and cannot be used with these APIs.
  • Generate a firmware image copy, report progress to user-provided callback rs2_create_flash_backup_cpp. The limitations are similar to rs2_create_flash_backup

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
  • Add RS2_OPTION_GLOBAL_TIME_ENABLED option
  • 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 -
RS2_DISTORTION_KANNALA_BRANDT4.
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

Added

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:
    RS2_OPTION_ZERO_ORDER_POINT_X, RS2_OPTION_ZERO_ORDER_POINT_Y, RS2_OPTION_LLD_TEMPERATURE, RS2_OPTION_MC_TEMPERATURE, RS2_OPTION_MA_TEMPERATURE

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

Added

  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.

Removed

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

From version 2.16.0 to 2.17.0

Added

  • #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);

Renamed

  • #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

Added

Removed

  • 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

Added

  • 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

Added

Version 2.13.0 (vs 2.11.1)

Added

  • 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

Modified

From 2.10.4 to 2.11.0

Added

  • 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

Modified

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

Modified

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

Added

Changed

  • 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

Added

  • 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

Added

  • 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

Added

  • 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

Added

  • 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

Moved

See Pipeline Changes pull-request for explanation

Added

Removed


From 2.7.7 to 2.7.9

Moved

Added

Removed

Signature Changed