diff --git a/src/gl/rs-gl.cpp b/src/gl/rs-gl.cpp index 7b6276a326..a4b40be6f2 100644 --- a/src/gl/rs-gl.cpp +++ b/src/gl/rs-gl.cpp @@ -150,7 +150,7 @@ rs2_processing_block* rs2_gl_create_align(int api_version, rs2_stream to, rs2_er { verify_version_compatibility(api_version); auto block = std::make_shared(to); - auto backup = std::make_shared(to); + auto backup = align::create_align(to); auto dual = std::make_shared(); dual->add(block); dual->add(backup); diff --git a/src/proc/align.cpp b/src/proc/align.cpp index ccfd6ca9af..8f818307c3 100644 --- a/src/proc/align.cpp +++ b/src/proc/align.cpp @@ -11,10 +11,27 @@ #include "align.h" #include "stream.h" +#if defined(RS2_USE_CUDA) +#include "proc/cuda/cuda-align.h" +#elif defined(__SSSE3__) +#include "proc/sse/sse-align.h" +#endif + namespace librealsense { template struct bytes { uint8_t b[N]; }; + std::shared_ptr align::create_align(rs2_stream align_to) + { + #if defined(RS2_USE_CUDA) + return std::make_shared(align_to); + #elif defined(__SSSE3__) + return std::make_shared(align_to); + #else + return std::make_shared(align_to); + #endif + } + template void align_images(const rs2_intrinsics& depth_intrin, const rs2_extrinsics& depth_to_other, const rs2_intrinsics& other_intrin, GET_DEPTH get_depth, TRANSFER_PIXEL transfer_pixel) diff --git a/src/proc/align.h b/src/proc/align.h index 946ed835f7..768de0a15e 100644 --- a/src/proc/align.h +++ b/src/proc/align.h @@ -15,6 +15,7 @@ namespace librealsense { public: align(rs2_stream to_stream); + static std::shared_ptr create_align(rs2_stream align_to); protected: align(rs2_stream to_stream, const char* name) diff --git a/src/proc/processing-blocks-factory.cpp b/src/proc/processing-blocks-factory.cpp index c704bc2ea9..98cfbc1287 100644 --- a/src/proc/processing-blocks-factory.cpp +++ b/src/proc/processing-blocks-factory.cpp @@ -3,32 +3,10 @@ #include "processing-blocks-factory.h" -#include "sse/sse-align.h" -#include "cuda/cuda-align.h" - #include "stream.h" namespace librealsense { -#ifdef RS2_USE_CUDA - std::shared_ptr create_align(rs2_stream align_to) - { - return std::make_shared(align_to); - } -#else -#ifdef __SSSE3__ - std::shared_ptr create_align(rs2_stream align_to) - { - return std::make_shared(align_to); - } -#else // No optimizations - std::shared_ptr create_align(rs2_stream align_to) - { - return std::make_shared(align_to); - } -#endif // __SSSE3__ -#endif // RS2_USE_CUDA - processing_block_factory::processing_block_factory(const std::vector& from, const std::vector& to, std::function(void)> generate_func) : _source_info(from), _target_info(to), generate_processing_block(generate_func) {} diff --git a/src/proc/processing-blocks-factory.h b/src/proc/processing-blocks-factory.h index f9d786477a..e2aea219d4 100644 --- a/src/proc/processing-blocks-factory.h +++ b/src/proc/processing-blocks-factory.h @@ -8,14 +8,12 @@ #include -#include "align.h" #include "../types.h" #include "identity-processing-block.h" namespace librealsense { - std::shared_ptr create_align(rs2_stream align_to); class processing_block_factory { diff --git a/src/rs.cpp b/src/rs.cpp index 8e2d25b014..ab5efed337 100644 --- a/src/rs.cpp +++ b/src/rs.cpp @@ -24,6 +24,7 @@ #include "proc/processing-blocks-factory.h" #include "proc/colorizer.h" #include "proc/pointcloud.h" +#include "proc/align.h" #include "proc/threshold.h" #include "proc/units-transform.h" #include "proc/disparity-transform.h" @@ -2536,7 +2537,7 @@ rs2_processing_block* rs2_create_align(rs2_stream align_to, rs2_error** error) B { VALIDATE_ENUM(align_to); - auto block = create_align(align_to); + auto block = align::create_align(align_to); return new rs2_processing_block{ block }; }