diff --git a/src/ds5/ds5-factory.cpp b/src/ds5/ds5-factory.cpp index 5fb9e5a5ab..c7fc2e002d 100644 --- a/src/ds5/ds5-factory.cpp +++ b/src/ds5/ds5-factory.cpp @@ -897,7 +897,8 @@ namespace librealsense }; }; - class rs405_device : public ds5_active, + class rs405_device : public ds5_nonmonochrome, + public ds5_active, public ds5_color, public ds5_motion, public ds5_advanced_mode_base, @@ -909,6 +910,7 @@ namespace librealsense bool register_device_notifications) : device(ctx, group, register_device_notifications), ds5_device(ctx, group), + ds5_nonmonochrome(ctx, group), ds5_active(ctx, group), ds5_color(ctx, group), ds5_motion(ctx, group), @@ -943,7 +945,8 @@ namespace librealsense bool compress_while_record() const override { return false; } }; - class rs455_device : public ds5_active, + class rs455_device : public ds5_nonmonochrome, + public ds5_active, public ds5_color, public ds5_motion, public ds5_advanced_mode_base, @@ -955,6 +958,7 @@ namespace librealsense bool register_device_notifications) : device(ctx, group, register_device_notifications), ds5_device(ctx, group), + ds5_nonmonochrome(ctx, group), ds5_active(ctx, group), ds5_color(ctx, group), ds5_motion(ctx, group), diff --git a/src/ds5/ds5-nonmonochrome.cpp b/src/ds5/ds5-nonmonochrome.cpp index 09fbc0cc71..2873f94426 100644 --- a/src/ds5/ds5-nonmonochrome.cpp +++ b/src/ds5/ds5-nonmonochrome.cpp @@ -29,25 +29,34 @@ namespace librealsense auto pid = group.uvc_devices.front().pid; auto& depth_ep = get_depth_sensor(); + + // RGB for D455 from Left Imager is available with FW 5.12.8.100 + if ((RS455_PID == pid) && (_fw_version < firmware_version("5.12.8.100"))) + return; + if ((_fw_version >= firmware_version("5.5.8.0")) && (!val_in_range(pid, { RS_USB2_PID, RS465_PID }))) { - depth_ep.register_option(RS2_OPTION_ENABLE_AUTO_WHITE_BALANCE, - std::make_shared>(get_raw_depth_sensor(), + if (RS455_PID != pid) + { + depth_ep.register_option(RS2_OPTION_ENABLE_AUTO_WHITE_BALANCE, + std::make_shared>(get_raw_depth_sensor(), depth_xu, DS5_ENABLE_AUTO_WHITE_BALANCE, "Enable Auto White Balance")); - // RS400 rolling-shutter Skus allow to get low-quality color image from the same viewport as the depth - depth_ep.register_processing_block({ {RS2_FORMAT_BGR8} }, { {RS2_FORMAT_RGB8, RS2_STREAM_INFRARED} }, []() { return std::make_shared(); }); + depth_ep.register_processing_block({ {RS2_FORMAT_W10} }, { {RS2_FORMAT_RAW10, RS2_STREAM_INFRARED, 1} }, []() { return std::make_shared(RS2_FORMAT_RAW10); }); + depth_ep.register_processing_block({ {RS2_FORMAT_W10} }, { {RS2_FORMAT_Y10BPACK, RS2_STREAM_INFRARED, 1} }, []() { return std::make_shared(RS2_FORMAT_Y10BPACK); }); + } - depth_ep.register_processing_block({ {RS2_FORMAT_W10} }, { {RS2_FORMAT_RAW10, RS2_STREAM_INFRARED, 1} }, []() { return std::make_shared(RS2_FORMAT_RAW10); }); - depth_ep.register_processing_block({ {RS2_FORMAT_W10} }, { {RS2_FORMAT_Y10BPACK, RS2_STREAM_INFRARED, 1} }, []() { return std::make_shared(RS2_FORMAT_Y10BPACK); }); + // RS400 rolling-shutter SKUs allow to get low-quality color image from the same viewport as the depth + depth_ep.register_processing_block({ {RS2_FORMAT_BGR8} }, { {RS2_FORMAT_RGB8, RS2_STREAM_INFRARED} }, []() { return std::make_shared(); }); } depth_ep.register_processing_block(processing_block_factory::create_pbf_vector(RS2_FORMAT_YUYV, map_supported_color_formats(RS2_FORMAT_YUYV), RS2_STREAM_INFRARED)); depth_ep.register_processing_block(processing_block_factory::create_pbf_vector(RS2_FORMAT_UYVY, map_supported_color_formats(RS2_FORMAT_UYVY), RS2_STREAM_INFRARED)); - get_depth_sensor().unregister_option(RS2_OPTION_EMITTER_ON_OFF); + if (RS455_PID != pid) + get_depth_sensor().unregister_option(RS2_OPTION_EMITTER_ON_OFF); if ((_fw_version >= firmware_version("5.9.13.6") && _fw_version < firmware_version("5.9.15.1")))