Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
cad9e88
HDR configuration implemented, without example or fw drop to check
remibettan Aug 12, 2020
c4ab14a
Adding example for HDR
remibettan Aug 12, 2020
fe79a4c
HDR SubPreset data prepared for sending hw command
remibettan Aug 13, 2020
f374b18
HDR example added
remibettan Aug 16, 2020
b44048e
few corrections and debug code added
remibettan Aug 16, 2020
89f0875
AE to be off when sending hdr enable
remibettan Aug 16, 2020
88823e4
Few improvements
remibettan Aug 16, 2020
84662d4
Correct returned value for getting seq id
remibettan Aug 16, 2020
52b9fd2
removing print of the sub-preset pattern
remibettan Aug 16, 2020
6110a8a
getting range for gain and exposure from uvc
remibettan Aug 17, 2020
7f4d0d0
Sending only params configured by user
remibettan Aug 17, 2020
b92a499
Send Preset to fw for any change after HDR is enabled
remibettan Aug 17, 2020
7687262
Adding options in python wrapper
remibettan Aug 18, 2020
5c312dc
merge processing block added as in poc
remibettan Aug 20, 2020
afdc3b8
HDR default config changed
remibettan Aug 20, 2020
1d33791
Simplifying the merging pb
remibettan Aug 20, 2020
19a7219
Adding Split PB and HDR Metadata
remibettan Aug 24, 2020
28ec0ce
adding case for get string of the hdr metadata enum values
remibettan Aug 25, 2020
53f58f8
enabling merge without metadata values
remibettan Aug 25, 2020
64294dc
not sending sub preset to fw when changing hdr sequ id in config
remibettan Aug 26, 2020
7c0a270
enabling merge when ir is not available
remibettan Aug 26, 2020
90337dd
checking also frame counter in order to use ir in merge
remibettan Aug 26, 2020
0b282af
HDR config with gain and exposure after fw drop receival
remibettan Aug 26, 2020
9ad60ae
merge and split pb added to cpp api, depth with index enabled
remibettan Aug 27, 2020
d24187a
add example for split
remibettan Aug 27, 2020
25937a6
removing hdr relative option
remibettan Aug 30, 2020
a56a926
improving merge filter and enabling use of metadata hdr params
remibettan Aug 31, 2020
7d37d56
merge and split filters adding to python wrapper
remibettan Aug 31, 2020
8099473
restore hdr enabled after stop and start streaming
remibettan Sep 1, 2020
447be06
hdr config changed flag updated
remibettan Sep 2, 2020
02c9fe1
Option for split pb added
remibettan Aug 30, 2020
17175f6
adding select id option to python wrapper
remibettan Aug 30, 2020
73e13f6
few improvements in split pb
remibettan Aug 31, 2020
3d36e3f
split filter - using sequence id in algorithm
remibettan Sep 2, 2020
2547082
split filter correction - prepare_output overriden
remibettan Sep 2, 2020
d270542
Removing debugging windows commands
remibettan Sep 2, 2020
329a9bd
Adding the new extensions in the get_string method
remibettan Sep 2, 2020
44ba744
Merging split and hdr examples, removing tabs
remibettan Sep 3, 2020
6a292e1
Renaming the new options
remibettan Sep 3, 2020
bcc8d24
Changing max of split filter option selected id to 2
remibettan Sep 3, 2020
08b1a88
Updating the name of the new options in python wrapper
remibettan Sep 3, 2020
083fa13
ensure that meged frame will have fc n and be merged from n and n+1 f…
remibettan Sep 5, 2020
75ecd7e
tabs removal
remibettan Sep 6, 2020
e6603ba
Adjusted to new fw version, metadata hdr fields renamed to subpreset
remibettan Sep 6, 2020
cc8c6e1
Do not process frames with sequence size zero
remibettan Sep 6, 2020
6c0f1c5
Restoring Auto Exp and Emitter on off after disabling hdr
remibettan Sep 7, 2020
f86b801
hdr_cfg member of sensor, exp and gain registered once in code
remibettan Sep 7, 2020
048490c
HDR sequence size equals 2
remibettan Sep 7, 2020
ff3f40d
Checking hdr metadata supported before getting it
remibettan Sep 7, 2020
78070dc
metadata enum added to sub preset info
remibettan Sep 7, 2020
6262b9c
remove buggy typo
remibettan Sep 8, 2020
76427b1
Improving sequence size and id controls UI
remibettan Sep 8, 2020
f9454ee
discard merged frame if it is too old
remibettan Sep 9, 2020
f97fad1
changing hardcoded default values to const members
remibettan Sep 9, 2020
4b95c6c
merge filter semantic change
remibettan Sep 9, 2020
8e8032e
merge filter hardcoded values as const members
remibettan Sep 9, 2020
f698f66
discard depth if infrared is under or over saturated
remibettan Sep 9, 2020
922c1d0
hdr feature only for global shutter devices
remibettan Sep 9, 2020
7cc3b03
semantic change
remibettan Sep 9, 2020
11a0d36
Adding option, metadata value for id - config changed instead of pattern
remibettan Sep 9, 2020
891396e
Adding id in HDR config
remibettan Sep 9, 2020
2394c3a
Adjustments to fw version with subpreset id
remibettan Sep 10, 2020
275d054
Permitting work with rolling shutter
remibettan Sep 10, 2020
f22eb79
Adding new option in python wrapper
remibettan Sep 10, 2020
c17341a
updating example with ID
remibettan Sep 10, 2020
e51e2a9
correcting hdr configuration bug
remibettan Sep 10, 2020
35605d9
Split filter option - combo instead of slider in viewer
remibettan Sep 10, 2020
4b81db9
HDR default config - changing low exposure from min (1) to 150
remibettan Sep 10, 2020
6120055
fix bug adding case for get_string of subpreset metadata value
remibettan Sep 10, 2020
baead1a
getting data from firmware on query of hdr mode option
remibettan Sep 10, 2020
ff35136
enabling back the emitter ON OFF subpreset for devices with older fir…
remibettan Sep 10, 2020
66c67d3
checking AE and emitter on off are supported before query
remibettan Sep 10, 2020
9c900ae
Correcting ranges to be checked for exposure and gain hdr config
remibettan Sep 10, 2020
4a96675
Exposure and gain ranges added to hdr-config CTOR
remibettan Sep 11, 2020
509d552
restoring current HDR configuration if such subpreset is active
remibettan Sep 11, 2020
956e82b
is_enabled checks if current subpreset id is an hdr id
remibettan Sep 12, 2020
8de082c
changes triggered by code review
remibettan Sep 12, 2020
2ca312c
Fix Linux compilation error on extra qualification ‘librealsense::hdr…
ev-mp Sep 12, 2020
b2aab6f
Fixing CI - Replace tabs with spaces. Remove trailing white spaces in…
ev-mp Sep 12, 2020
a828c0c
Auto disabling Auto Exposure when exposure or gain are changed (manua…
remibettan Sep 13, 2020
0fc2a25
Not marking config as changed on set sequence id
remibettan Sep 13, 2020
8a5cd4f
Documentaiton fix
ev-mp Sep 14, 2020
78ee0f0
Refactor error polling with shared/weak ptr instead of unique_ptr. Fo…
ev-mp Sep 14, 2020
030de64
Improvements triggered by code review
remibettan Sep 13, 2020
7326f76
Correting hdr filters names in cmakelist
remibettan Sep 14, 2020
6810980
Improvements triggered by code review
remibettan Sep 14, 2020
6dfc450
Enabling HDR restoring when start stop streaming in viewer
remibettan Sep 14, 2020
1be63cd
Changing hdr filters names
remibettan Sep 14, 2020
e5c05db
Using sequ id option for split and delete select_id option, add param…
remibettan Sep 14, 2020
e19d3ba
correct bug merging not performed
remibettan Sep 14, 2020
5f84733
Split filter name changed to sequence id filter
remibettan Sep 14, 2020
f83f85a
Split filter name - change files names
remibettan Sep 14, 2020
187f504
split filter does not change stream index anymore
remibettan Sep 14, 2020
0bbd3b3
remove commented code
remibettan Sep 14, 2020
153cc0f
Renaming options - removing the word subpreset
remibettan Sep 14, 2020
66c3465
Fix HDR on change of resolutions
ev-mp Sep 14, 2020
17f7397
Replace tabs with spaces. Remove certain trailing white spaces
ev-mp Sep 14, 2020
be6fad4
Verify IR presence in HDR merge checks
ev-mp Sep 15, 2020
12594e7
check discard merged frame even if frameset size is not 2
remibettan Sep 15, 2020
3b822c3
Option HDR_MODE to HDR_ENABLED, HDR API added to C# and Java wrappers
remibettan Sep 15, 2020
81b29aa
Renaming option HDR_ENABLED in get_string method
remibettan Sep 15, 2020
c3a15e7
HDR API not enabled until fw version 5.12.8.200
remibettan Sep 15, 2020
2b7de4d
Comment out split/merge in the recommended pb list
ev-mp Sep 15, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions common/model-views.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -973,6 +973,9 @@ namespace rs2
if (shared_filter->is<hole_filling_filter>())
model->enable(false);

if (shared_filter->is<sequence_id_filter>())
model->enable(false);

if (shared_filter->is<decimation_filter>())
{
if (is_rgb_camera)
Expand Down
1 change: 1 addition & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,4 @@ add_subdirectory(ar-basic)
add_subdirectory(ar-advanced)
add_subdirectory(pose-apriltag)
add_subdirectory(tracking-and-depth)
add_subdirectory(hdr)
16 changes: 16 additions & 0 deletions examples/hdr/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# License: Apache 2.0. See LICENSE file in root directory.
# Copyright(c) 2020 Intel Corporation. All Rights Reserved.
# minimum required cmake version: 3.1.0
cmake_minimum_required(VERSION 3.1.0)

project(RealsenseExamplesHdr)

if(BUILD_GRAPHICAL_EXAMPLES)
add_executable(rs-hdr rs-hdr.cpp ../example.hpp)
set_property(TARGET rs-hdr PROPERTY CXX_STANDARD 11)
target_link_libraries(rs-hdr ${DEPENDENCIES})
include_directories(rs-hdr ../ ../../third-party/tclap/include)
set_target_properties (rs-hdr PROPERTIES FOLDER "Examples")

install(TARGETS rs-hdr RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
114 changes: 114 additions & 0 deletions examples/hdr/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# rs-hdr Sample

## Overview

This sample demonstrates how to configure the camera for streaming and rendering Depth & Infrared data to the screen, using the High Dynamic Range (HDR) feature.
For explanations on the streaming and rendering, please refer to the rs-capture sample.

## Code Overview

### Finidng device
The HDR feature is available only for D400 Product line Devices. Finiding this device and getting its depth sensor:
```cpp
// finding a device of D400 product line for working with HDR feature
if (dev.supports(RS2_CAMERA_INFO_PRODUCT_LINE) &&
std::string(dev.get_info(RS2_CAMERA_INFO_PRODUCT_LINE)) == "D400")
{
device = dev;
}
rs2::depth_sensor depth_sensor = device.query_sensors().front();
```


### HDR Configuration
Before starting the configuration, we need to disable the Auto Exposure option:
```cpp
// disable auto exposure before sending HDR configuration
if (depth_sensor.get_option(RS2_OPTION_ENABLE_AUTO_EXPOSURE))
depth_sensor.set_option(RS2_OPTION_ENABLE_AUTO_EXPOSURE, 0);
```

Next, we start to configure the HDR, by setting the size of the HDR sequence:
```cpp
// setting the HDR sequence size to 2 frames
depth_sensor.set_option(RS2_OPTION_SEQUENCE_SIZE, 2);
```
Choosing an ID for this HDR configuration. The configuration will not be saved in the firmware, but this ID can help users that configure another HDR configuration to know when the new HDR is streaming, by checking this value via the metadata:
```cpp
// configuring identifier for this hdr config (value must be in range [0,3])
depth_sensor.set_option(RS2_OPTION_SEQUENCE_NAME, 1);
```

Configuring the first HDR sequence ID:
```cpp
// configuration for the first HDR sequence ID
depth_sensor.set_option(RS2_OPTION_SEQUENCE_ID, 1);
depth_sensor.set_option(RS2_OPTION_EXPOSURE, 8500.f);
depth_sensor.set_option(RS2_OPTION_GAIN, 16.f);
```
Configuring the second HDR sequence ID:
```cpp
// configuration for the second HDR sequence ID
depth_sensor.set_option(RS2_OPTION_SEQUENCE_ID, 2);
depth_sensor.set_option(RS2_OPTION_EXPOSURE, 150.f);
depth_sensor.set_option(RS2_OPTION_GAIN, 16.f);
```

Resetting the sequence ID to 0. This action permits the next setting of the exposure and gain option to be targetted to the normal UVC option, instead of being targetted to the HDR configuration (this call could have been omitted in this specific example):
```cpp
// after setting the HDR sequence ID option to 0, setting exposure or gain
// will be targetted to the normal (UVC) exposure and gain options (not HDR configuration)
depth_sensor.set_option(RS2_OPTION_SEQUENCE_ID, 0);
```

Activating the HDR configuration in order to get the resulting streaming:
```cpp
// turning ON the HDR with the above configuration
depth_sensor.set_option(RS2_OPTION_HDR_ENABLED, 1);
```

Then, the pipe is configured with depth and infrared streams.
In HDR mode the Infrared stream is used as an auxiliary invalidation filter to handle outlier Depth pixels and therefore, to enhance the outcome. The merging algorithm can also work without the infrared stream (if it is not activated by the user), but it workds better with the infrared.
```cpp
// Start streaming with depth and infrared configuration
// The HDR merging algorithm can work with both depth and infrared,or only with depth,
// but the resulting stream is better when both depth and infrared are used.
rs2::config cfg;
cfg.enable_stream(RS2_STREAM_DEPTH);
cfg.enable_stream(RS2_STREAM_INFRARED, 1);
pipe.start(cfg);
```

### Using Merging Filter
Initializing the merging filter - will be further used in order to merge frames from both HDR sequence IDs that have been configured:
```cpp
// initializing the merging filter
rs2::depth_merge merging_filter;
```
After getting the frames, by using the wait_for_frames method, the merging filter is used:
```cpp
// merging the frames from the different HDR sequence IDs
auto merged_frameset = merging_filter.process(data).
apply_filter(color_map); // Find and colorize the depth data;
app.show(merged_frameset);

```

### Using Spliting Filter
Initializing also the spliting filter, with the requested sequence ID as 2:
```cpp
// initializing the spliting filter
rs2::depth_split spliting_filter;
// setting the required sequence ID to be shown
spliting_filter.set_option(RS2_OPTION_SELECT_ID, 2);
```

After getting the frames, by using the wait_for_frames method, the spliting filter is used:
```cpp
// getting frames only with the requested sequence ID
auto split_frameset = spliting_filter.process(data).
apply_filter(color_map); // Find and colorize the depth data;
app.show(split_frameset);

```

166 changes: 166 additions & 0 deletions examples/hdr/rs-hdr.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
// License: Apache 2.0. See LICENSE file in root directory.
// Copyright(c) 2020 Intel Corporation. All Rights Reserved.

#include <librealsense2/rs.hpp> // Include RealSense Cross Platform API
#include "example.hpp" // Include short list of convenience functions for rendering
#include <iostream>

// HDR Example demonstrates how to
// use the HDR feature - only for D400 product line devices
int main(int argc, char * argv[]) try
{
rs2::context ctx;

rs2::device_list devices_list = ctx.query_devices();

size_t device_count = devices_list.size();
if (!device_count)
{
std::cout << "No device detected. Is it plugged in?\n";
return EXIT_SUCCESS;
}

rs2::device device;
bool device_found = false;
for (auto&& dev : devices_list)
{
// finding a device of D400 product line for working with HDR feature
if (dev.supports(RS2_CAMERA_INFO_PRODUCT_LINE) &&
std::string(dev.get_info(RS2_CAMERA_INFO_PRODUCT_LINE)) == "D400")
{
device = dev;
device_found = true;
break;
}
}

if (!device_found)
{
std::cout << "No device from D400 product line detected. Is it plugged in?\n";
return EXIT_SUCCESS;
}

rs2::depth_sensor depth_sensor = device.query_sensors().front();

// disable auto exposure before sending HDR configuration
if (depth_sensor.get_option(RS2_OPTION_ENABLE_AUTO_EXPOSURE))
depth_sensor.set_option(RS2_OPTION_ENABLE_AUTO_EXPOSURE, 0);

// setting the HDR sequence size to 2 frames
if (depth_sensor.supports(RS2_OPTION_SEQUENCE_SIZE))
depth_sensor.set_option(RS2_OPTION_SEQUENCE_SIZE, 2);
else
{
std::cout << "Firmware and/or SDK versions must be updated for the HDR feature to be supported.\n";
return EXIT_SUCCESS;
}

// configuring id for this hdr config (value must be in range [0,3])
depth_sensor.set_option(RS2_OPTION_SEQUENCE_NAME, 0);

// configuration for the first HDR sequence ID
depth_sensor.set_option(RS2_OPTION_SEQUENCE_ID, 1);
depth_sensor.set_option(RS2_OPTION_EXPOSURE, 8500);
depth_sensor.set_option(RS2_OPTION_GAIN, 16.f);

// configuration for the second HDR sequence ID
depth_sensor.set_option(RS2_OPTION_SEQUENCE_ID, 2);
depth_sensor.set_option(RS2_OPTION_EXPOSURE, 150);
depth_sensor.set_option(RS2_OPTION_GAIN, 16.f);

// after setting the HDR sequence ID opotion to 0, setting exposure or gain
// will be targetted to the normal (UVC) exposure and gain options (not HDR configuration)
depth_sensor.set_option(RS2_OPTION_SEQUENCE_ID, 0);

// turning ON the HDR with the above configuration
depth_sensor.set_option(RS2_OPTION_HDR_ENABLED, 1);

// Create a simple OpenGL window for rendering:
window app(1280, 720, "RealSense Capture Example");

// Declare depth colorizer for pretty visualization of depth data
rs2::colorizer color_map;
// Declare rates printer for showing streaming rates of the enabled streams.
rs2::rates_printer printer;

// Declare RealSense pipeline, encapsulating the actual device and sensors
rs2::pipeline pipe;

// Start streaming with default recommended configuration
// The default video configuration contains Depth and Color streams
// If a device is capable to stream IMU data, both Gyro and Accelerometer are enabled by default
rs2::config cfg;
cfg.enable_stream(RS2_STREAM_DEPTH);
cfg.enable_stream(RS2_STREAM_INFRARED, 1);
pipe.start(cfg);

// initializing the merging filter
rs2::hdr_merge merging_filter;

// initializing the spliting filter
rs2::sequence_id_filter spliting_filter;

// setting the required sequence ID to be shown
spliting_filter.set_option(RS2_OPTION_SEQUENCE_ID, 2);

// flag used to see the original stream or the merged one
bool true_for_merge_false_for_split = true;
int frames_without_hdr_metadata_params = 0;
while (app) // Application still alive?
{
rs2::frameset data = pipe.wait_for_frames() . // Wait for next set of frames from the camera
apply_filter(printer); // Print each enabled stream frame rate

auto depth_frame = data.get_depth_frame();

if (!depth_frame.supports_frame_metadata(RS2_FRAME_METADATA_SUBPRESET_SEQUENCE_SIZE) ||
!depth_frame.supports_frame_metadata(RS2_FRAME_METADATA_SUBPRESET_SEQUENCE_ID))
{
++frames_without_hdr_metadata_params;
if (frames_without_hdr_metadata_params > 20)
{
std::cout << "Firmware and/or SDK versions must be updated for the HDR feature to be supported.\n";
return EXIT_SUCCESS;
}
data = data.apply_filter(color_map);
app.show(data);
continue;
}

auto hdr_id = depth_frame.get_frame_metadata(RS2_FRAME_METADATA_SUBPRESET_ID);
auto hdr_seq_size = depth_frame.get_frame_metadata(RS2_FRAME_METADATA_SUBPRESET_SEQUENCE_SIZE);
auto hdr_seq_id = depth_frame.get_frame_metadata(RS2_FRAME_METADATA_SUBPRESET_SEQUENCE_ID);
auto exp = depth_frame.get_frame_metadata(RS2_FRAME_METADATA_ACTUAL_EXPOSURE);

std::cout << "frame hdr metadata: hdr_seq_id = "<< hdr_seq_id << ", exposure = " << exp << std::endl;
// The show method, when applied on frameset, break it to frames and upload each frame into a gl textures
// Each texture is displayed on different viewport according to it's stream unique id
if (true_for_merge_false_for_split)
{
// merging the frames from the different HDR sequence IDs
auto merged_frameset = merging_filter.process(data). // merging frames with both hdr sequence IDs
apply_filter(color_map); // Find and colorize the depth data;
rs2_format format = merged_frameset.as<rs2::frameset>().get_depth_frame().get_profile().format();
std::cout << ", after merge format = " << rs2_format_to_string(format) << std::endl;
app.show(merged_frameset);
}
else
{
auto split_frameset = spliting_filter.process(data) . // getting frames only with the requested sequence ID
apply_filter(color_map); // Find and colorize the depth data;
app.show(split_frameset);
}
}

return EXIT_SUCCESS;
}
catch (const rs2::error & e)
{
std::cerr << "RealSense error calling " << e.get_failed_function() << "(" << e.get_failed_args() << "):\n " << e.what() << std::endl;
return EXIT_FAILURE;
}
catch (const std::exception& e)
{
std::cerr << e.what() << std::endl;
return EXIT_FAILURE;
}
6 changes: 3 additions & 3 deletions include/librealsense2/h/rs_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ void rs2_set_devices_changed_callback(const rs2_context* context, rs2_devices_ch
* @return A pointer to a device that plays data from the file, or null in case of failure
*/
rs2_device* rs2_context_add_device(rs2_context* ctx, const char* file, rs2_error** error);

/**
* Add an instance of software device to the context
* \param ctx The context to which the new device will be added
Expand All @@ -73,9 +73,9 @@ void rs2_context_remove_device(rs2_context* ctx, const char* file, rs2_error** e

/**
* Removes tracking module.
* function query_devices() locks the tracking module in the tm_context object.
* function query_devices() locks the tracking module in the tm_context object.
* If the tracking module device is not used it should be removed using this function, so that other applications could find it.
* This function can be used both before the call to query_device() to prevent enabling tracking modules or afterwards to
* This function can be used both before the call to query_device() to prevent enabling tracking modules or afterwards to
* release them.
*/
void rs2_context_unload_tracking_module(rs2_context* ctx, rs2_error** error);
Expand Down
2 changes: 1 addition & 1 deletion include/librealsense2/h/rs_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ void rs2_connect_tm2_controller(const rs2_device* device, const unsigned char* m
void rs2_disconnect_tm2_controller(const rs2_device* device, int id, rs2_error** error);


/**
/**
* Reset device to factory calibration
* \param[in] device The RealSense device
* \param[out] error If non-null, receives any error that occurs during this call, otherwise, errors are ignored
Expand Down
3 changes: 3 additions & 0 deletions include/librealsense2/h/rs_frame.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ typedef enum rs2_frame_metadata_value
RS2_FRAME_METADATA_FRAME_LED_POWER , /**< Led power value 0-360. */
RS2_FRAME_METADATA_RAW_FRAME_SIZE , /**< The number of transmitted payload bytes, not including metadata */
RS2_FRAME_METADATA_GPIO_INPUT_DATA , /**< GPIO input data */
RS2_FRAME_METADATA_SUBPRESET_ID , /**< sub-preset id */
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The options and metadata attributes should be added to wrappers: C#, Java, Matlab, NodeJs

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will do

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C# and Java - Done
Matlab and NodeJs will be done later on, as we have discussed

RS2_FRAME_METADATA_SUBPRESET_SEQUENCE_ID , /**< sub-preset sequence id */
RS2_FRAME_METADATA_SUBPRESET_SEQUENCE_SIZE , /**< sub-preset sequence size */
RS2_FRAME_METADATA_COUNT
} rs2_frame_metadata_value;
const char* rs2_frame_metadata_to_string(rs2_frame_metadata_value metadata);
Expand Down
4 changes: 4 additions & 0 deletions include/librealsense2/h/rs_option.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@ extern "C" {
RS2_OPTION_TRIGGER_CAMERA_ACCURACY_HEALTH, /**< Enable depth & color frame sync with periodic calibration for proper alignment */
RS2_OPTION_RESET_CAMERA_ACCURACY_HEALTH,
RS2_OPTION_HOST_PERFORMANCE, /**< Set host performance mode to optimize device settings so host can keep up with workload, for example, USB transaction granularity, setting option to low performance host leads to larger USB transaction size and reduced number of transactions which improves performance and stability if host is relatively weak as compared to workload */
RS2_OPTION_HDR_ENABLED, /**< Enable / disable HDR */
RS2_OPTION_SEQUENCE_NAME, /**< HDR Sequence size */
RS2_OPTION_SEQUENCE_SIZE, /**< HDR Sequence size */
RS2_OPTION_SEQUENCE_ID, /**< HDR Sequence ID - 0 is not HDR; sequence ID for HDR configuartion starts from 1 */
RS2_OPTION_COUNT /**< Number of enumeration values. Not a valid input: intended to be used in for-loops. */
} rs2_option;

Expand Down
2 changes: 1 addition & 1 deletion include/librealsense2/h/rs_pipeline.h
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ extern "C" {
* Start the pipeline streaming with its default configuration.
* The pipeline captures samples from the device, and delivers them to the through the provided frame callback.
* Starting the pipeline is possible only when it is not started. If the pipeline was started, an exception is raised.
* When starting the pipeline with a callback both \c wait_for_frames() or \c poll_for_frames() will throw exception.
* When starting the pipeline with a callback both \c wait_for_frames() or \c poll_for_frames() will throw exception.
*
* \param[in] pipe A pointer to an instance of the pipeline
* \param[in] callback callback object created from c++ application. ownership over the callback object is moved into the relevant streaming lock
Expand Down
14 changes: 14 additions & 0 deletions include/librealsense2/h/rs_processing.h
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,20 @@ rs2_processing_block* rs2_create_zero_order_invalidation_block(rs2_error** error
*/
rs2_processing_block* rs2_create_huffman_depth_decompress_block(rs2_error** error);

/**
* Creates a hdr_merge processing block.
* The block merges between two depth frames with different exposure values
* \param[out] error if non-null, receives any error that occurs during this call, otherwise, errors are ignored
*/
rs2_processing_block* rs2_create_hdr_merge_processing_block(rs2_error** error);

/**
* Creates a sequence_id_filter processing block.
* The block lets frames with the selected sequence id pass and blocks frames with other values
* \param[out] error if non-null, receives any error that occurs during this call, otherwise, errors are ignored
*/
rs2_processing_block* rs2_create_sequence_id_filter(rs2_error** error);

/**
* Retrieve processing block specific information, like name.
* \param[in] block The processing block
Expand Down
Loading