From 7ac98f719cab24331b52146b0968f26db2480a10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A9nes=20Tarj=C3=A1n?= Date: Tue, 19 Mar 2024 17:30:54 +0000 Subject: [PATCH] Total namespace separation: 4 namespaces --- intrinsiccv/include/intrinsiccv/config.h.in | 16 +++---- .../include/intrinsiccv/containers/stack.h | 4 +- .../intrinsiccv/morphology/workspace.h | 4 +- intrinsiccv/include/intrinsiccv/neon.h | 13 +++--- intrinsiccv/include/intrinsiccv/operations.h | 10 ++--- intrinsiccv/include/intrinsiccv/sve2.h | 21 ++++++---- intrinsiccv/include/intrinsiccv/traits.h | 7 ++-- intrinsiccv/include/intrinsiccv/types.h | 4 +- intrinsiccv/include/intrinsiccv/utils.h | 42 +++++++++---------- .../include/intrinsiccv/workspace/borders.h | 4 +- .../include/intrinsiccv/workspace/separable.h | 4 +- intrinsiccv/src/analysis/min_max_loc_neon.cpp | 2 +- intrinsiccv/src/arithmetics/absdiff_sme2.cpp | 11 ++--- intrinsiccv/src/arithmetics/absdiff_sve2.cpp | 7 ++-- .../arithmetics/add_abs_with_threshold_sc.h | 11 +++-- .../add_abs_with_threshold_sme2.cpp | 6 +-- intrinsiccv/src/arithmetics/add_sme2.cpp | 11 ++--- intrinsiccv/src/arithmetics/add_sve2.cpp | 7 ++-- intrinsiccv/src/arithmetics/multiply_sve2.cpp | 7 ++-- intrinsiccv/src/arithmetics/sub_sme2.cpp | 11 ++--- intrinsiccv/src/arithmetics/sub_sve2.cpp | 7 ++-- intrinsiccv/src/arithmetics/threshold_sc.h | 10 ++--- .../src/arithmetics/threshold_sme2.cpp | 4 +- intrinsiccv/src/conversions/gray_to_rgb_sc.h | 24 +++++------ .../src/conversions/gray_to_rgb_sme2.cpp | 6 +-- .../src/conversions/rgb_to_rgb_api.cpp | 4 ++ intrinsiccv/src/conversions/rgb_to_rgb_sc.h | 40 +++++++++--------- .../src/conversions/rgb_to_rgb_sme2.cpp | 18 +++----- intrinsiccv/src/conversions/yuv_to_rgb_sc.h | 12 +++--- .../src/conversions/yuv_to_rgb_sme2.cpp | 20 ++++----- intrinsiccv/src/filters/gaussian_blur_api.cpp | 4 +- intrinsiccv/src/filters/gaussian_blur_sc.h | 4 +- .../src/filters/gaussian_blur_sme2.cpp | 6 +-- intrinsiccv/src/filters/sobel_sc.h | 9 ++-- intrinsiccv/src/filters/sobel_sme2.cpp | 8 ++-- intrinsiccv/src/morphology/morphology_api.cpp | 2 + intrinsiccv/src/morphology/morphology_sc.h | 16 +++---- .../src/morphology/morphology_sme2.cpp | 8 ++-- intrinsiccv/src/resize/resize_sc.h | 8 ++-- intrinsiccv/src/resize/resize_sme2.cpp | 5 +-- test/api/test_yuv_to_rgb.cpp | 4 +- 41 files changed, 199 insertions(+), 222 deletions(-) diff --git a/intrinsiccv/include/intrinsiccv/config.h.in b/intrinsiccv/include/intrinsiccv/config.h.in index ee791b73c..068c88b66 100644 --- a/intrinsiccv/include/intrinsiccv/config.h.in +++ b/intrinsiccv/include/intrinsiccv/config.h.in @@ -36,29 +36,31 @@ // Derived configuration switches and macros below. +#define INTRINSICCV_TARGET_NAMESPACE intrinsiccv + #if INTRINSICCV_TARGET_NEON #define INTRINSICCV_TARGET_FN_ATTRS INTRINSICCV_ATTR_SECTION(".text.neon") +#undef INTRINSICCV_TARGET_NAMESPACE +#define INTRINSICCV_TARGET_NAMESPACE intrinsiccv::neon #endif #if INTRINSICCV_TARGET_SVE2 #define INTRINSICCV_TARGET_FN_ATTRS INTRINSICCV_ATTR_SECTION(".text.sve2") +#undef INTRINSICCV_TARGET_NAMESPACE +#define INTRINSICCV_TARGET_NAMESPACE intrinsiccv::sve2 #endif #if INTRINSICCV_TARGET_SME2 #undef INTRINSICCV_ASSUME_128BIT_SVE2 #define INTRINSICCV_ASSUME_128BIT_SVE2 0 #define INTRINSICCV_TARGET_FN_ATTRS INTRINSICCV_ATTR_SECTION(".text.sme2") +#undef INTRINSICCV_TARGET_NAMESPACE +#define INTRINSICCV_TARGET_NAMESPACE intrinsiccv::sme2 #define INTRINSICCV_LOCALLY_STREAMING __arm_locally_streaming -#else -#define INTRINSICCV_LOCALLY_STREAMING -#endif - -#if ((INTRINSICCV_TARGET_SVE2 || INTRINSICCV_TARGET_SME2) && INTRINSICCV_COMPILER_SUPPORTS_SME2) #define INTRINSICCV_STREAMING_COMPATIBLE __arm_streaming_compatible -#define INTRINSICCV_SC_NAMESPACE intrinsiccv::sve2 #else +#define INTRINSICCV_LOCALLY_STREAMING #define INTRINSICCV_STREAMING_COMPATIBLE -#define INTRINSICCV_SC_NAMESPACE intrinsiccv #endif #ifdef __linux__ diff --git a/intrinsiccv/include/intrinsiccv/containers/stack.h b/intrinsiccv/include/intrinsiccv/containers/stack.h index f1aac1429..60d0ebbed 100644 --- a/intrinsiccv/include/intrinsiccv/containers/stack.h +++ b/intrinsiccv/include/intrinsiccv/containers/stack.h @@ -13,7 +13,7 @@ #include "intrinsiccv/traits.h" #include "intrinsiccv/utils.h" -namespace INTRINSICCV_SC_NAMESPACE { +namespace INTRINSICCV_TARGET_NAMESPACE { // A simple last-in first-out container. template @@ -171,6 +171,6 @@ class Stack final : public NonCopyable { Block *first_block_; }; // end of class Stack -} // namespace INTRINSICCV_SC_NAMESPACE +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_CONTAINERS_STACK_H diff --git a/intrinsiccv/include/intrinsiccv/morphology/workspace.h b/intrinsiccv/include/intrinsiccv/morphology/workspace.h index e6c89977a..8488a0203 100644 --- a/intrinsiccv/include/intrinsiccv/morphology/workspace.h +++ b/intrinsiccv/include/intrinsiccv/morphology/workspace.h @@ -13,7 +13,7 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/types.h" -namespace INTRINSICCV_SC_NAMESPACE { +namespace INTRINSICCV_TARGET_NAMESPACE { // Forward declarations. class MorphologyWorkspace; @@ -393,6 +393,6 @@ class MorphologyWorkspace final { uint8_t data_[0] INTRINSICCV_ATTR_ALIGNED(sizeof(void *)); }; // end of class MorphologyWorkspace -} // namespace INTRINSICCV_SC_NAMESPACE +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_MORPHOLOGY_WORKSPACE_H diff --git a/intrinsiccv/include/intrinsiccv/neon.h b/intrinsiccv/include/intrinsiccv/neon.h index d4c80d95c..3cf168659 100644 --- a/intrinsiccv/include/intrinsiccv/neon.h +++ b/intrinsiccv/include/intrinsiccv/neon.h @@ -12,7 +12,7 @@ #include "intrinsiccv/utils.h" #include "intrinsiccv/workspace/separable.h" -namespace intrinsiccv { +namespace intrinsiccv::neon { template <> class half_element_width { @@ -50,8 +50,6 @@ class double_element_width { using type = uint64x2_t; }; -namespace neon { - // Primary template to describe logically grouped peroperties of vectors. template class VectorTypes; @@ -332,7 +330,8 @@ class SeparableFilter { using SourceVectorType = typename SourceVecTraits::VectorType; using BufferVecTraits = typename neon::VecTraits; using BufferVectorType = typename BufferVecTraits::VectorType; - using BorderInfoType = typename intrinsiccv::FixedBorderInfo3x3; + using BorderInfoType = + typename ::INTRINSICCV_TARGET_NAMESPACE::FixedBorderInfo3x3; using BorderType = FixedBorderType; using BorderOffsets = typename BorderInfoType::Offsets; @@ -463,7 +462,8 @@ class SeparableFilter { using SourceVectorType = typename SourceVecTraits::VectorType; using BufferVecTraits = typename neon::VecTraits; using BufferVectorType = typename BufferVecTraits::VectorType; - using BorderInfoType = typename intrinsiccv::FixedBorderInfo5x5; + using BorderInfoType = + typename ::INTRINSICCV_TARGET_NAMESPACE::FixedBorderInfo5x5; using BorderType = FixedBorderType; using BorderOffsets = typename BorderInfoType::Offsets; @@ -579,7 +579,6 @@ using SeparableFilter3x3 = SeparableFilter; template using SeparableFilter5x5 = SeparableFilter; -} // namespace neon -} // namespace intrinsiccv +} // namespace intrinsiccv::neon #endif // INTRINSICCV_NEON_H diff --git a/intrinsiccv/include/intrinsiccv/operations.h b/intrinsiccv/include/intrinsiccv/operations.h index 1a8943ab2..e942fd29c 100644 --- a/intrinsiccv/include/intrinsiccv/operations.h +++ b/intrinsiccv/include/intrinsiccv/operations.h @@ -11,7 +11,7 @@ #include "intrinsiccv/traits.h" #include "intrinsiccv/types.h" -namespace INTRINSICCV_SC_NAMESPACE { +namespace INTRINSICCV_TARGET_NAMESPACE { // Base for classes that change the behaviour or extend the interface of an // operation. @@ -110,19 +110,19 @@ class OperationBase { // Returns true if the innermost operation is unrolled twice, otherwise false. static constexpr bool is_unrolled_twice() INTRINSICCV_STREAMING_COMPATIBLE { - return ::INTRINSICCV_SC_NAMESPACE::is_unrolled_twice< + return ::INTRINSICCV_TARGET_NAMESPACE::is_unrolled_twice< concrete_operation_type_t>; } // Returns true if the innermost operation is unrolled once, otherwise false. static constexpr bool is_unrolled_once() INTRINSICCV_STREAMING_COMPATIBLE { - return ::INTRINSICCV_SC_NAMESPACE::is_unrolled_once< + return ::INTRINSICCV_TARGET_NAMESPACE::is_unrolled_once< concrete_operation_type_t>; } // Returns true if the innermost operation uses tail path, otherwise false. static constexpr bool uses_tail_path() INTRINSICCV_STREAMING_COMPATIBLE { - return ::INTRINSICCV_SC_NAMESPACE::uses_tail_path< + return ::INTRINSICCV_TARGET_NAMESPACE::uses_tail_path< concrete_operation_type_t>; } @@ -1270,6 +1270,6 @@ class RemoveContextAdapter : public OperationBase { } }; // end of class RemoveContextAdapter -} // namespace INTRINSICCV_SC_NAMESPACE +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_OPERATIONS_H diff --git a/intrinsiccv/include/intrinsiccv/sve2.h b/intrinsiccv/include/intrinsiccv/sve2.h index 4d43d86a2..cd326d0c7 100644 --- a/intrinsiccv/include/intrinsiccv/sve2.h +++ b/intrinsiccv/include/intrinsiccv/sve2.h @@ -13,7 +13,8 @@ #include "intrinsiccv/utils.h" #include "intrinsiccv/workspace/separable.h" -namespace intrinsiccv::sve2 { +// It is used by SVE2 and SME2, the actual namespace will reflect it. +namespace INTRINSICCV_TARGET_NAMESPACE { // Context associated with SVE operations. class Context { @@ -513,12 +514,14 @@ class SeparableFilter { using SourceType = typename FilterType::SourceType; using BufferType = typename FilterType::BufferType; using DestinationType = typename FilterType::DestinationType; - using SourceVecTraits = typename sve2::VecTraits; + using SourceVecTraits = + typename ::INTRINSICCV_TARGET_NAMESPACE::VecTraits; using SourceVectorType = typename SourceVecTraits::VectorType; - using BufferVecTraits = typename sve2::VecTraits; + using BufferVecTraits = + typename ::INTRINSICCV_TARGET_NAMESPACE::VecTraits; using BufferVectorType = typename BufferVecTraits::VectorType; using BorderInfoType = - typename ::INTRINSICCV_SC_NAMESPACE::FixedBorderInfo3x3; + typename ::INTRINSICCV_TARGET_NAMESPACE::FixedBorderInfo3x3; using BorderType = FixedBorderType; using BorderOffsets = typename BorderInfoType::Offsets; @@ -650,12 +653,14 @@ class SeparableFilter { using SourceType = typename FilterType::SourceType; using BufferType = typename FilterType::BufferType; using DestinationType = typename FilterType::DestinationType; - using SourceVecTraits = typename sve2::VecTraits; + using SourceVecTraits = + typename ::INTRINSICCV_TARGET_NAMESPACE::VecTraits; using SourceVectorType = typename SourceVecTraits::VectorType; - using BufferVecTraits = typename sve2::VecTraits; + using BufferVecTraits = + typename ::INTRINSICCV_TARGET_NAMESPACE::VecTraits; using BufferVectorType = typename BufferVecTraits::VectorType; using BorderInfoType = - typename ::INTRINSICCV_SC_NAMESPACE::FixedBorderInfo5x5; + typename ::INTRINSICCV_TARGET_NAMESPACE::FixedBorderInfo5x5; using BorderType = FixedBorderType; using BorderOffsets = typename BorderInfoType::Offsets; @@ -815,6 +820,6 @@ static inline void swap_scalable(T &a, T &b) INTRINSICCV_STREAMING_COMPATIBLE { b = tmp; } -} // namespace intrinsiccv::sve2 +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_SVE2_H diff --git a/intrinsiccv/include/intrinsiccv/traits.h b/intrinsiccv/include/intrinsiccv/traits.h index cf77cdf0b..dd1518ec5 100644 --- a/intrinsiccv/include/intrinsiccv/traits.h +++ b/intrinsiccv/include/intrinsiccv/traits.h @@ -9,7 +9,7 @@ #include "intrinsiccv/config.h" -namespace INTRINSICCV_SC_NAMESPACE { +namespace INTRINSICCV_TARGET_NAMESPACE { // An empty class. class Monostate {}; @@ -17,8 +17,7 @@ class Monostate {}; template class remove_streaming_compatible; -#if ((INTRINSICCV_TARGET_SVE2 || INTRINSICCV_TARGET_SME2) && \ - INTRINSICCV_COMPILER_SUPPORTS_SME2) +#if INTRINSICCV_TARGET_SME2 template class remove_streaming_compatible { @@ -192,6 +191,6 @@ class NonCopyable { NonCopyable &operator=(const NonCopyable &) = delete; }; // end of class NonCopyable -} // namespace INTRINSICCV_SC_NAMESPACE +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_TYPE_TRAITS_H diff --git a/intrinsiccv/include/intrinsiccv/types.h b/intrinsiccv/include/intrinsiccv/types.h index 5c30a4575..829f921f6 100644 --- a/intrinsiccv/include/intrinsiccv/types.h +++ b/intrinsiccv/include/intrinsiccv/types.h @@ -13,7 +13,7 @@ #include "intrinsiccv/ctypes.h" #include "intrinsiccv/utils.h" -namespace INTRINSICCV_SC_NAMESPACE { +namespace INTRINSICCV_TARGET_NAMESPACE { // Represents a point on a 2D plane. class Point final { @@ -668,6 +668,6 @@ class RowsOverUniquePtr { std::unique_ptr data_; }; -} // namespace INTRINSICCV_SC_NAMESPACE +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_TYPES_H diff --git a/intrinsiccv/include/intrinsiccv/utils.h b/intrinsiccv/include/intrinsiccv/utils.h index 0a15fd6ad..606c0dbad 100644 --- a/intrinsiccv/include/intrinsiccv/utils.h +++ b/intrinsiccv/include/intrinsiccv/utils.h @@ -13,7 +13,7 @@ #include "intrinsiccv/config.h" #include "intrinsiccv/ctypes.h" -namespace INTRINSICCV_SC_NAMESPACE { +namespace INTRINSICCV_TARGET_NAMESPACE { // Saturating cast from signed to unsigned type. template @@ -402,22 +402,22 @@ std::enable_if_t check_pointer_and_stride( return INTRINSICCV_OK; } -#define CHECK_POINTER_AND_STRIDE(pointer, stride) \ - do { \ - if (intrinsiccv_error_t ptr_stride_err = \ - ::INTRINSICCV_SC_NAMESPACE::check_pointer_and_stride(pointer, \ - stride)) { \ - return ptr_stride_err; \ - } \ +#define CHECK_POINTER_AND_STRIDE(pointer, stride) \ + do { \ + if (intrinsiccv_error_t ptr_stride_err = \ + INTRINSICCV_TARGET_NAMESPACE::check_pointer_and_stride(pointer, \ + stride)) { \ + return ptr_stride_err; \ + } \ } while (false) -#define MAKE_POINTER_CHECK_ALIGNMENT(ElementType, name, from) \ - if constexpr (alignof(ElementType) > 1) { \ - if (::INTRINSICCV_SC_NAMESPACE::is_misaligned( \ - reinterpret_cast(from))) { \ - return INTRINSICCV_ERROR_ALIGNMENT; \ - } \ - } \ +#define MAKE_POINTER_CHECK_ALIGNMENT(ElementType, name, from) \ + if constexpr (alignof(ElementType) > 1) { \ + if (INTRINSICCV_TARGET_NAMESPACE::is_misaligned( \ + reinterpret_cast(from))) { \ + return INTRINSICCV_ERROR_ALIGNMENT; \ + } \ + } \ ElementType *name = reinterpret_cast(from) // Check whether the image size is acceptable by limiting it. @@ -436,6 +436,6 @@ std::enable_if_t check_pointer_and_stride( // Check whether the rectangle size is acceptable by limiting it. #define CHECK_RECTANGLE_SIZE(rect) CHECK_IMAGE_SIZE(rect.width, rect.height) -} // namespace INTRINSICCV_SC_NAMESPACE +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_UTILS_H diff --git a/intrinsiccv/include/intrinsiccv/workspace/borders.h b/intrinsiccv/include/intrinsiccv/workspace/borders.h index c225ec8ab..857f86f47 100644 --- a/intrinsiccv/include/intrinsiccv/workspace/borders.h +++ b/intrinsiccv/include/intrinsiccv/workspace/borders.h @@ -9,7 +9,7 @@ #include "intrinsiccv/intrinsiccv.h" -namespace INTRINSICCV_SC_NAMESPACE { +namespace INTRINSICCV_TARGET_NAMESPACE { enum class FixedBorderType { REPLICATE, @@ -278,6 +278,6 @@ using FixedBorderInfo3x3 = FixedBorderInfo; template using FixedBorderInfo5x5 = FixedBorderInfo; -} // namespace INTRINSICCV_SC_NAMESPACE +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_WORKSPACE_BORDERS_H diff --git a/intrinsiccv/include/intrinsiccv/workspace/separable.h b/intrinsiccv/include/intrinsiccv/workspace/separable.h index 9a32c2f7d..5398f1db4 100644 --- a/intrinsiccv/include/intrinsiccv/workspace/separable.h +++ b/intrinsiccv/include/intrinsiccv/workspace/separable.h @@ -12,7 +12,7 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/types.h" -namespace INTRINSICCV_SC_NAMESPACE { +namespace INTRINSICCV_TARGET_NAMESPACE { // Forward declarations. class SeparableFilterWorkspace; @@ -215,6 +215,6 @@ class SeparableFilterWorkspace final { uint8_t data_[0] INTRINSICCV_ATTR_ALIGNED(kAlignment); }; // end of class SeparableFilterWorkspace -} // namespace INTRINSICCV_SC_NAMESPACE +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_WORKSPACE_SEPARABLE_H diff --git a/intrinsiccv/src/analysis/min_max_loc_neon.cpp b/intrinsiccv/src/analysis/min_max_loc_neon.cpp index ef88a219a..4c28b4b15 100644 --- a/intrinsiccv/src/analysis/min_max_loc_neon.cpp +++ b/intrinsiccv/src/analysis/min_max_loc_neon.cpp @@ -338,4 +338,4 @@ intrinsiccv_error_t min_max_loc(const ScalarType *src, size_t src_stride, INTRINSICCV_INSTANTIATE_TEMPLATE(uint8_t); -} // namespace intrinsiccv::neon +} // namespace intrinsiccv::neon diff --git a/intrinsiccv/src/arithmetics/absdiff_sme2.cpp b/intrinsiccv/src/arithmetics/absdiff_sme2.cpp index 85f3e00ec..d59c8a1f5 100644 --- a/intrinsiccv/src/arithmetics/absdiff_sme2.cpp +++ b/intrinsiccv/src/arithmetics/absdiff_sme2.cpp @@ -7,10 +7,6 @@ namespace intrinsiccv::sme2 { -using sve2::Rectangle; -using sve2::Rows; -using sve2::UnrollTwice; - template ::value, bool> = true> VectorType vector_path_impl(svbool_t pg, VectorType src_a, @@ -30,8 +26,8 @@ VectorType vector_path_impl(svbool_t pg, VectorType src_a, template class SaturatingAbsDiff final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; VectorType vector_path(ContextType ctx, VectorType src_a, @@ -54,8 +50,7 @@ INTRINSICCV_LOCALLY_STREAMING intrinsiccv_error_t saturating_absdiff( Rows src_a_rows{src_a, src_a_stride}; Rows src_b_rows{src_b, src_b_stride}; Rows dst_rows{dst, dst_stride}; - sve2::apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, - dst_rows); + apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, dst_rows); return INTRINSICCV_OK; } diff --git a/intrinsiccv/src/arithmetics/absdiff_sve2.cpp b/intrinsiccv/src/arithmetics/absdiff_sve2.cpp index 94753bd67..185d14465 100644 --- a/intrinsiccv/src/arithmetics/absdiff_sve2.cpp +++ b/intrinsiccv/src/arithmetics/absdiff_sve2.cpp @@ -24,8 +24,8 @@ VectorType vector_path_impl(svbool_t pg, VectorType src_a, VectorType src_b) { template class SaturatingAbsDiff final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; VectorType vector_path(ContextType ctx, VectorType src_a, VectorType src_b) { @@ -48,8 +48,7 @@ intrinsiccv_error_t saturating_absdiff(const T *src_a, size_t src_a_stride, Rows src_a_rows{src_a, src_a_stride}; Rows src_b_rows{src_b, src_b_stride}; Rows dst_rows{dst, dst_stride}; - sve2::apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, - dst_rows); + apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, dst_rows); return INTRINSICCV_OK; } diff --git a/intrinsiccv/src/arithmetics/add_abs_with_threshold_sc.h b/intrinsiccv/src/arithmetics/add_abs_with_threshold_sc.h index b9d3176c2..d188db244 100644 --- a/intrinsiccv/src/arithmetics/add_abs_with_threshold_sc.h +++ b/intrinsiccv/src/arithmetics/add_abs_with_threshold_sc.h @@ -10,13 +10,13 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/sve2.h" -namespace intrinsiccv::sve2 { +namespace INTRINSICCV_TARGET_NAMESPACE { template class SaturatingAddAbsWithThreshold final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; explicit SaturatingAddAbsWithThreshold(ScalarType threshold) @@ -49,11 +49,10 @@ intrinsiccv_error_t saturating_add_abs_with_threshold_sc( Rows src_a_rows{src_a, src_a_stride}; Rows src_b_rows{src_b, src_b_stride}; Rows dst_rows{dst, dst_stride}; - sve2::apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, - dst_rows); + apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, dst_rows); return INTRINSICCV_OK; } -} // namespace intrinsiccv::sve2 +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_SATURATING_ADD_ABS_WITH_THRESHOLD_SC_H diff --git a/intrinsiccv/src/arithmetics/add_abs_with_threshold_sme2.cpp b/intrinsiccv/src/arithmetics/add_abs_with_threshold_sme2.cpp index 445d1119f..a8e5636a3 100644 --- a/intrinsiccv/src/arithmetics/add_abs_with_threshold_sme2.cpp +++ b/intrinsiccv/src/arithmetics/add_abs_with_threshold_sme2.cpp @@ -12,9 +12,9 @@ saturating_add_abs_with_threshold(const T *src_a, size_t src_a_stride, const T *src_b, size_t src_b_stride, T *dst, size_t dst_stride, size_t width, size_t height, T threshold) { - return sve2::saturating_add_abs_with_threshold_sc( - src_a, src_a_stride, src_b, src_b_stride, dst, dst_stride, width, height, - threshold); + return saturating_add_abs_with_threshold_sc(src_a, src_a_stride, src_b, + src_b_stride, dst, dst_stride, + width, height, threshold); } #define INTRINSICCV_INSTANTIATE_TEMPLATE(type) \ diff --git a/intrinsiccv/src/arithmetics/add_sme2.cpp b/intrinsiccv/src/arithmetics/add_sme2.cpp index 2063d5366..cdca993e4 100644 --- a/intrinsiccv/src/arithmetics/add_sme2.cpp +++ b/intrinsiccv/src/arithmetics/add_sme2.cpp @@ -9,15 +9,11 @@ namespace intrinsiccv::sme2 { -using sve2::Rectangle; -using sve2::Rows; -using sve2::UnrollTwice; - template class SaturatingAdd final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; VectorType vector_path(ContextType ctx, VectorType src_a, @@ -40,8 +36,7 @@ INTRINSICCV_LOCALLY_STREAMING intrinsiccv_error_t saturating_add( Rows src_a_rows{src_a, src_a_stride}; Rows src_b_rows{src_b, src_b_stride}; Rows dst_rows{dst, dst_stride}; - sve2::apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, - dst_rows); + apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, dst_rows); return INTRINSICCV_OK; } diff --git a/intrinsiccv/src/arithmetics/add_sve2.cpp b/intrinsiccv/src/arithmetics/add_sve2.cpp index dd37d6259..1309ea11a 100644 --- a/intrinsiccv/src/arithmetics/add_sve2.cpp +++ b/intrinsiccv/src/arithmetics/add_sve2.cpp @@ -12,8 +12,8 @@ namespace intrinsiccv::sve2 { template class SaturatingAdd final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; VectorType vector_path(ContextType ctx, VectorType src_a, VectorType src_b) { @@ -36,8 +36,7 @@ intrinsiccv_error_t saturating_add(const T *src_a, size_t src_a_stride, Rows src_a_rows{src_a, src_a_stride}; Rows src_b_rows{src_b, src_b_stride}; Rows dst_rows{dst, dst_stride}; - sve2::apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, - dst_rows); + apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, dst_rows); return INTRINSICCV_OK; } diff --git a/intrinsiccv/src/arithmetics/multiply_sve2.cpp b/intrinsiccv/src/arithmetics/multiply_sve2.cpp index 615dcd17a..1dda4eb90 100644 --- a/intrinsiccv/src/arithmetics/multiply_sve2.cpp +++ b/intrinsiccv/src/arithmetics/multiply_sve2.cpp @@ -10,8 +10,8 @@ namespace intrinsiccv::sve2 { template class SaturatingMultiply final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; explicit SaturatingMultiply(double scale = 1.0) : scale_{scale} {}; @@ -56,8 +56,7 @@ intrinsiccv_error_t saturating_multiply(const T *src_a, size_t src_a_stride, Rows src_a_rows{src_a, src_a_stride}; Rows src_b_rows{src_b, src_b_stride}; Rows dst_rows{dst, dst_stride}; - sve2::apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, - dst_rows); + apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, dst_rows); return INTRINSICCV_OK; } diff --git a/intrinsiccv/src/arithmetics/sub_sme2.cpp b/intrinsiccv/src/arithmetics/sub_sme2.cpp index 1b756d482..b987fbfa4 100644 --- a/intrinsiccv/src/arithmetics/sub_sme2.cpp +++ b/intrinsiccv/src/arithmetics/sub_sme2.cpp @@ -9,15 +9,11 @@ namespace intrinsiccv::sme2 { -using sve2::Rectangle; -using sve2::Rows; -using sve2::UnrollTwice; - template class SaturatingSub final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; VectorType vector_path(ContextType ctx, VectorType src_a, @@ -40,8 +36,7 @@ INTRINSICCV_LOCALLY_STREAMING intrinsiccv_error_t saturating_sub( Rows src_a_rows{src_a, src_a_stride}; Rows src_b_rows{src_b, src_b_stride}; Rows dst_rows{dst, dst_stride}; - sve2::apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, - dst_rows); + apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, dst_rows); return INTRINSICCV_OK; } diff --git a/intrinsiccv/src/arithmetics/sub_sve2.cpp b/intrinsiccv/src/arithmetics/sub_sve2.cpp index c1aebeaaa..312a92ac2 100644 --- a/intrinsiccv/src/arithmetics/sub_sve2.cpp +++ b/intrinsiccv/src/arithmetics/sub_sve2.cpp @@ -12,8 +12,8 @@ namespace intrinsiccv::sve2 { template class SaturatingSub final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; VectorType vector_path(ContextType ctx, VectorType src_a, VectorType src_b) { @@ -36,8 +36,7 @@ intrinsiccv_error_t saturating_sub(const T *src_a, size_t src_a_stride, Rows src_a_rows{src_a, src_a_stride}; Rows src_b_rows{src_b, src_b_stride}; Rows dst_rows{dst, dst_stride}; - sve2::apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, - dst_rows); + apply_operation_by_rows(operation, rect, src_a_rows, src_b_rows, dst_rows); return INTRINSICCV_OK; } diff --git a/intrinsiccv/src/arithmetics/threshold_sc.h b/intrinsiccv/src/arithmetics/threshold_sc.h index fba99cc6e..494a0f72a 100644 --- a/intrinsiccv/src/arithmetics/threshold_sc.h +++ b/intrinsiccv/src/arithmetics/threshold_sc.h @@ -8,13 +8,13 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/sve2.h" -namespace intrinsiccv::sve2 { +namespace INTRINSICCV_TARGET_NAMESPACE { template class BinaryThreshold final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; BinaryThreshold(ScalarType threshold, @@ -45,10 +45,10 @@ intrinsiccv_error_t threshold_binary_sc( Rows src_rows{src, src_stride}; Rows dst_rows{dst, dst_stride}; BinaryThreshold operation{threshold, value}; - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); return INTRINSICCV_OK; } -} // namespace intrinsiccv::sve2 +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_THRESHOLD_SC_H diff --git a/intrinsiccv/src/arithmetics/threshold_sme2.cpp b/intrinsiccv/src/arithmetics/threshold_sme2.cpp index e94e5cb18..768e272d7 100644 --- a/intrinsiccv/src/arithmetics/threshold_sme2.cpp +++ b/intrinsiccv/src/arithmetics/threshold_sme2.cpp @@ -10,8 +10,8 @@ template INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t threshold_binary(const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, size_t height, T threshold, T value) { - return intrinsiccv::sve2::threshold_binary_sc( - src, src_stride, dst, dst_stride, width, height, threshold, value); + return threshold_binary_sc(src, src_stride, dst, dst_stride, width, height, + threshold, value); } #define INTRINSICCV_INSTANTIATE_TEMPLATE(type) \ diff --git a/intrinsiccv/src/conversions/gray_to_rgb_sc.h b/intrinsiccv/src/conversions/gray_to_rgb_sc.h index b0aa59a8f..4613a55f0 100644 --- a/intrinsiccv/src/conversions/gray_to_rgb_sc.h +++ b/intrinsiccv/src/conversions/gray_to_rgb_sc.h @@ -9,7 +9,7 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/sve2.h" -namespace intrinsiccv::sve2 { +namespace INTRINSICCV_TARGET_NAMESPACE { template class GrayToRGB final : @@ -18,8 +18,8 @@ class GrayToRGB final : #endif public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; #if INTRINSICCV_PREFER_INTERLEAVING_LOAD_STORE @@ -105,8 +105,8 @@ class GrayToRGB final : template class GrayToRGBAWithInterleaving final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; void vector_path(ContextType ctx, VectorType src_vect, ScalarType *dst) INTRINSICCV_STREAMING_COMPATIBLE { @@ -123,8 +123,8 @@ template class GrayToRGBAWithLookUpTable final : public UnrollTwice, public UsesTailPath { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; explicit GrayToRGBAWithLookUpTable(svuint8x4_t &indices) INTRINSICCV_STREAMING_COMPATIBLE : indices_{indices} { @@ -217,7 +217,7 @@ INTRINSICCV_TARGET_FN_ATTRS static intrinsiccv_error_t gray_to_rgb_u8_sc( svuint8x3_t table_indices; GrayToRGB operation{table_indices}; #endif - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); return INTRINSICCV_OK; } @@ -234,20 +234,20 @@ INTRINSICCV_TARGET_FN_ATTRS static intrinsiccv_error_t gray_to_rgba_u8_sc( #if INTRINSICCV_PREFER_INTERLEAVING_LOAD_STORE GrayToRGBAWithInterleaving operation{}; - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); #else if (svcntb() > 128) { GrayToRGBAWithInterleaving operation{}; - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); } else { svuint8x4_t table_indices; GrayToRGBAWithLookUpTable operation{table_indices}; - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); } #endif return INTRINSICCV_OK; } -} // namespace intrinsiccv::sve2 +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_GRAY_TO_RGB_SC_H diff --git a/intrinsiccv/src/conversions/gray_to_rgb_sme2.cpp b/intrinsiccv/src/conversions/gray_to_rgb_sme2.cpp index d6777b5bc..4703f261c 100644 --- a/intrinsiccv/src/conversions/gray_to_rgb_sme2.cpp +++ b/intrinsiccv/src/conversions/gray_to_rgb_sme2.cpp @@ -9,15 +9,13 @@ namespace intrinsiccv::sme2 { INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t gray_to_rgb_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height) { - return intrinsiccv::sve2::gray_to_rgb_u8_sc(src, src_stride, dst, dst_stride, - width, height); + return gray_to_rgb_u8_sc(src, src_stride, dst, dst_stride, width, height); } INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t gray_to_rgba_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height) { - return intrinsiccv::sve2::gray_to_rgba_u8_sc(src, src_stride, dst, dst_stride, - width, height); + return gray_to_rgba_u8_sc(src, src_stride, dst, dst_stride, width, height); } } // namespace intrinsiccv::sme2 diff --git a/intrinsiccv/src/conversions/rgb_to_rgb_api.cpp b/intrinsiccv/src/conversions/rgb_to_rgb_api.cpp index 4d3ec4874..040e729ce 100644 --- a/intrinsiccv/src/conversions/rgb_to_rgb_api.cpp +++ b/intrinsiccv/src/conversions/rgb_to_rgb_api.cpp @@ -24,6 +24,10 @@ INTRINSICCV_DEFINE_C_API(intrinsiccv_rgba_to_rgb_u8, rgba_to_rgb_u8); extern "C" { +using INTRINSICCV_TARGET_NAMESPACE::CopyRows; +using INTRINSICCV_TARGET_NAMESPACE::Rectangle; +using INTRINSICCV_TARGET_NAMESPACE::Rows; + static intrinsiccv_error_t intrinsiccv_rgb_to_rgb_u8_impl( const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height) { diff --git a/intrinsiccv/src/conversions/rgb_to_rgb_sc.h b/intrinsiccv/src/conversions/rgb_to_rgb_sc.h index 145d6fb77..140ee0cc2 100644 --- a/intrinsiccv/src/conversions/rgb_to_rgb_sc.h +++ b/intrinsiccv/src/conversions/rgb_to_rgb_sc.h @@ -9,7 +9,7 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/sve2.h" -namespace intrinsiccv::sve2 { +namespace INTRINSICCV_TARGET_NAMESPACE { template class RGBToBGR final : @@ -19,8 +19,8 @@ class RGBToBGR final : #endif public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; #if INTRINSICCV_PREFER_INTERLEAVING_LOAD_STORE || \ @@ -103,8 +103,8 @@ class RGBToBGR final : template class RGBAToBGRA final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; void vector_path(ContextType ctx, const ScalarType *src, ScalarType *dst) INTRINSICCV_STREAMING_COMPATIBLE { @@ -120,8 +120,8 @@ class RGBAToBGRA final : public UnrollTwice { template class RGBToBGRA final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; void vector_path(ContextType ctx, const ScalarType *src, ScalarType *dst) INTRINSICCV_STREAMING_COMPATIBLE { @@ -137,8 +137,8 @@ class RGBToBGRA final : public UnrollTwice { template class RGBToRGBA final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; void vector_path(ContextType ctx, const ScalarType *src, ScalarType *dst) INTRINSICCV_STREAMING_COMPATIBLE { @@ -154,8 +154,8 @@ class RGBToRGBA final : public UnrollTwice { template class RGBAToBGR final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; void vector_path(ContextType ctx, const ScalarType *src, ScalarType *dst) INTRINSICCV_STREAMING_COMPATIBLE { @@ -171,8 +171,8 @@ class RGBAToBGR final : public UnrollTwice { template class RGBAToRGB final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; void vector_path(ContextType ctx, const ScalarType *src, ScalarType *dst) INTRINSICCV_STREAMING_COMPATIBLE { @@ -202,7 +202,7 @@ INTRINSICCV_TARGET_FN_ATTRS static intrinsiccv_error_t rgb_to_bgr_u8_sc( svuint8x4_t table_indices; RGBToBGR operation{table_indices}; #endif - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); return INTRINSICCV_OK; } @@ -218,7 +218,7 @@ static intrinsiccv_error_t rgba_to_bgra_u8_sc( Rows src_rows{src, src_stride, 4 /* RGBA */}; Rows dst_rows{dst, dst_stride, 4 /* BGRA */}; RGBAToBGRA operation; - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); return INTRINSICCV_OK; } @@ -234,7 +234,7 @@ static intrinsiccv_error_t rgb_to_bgra_u8_sc( Rows src_rows{src, src_stride, 3 /* RGB */}; Rows dst_rows{dst, dst_stride, 4 /* BGRA */}; RGBToBGRA operation; - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); return INTRINSICCV_OK; } @@ -250,7 +250,7 @@ static intrinsiccv_error_t rgb_to_rgba_u8_sc( Rows src_rows{src, src_stride, 3 /* RGB */}; Rows dst_rows{dst, dst_stride, 4 /* RGBA */}; RGBToRGBA operation; - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); return INTRINSICCV_OK; } @@ -266,7 +266,7 @@ static intrinsiccv_error_t rgba_to_bgr_u8_sc( Rows src_rows{src, src_stride, 4 /* RGBA */}; Rows dst_rows{dst, dst_stride, 3 /* BGR */}; RGBAToBGR operation; - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); return INTRINSICCV_OK; } @@ -282,10 +282,10 @@ static intrinsiccv_error_t rgba_to_rgb_u8_sc( Rows src_rows{src, src_stride, 4 /* RGBA */}; Rows dst_rows{dst, dst_stride, 3 /* RGB */}; RGBAToRGB operation; - sve2::apply_operation_by_rows(operation, rect, src_rows, dst_rows); + apply_operation_by_rows(operation, rect, src_rows, dst_rows); return INTRINSICCV_OK; } -} // namespace intrinsiccv::sve2 +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_RGB_TO_RGB_SC_H diff --git a/intrinsiccv/src/conversions/rgb_to_rgb_sme2.cpp b/intrinsiccv/src/conversions/rgb_to_rgb_sme2.cpp index 9e66ab7ab..522777474 100644 --- a/intrinsiccv/src/conversions/rgb_to_rgb_sme2.cpp +++ b/intrinsiccv/src/conversions/rgb_to_rgb_sme2.cpp @@ -9,43 +9,37 @@ namespace intrinsiccv::sme2 { INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t rgb_to_bgr_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height) { - return intrinsiccv::sve2::rgb_to_bgr_u8_sc(src, src_stride, dst, dst_stride, - width, height); + return rgb_to_bgr_u8_sc(src, src_stride, dst, dst_stride, width, height); } INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t rgba_to_bgra_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height) { - return intrinsiccv::sve2::rgba_to_bgra_u8_sc(src, src_stride, dst, dst_stride, - width, height); + return rgba_to_bgra_u8_sc(src, src_stride, dst, dst_stride, width, height); } INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t rgb_to_bgra_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height) { - return intrinsiccv::sve2::rgb_to_bgra_u8_sc(src, src_stride, dst, dst_stride, - width, height); + return rgb_to_bgra_u8_sc(src, src_stride, dst, dst_stride, width, height); } INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t rgb_to_rgba_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height) { - return intrinsiccv::sve2::rgb_to_rgba_u8_sc(src, src_stride, dst, dst_stride, - width, height); + return rgb_to_rgba_u8_sc(src, src_stride, dst, dst_stride, width, height); } INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t rgba_to_bgr_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height) { - return intrinsiccv::sve2::rgba_to_bgr_u8_sc(src, src_stride, dst, dst_stride, - width, height); + return rgba_to_bgr_u8_sc(src, src_stride, dst, dst_stride, width, height); } INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t rgba_to_rgb_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height) { - return intrinsiccv::sve2::rgba_to_rgb_u8_sc(src, src_stride, dst, dst_stride, - width, height); + return rgba_to_rgb_u8_sc(src, src_stride, dst, dst_stride, width, height); } } // namespace intrinsiccv::sme2 diff --git a/intrinsiccv/src/conversions/yuv_to_rgb_sc.h b/intrinsiccv/src/conversions/yuv_to_rgb_sc.h index 0eb57330a..a2858648a 100644 --- a/intrinsiccv/src/conversions/yuv_to_rgb_sc.h +++ b/intrinsiccv/src/conversions/yuv_to_rgb_sc.h @@ -9,13 +9,13 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/sve2.h" -namespace intrinsiccv::sve2 { +namespace INTRINSICCV_TARGET_NAMESPACE { template class YUVSpToRGBxOrBGRx final { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; explicit YUVSpToRGBxOrBGRx(bool is_nv21) INTRINSICCV_STREAMING_COMPATIBLE : is_nv21_(is_nv21) {} @@ -203,8 +203,8 @@ intrinsiccv_error_t yuv2rgbx_operation( ForwardingOperation forwarding_operation{operation}; OperationAdapter operation_adapter{forwarding_operation}; - sve2::RemainingPathAdapter remaining_path_adapter{operation_adapter}; - sve2::OperationContextAdapter context_adapter{remaining_path_adapter}; + RemainingPathAdapter remaining_path_adapter{operation_adapter}; + OperationContextAdapter context_adapter{remaining_path_adapter}; ParallelRowsAdapter parallel_rows_adapter{context_adapter}; RowBasedOperation row_based_operation{parallel_rows_adapter}; zip_parallel_rows(row_based_operation, rect, y_rows, uv_rows, rgbx_rows); @@ -251,6 +251,6 @@ static intrinsiccv_error_t yuv_sp_to_bgra_u8_sc( src_uv_stride, dst, dst_stride, width, height); } -} // namespace intrinsiccv::sve2 +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_YUV_TO_RGB_SC_H diff --git a/intrinsiccv/src/conversions/yuv_to_rgb_sme2.cpp b/intrinsiccv/src/conversions/yuv_to_rgb_sme2.cpp index b418106d1..cc1de8861 100644 --- a/intrinsiccv/src/conversions/yuv_to_rgb_sme2.cpp +++ b/intrinsiccv/src/conversions/yuv_to_rgb_sme2.cpp @@ -10,9 +10,8 @@ INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t yuv_sp_to_rgb_u8(const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21) { - return intrinsiccv::sve2::yuv_sp_to_rgb_u8_sc(src_y, src_y_stride, src_uv, - src_uv_stride, dst, dst_stride, - width, height, is_nv21); + return yuv_sp_to_rgb_u8_sc(src_y, src_y_stride, src_uv, src_uv_stride, dst, + dst_stride, width, height, is_nv21); } INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t @@ -20,18 +19,16 @@ yuv_sp_to_rgba_u8(const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21) { - return intrinsiccv::sve2::yuv_sp_to_rgba_u8_sc(src_y, src_y_stride, src_uv, - src_uv_stride, dst, dst_stride, - width, height, is_nv21); + return yuv_sp_to_rgba_u8_sc(src_y, src_y_stride, src_uv, src_uv_stride, dst, + dst_stride, width, height, is_nv21); } INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t yuv_sp_to_bgr_u8(const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21) { - return intrinsiccv::sve2::yuv_sp_to_bgr_u8_sc(src_y, src_y_stride, src_uv, - src_uv_stride, dst, dst_stride, - width, height, is_nv21); + return yuv_sp_to_bgr_u8_sc(src_y, src_y_stride, src_uv, src_uv_stride, dst, + dst_stride, width, height, is_nv21); } INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t @@ -39,9 +36,8 @@ yuv_sp_to_bgra_u8(const uint8_t *src_y, size_t src_y_stride, const uint8_t *src_uv, size_t src_uv_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, bool is_nv21) { - return intrinsiccv::sve2::yuv_sp_to_bgra_u8_sc(src_y, src_y_stride, src_uv, - src_uv_stride, dst, dst_stride, - width, height, is_nv21); + return yuv_sp_to_bgra_u8_sc(src_y, src_y_stride, src_uv, src_uv_stride, dst, + dst_stride, width, height, is_nv21); } } // namespace intrinsiccv::sme2 diff --git a/intrinsiccv/src/filters/gaussian_blur_api.cpp b/intrinsiccv/src/filters/gaussian_blur_api.cpp index fd9e2b6ba..81054db22 100644 --- a/intrinsiccv/src/filters/gaussian_blur_api.cpp +++ b/intrinsiccv/src/filters/gaussian_blur_api.cpp @@ -7,7 +7,7 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/workspace/separable.h" -namespace intrinsiccv { +namespace INTRINSICCV_TARGET_NAMESPACE { extern "C" { @@ -61,4 +61,4 @@ INTRINSICCV_MULTIVERSION_C_API( INTRINSICCV_SVE2_IMPL_IF(intrinsiccv::sve2::gaussian_blur_5x5_u8), intrinsiccv::sme2::gaussian_blur_5x5_u8); -} // namespace intrinsiccv +} // namespace INTRINSICCV_TARGET_NAMESPACE diff --git a/intrinsiccv/src/filters/gaussian_blur_sc.h b/intrinsiccv/src/filters/gaussian_blur_sc.h index dd42eb609..c954d0efd 100644 --- a/intrinsiccv/src/filters/gaussian_blur_sc.h +++ b/intrinsiccv/src/filters/gaussian_blur_sc.h @@ -10,7 +10,7 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/sve2.h" -namespace intrinsiccv::sve2 { +namespace INTRINSICCV_TARGET_NAMESPACE { // Primary template for Gaussian Blur approximation filters. template @@ -135,6 +135,6 @@ intrinsiccv_error_t discrete_gaussian_blur( return INTRINSICCV_OK; } -} // namespace intrinsiccv::sve2 +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_GAUSSIAN_BLUR_SC_H diff --git a/intrinsiccv/src/filters/gaussian_blur_sme2.cpp b/intrinsiccv/src/filters/gaussian_blur_sme2.cpp index eb947a852..f91d23d34 100644 --- a/intrinsiccv/src/filters/gaussian_blur_sme2.cpp +++ b/intrinsiccv/src/filters/gaussian_blur_sme2.cpp @@ -12,9 +12,9 @@ gaussian_blur_5x5_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, size_t channels, intrinsiccv_border_type_t border_type, intrinsiccv_filter_context_t *context) { - return sve2::discrete_gaussian_blur( - src, src_stride, dst, dst_stride, width, height, channels, border_type, - context); + return discrete_gaussian_blur(src, src_stride, dst, dst_stride, + width, height, channels, + border_type, context); } } // namespace intrinsiccv::sme2 diff --git a/intrinsiccv/src/filters/sobel_sc.h b/intrinsiccv/src/filters/sobel_sc.h index 01d9ae777..d8d05324e 100644 --- a/intrinsiccv/src/filters/sobel_sc.h +++ b/intrinsiccv/src/filters/sobel_sc.h @@ -9,7 +9,7 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/sve2.h" -namespace intrinsiccv::sve2 { +namespace INTRINSICCV_TARGET_NAMESPACE { // Template for 3x3 Sobel filters which calculate horizontal derivative // approximations, often denoted as Gx. @@ -147,8 +147,7 @@ static intrinsiccv_error_t sobel_3x3_horizontal_s16_u8_sc( } HorizontalSobel3x3 horizontal_sobel; - sve2::SeparableFilter3x3> filter{ - horizontal_sobel}; + SeparableFilter3x3> filter{horizontal_sobel}; workspace->process(rect, src_rows, dst_rows, channels, FixedBorderType::REPLICATE, filter); return INTRINSICCV_OK; @@ -184,12 +183,12 @@ static intrinsiccv_error_t sobel_3x3_vertical_s16_u8_sc( } VerticalSobel3x3 vertical_sobel; - sve2::SeparableFilter3x3> filter{vertical_sobel}; + SeparableFilter3x3> filter{vertical_sobel}; workspace->process(rect, src_rows, dst_rows, channels, FixedBorderType::REPLICATE, filter); return INTRINSICCV_OK; } -} // namespace intrinsiccv::sve2 +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_SOBEL_SC_H diff --git a/intrinsiccv/src/filters/sobel_sme2.cpp b/intrinsiccv/src/filters/sobel_sme2.cpp index 3ccb16baf..0d183f51c 100644 --- a/intrinsiccv/src/filters/sobel_sme2.cpp +++ b/intrinsiccv/src/filters/sobel_sme2.cpp @@ -10,16 +10,16 @@ INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t sobel_3x3_horizontal_s16_u8(const uint8_t *src, size_t src_stride, int16_t *dst, size_t dst_stride, size_t width, size_t height, size_t channels) { - return intrinsiccv::sve2::sobel_3x3_horizontal_s16_u8_sc( - src, src_stride, dst, dst_stride, width, height, channels); + return sobel_3x3_horizontal_s16_u8_sc(src, src_stride, dst, dst_stride, width, + height, channels); } INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t sobel_3x3_vertical_s16_u8(const uint8_t *src, size_t src_stride, int16_t *dst, size_t dst_stride, size_t width, size_t height, size_t channels) { - return intrinsiccv::sve2::sobel_3x3_vertical_s16_u8_sc( - src, src_stride, dst, dst_stride, width, height, channels); + return sobel_3x3_vertical_s16_u8_sc(src, src_stride, dst, dst_stride, width, + height, channels); } } // namespace intrinsiccv::sme2 diff --git a/intrinsiccv/src/morphology/morphology_api.cpp b/intrinsiccv/src/morphology/morphology_api.cpp index 0b351f592..1182309f2 100644 --- a/intrinsiccv/src/morphology/morphology_api.cpp +++ b/intrinsiccv/src/morphology/morphology_api.cpp @@ -52,6 +52,8 @@ intrinsiccv_error_t erode(const T *src, size_t src_stride, T *dst, extern "C" { +using INTRINSICCV_TARGET_NAMESPACE::MorphologyWorkspace; + intrinsiccv_error_t intrinsiccv_morphology_create( intrinsiccv_morphology_context_t **context, intrinsiccv_rectangle_t kernel, intrinsiccv_point_t anchor, intrinsiccv_border_type_t border_type, diff --git a/intrinsiccv/src/morphology/morphology_sc.h b/intrinsiccv/src/morphology/morphology_sc.h index 9294f218f..f9bf3b83a 100644 --- a/intrinsiccv/src/morphology/morphology_sc.h +++ b/intrinsiccv/src/morphology/morphology_sc.h @@ -13,14 +13,14 @@ #include "intrinsiccv/sve2.h" #include "intrinsiccv/types.h" -namespace intrinsiccv::sve2 { +namespace INTRINSICCV_TARGET_NAMESPACE { template class CopyDataSVE2 { class CopyOperation final : public UnrollTwice { public: - using ContextType = sve2::Context; - using VecTraits = sve2::VecTraits; + using ContextType = Context; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; VectorType vector_path(ContextType, @@ -45,7 +45,7 @@ class CopyDataSVE2 { template class VerticalOp final { public: - using VecTraits = sve2::VecTraits; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; VerticalOp(Rectangle rect, Rectangle kernel) INTRINSICCV_STREAMING_COMPATIBLE : rect_(rect), @@ -311,7 +311,7 @@ class VerticalOp final { template class HorizontalOp final { public: - using VecTraits = sve2::VecTraits; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; HorizontalOp(Rectangle rect, Rectangle kernel) INTRINSICCV_STREAMING_COMPATIBLE @@ -415,7 +415,7 @@ class HorizontalOp final { template class Min final { public: - using VecTraits = sve2::VecTraits; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; static VectorType operation(svbool_t pg, VectorType lhs, @@ -427,7 +427,7 @@ class Min final { template class Max final { public: - using VecTraits = sve2::VecTraits; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; using VectorType = typename VecTraits::VectorType; static VectorType operation(svbool_t pg, VectorType lhs, @@ -593,6 +593,6 @@ static intrinsiccv_error_t erode_sc(const T *src, size_t src_stride, T *dst, return INTRINSICCV_OK; } -} // namespace intrinsiccv::sve2 +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_MORPHOLOGY_SC_H diff --git a/intrinsiccv/src/morphology/morphology_sme2.cpp b/intrinsiccv/src/morphology/morphology_sme2.cpp index b1864a3af..91e9446bf 100644 --- a/intrinsiccv/src/morphology/morphology_sme2.cpp +++ b/intrinsiccv/src/morphology/morphology_sme2.cpp @@ -10,16 +10,16 @@ template INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t dilate(const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, size_t height, intrinsiccv_morphology_context_t *context) { - return intrinsiccv::sve2::dilate_sc >( - src, src_stride, dst, dst_stride, width, height, context); + return dilate_sc >(src, src_stride, dst, dst_stride, width, + height, context); } template INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t erode(const T *src, size_t src_stride, T *dst, size_t dst_stride, size_t width, size_t height, intrinsiccv_morphology_context_t *context) { - return intrinsiccv::sve2::erode_sc >( - src, src_stride, dst, dst_stride, width, height, context); + return erode_sc >(src, src_stride, dst, dst_stride, width, + height, context); } #define INTRINSICCV_INSTANTIATE_TEMPLATE(name, type) \ diff --git a/intrinsiccv/src/resize/resize_sc.h b/intrinsiccv/src/resize/resize_sc.h index 8c881010f..d183ca9c1 100644 --- a/intrinsiccv/src/resize/resize_sc.h +++ b/intrinsiccv/src/resize/resize_sc.h @@ -8,7 +8,7 @@ #include "intrinsiccv/intrinsiccv.h" #include "intrinsiccv/sve2.h" -namespace intrinsiccv::sve2 { +namespace INTRINSICCV_TARGET_NAMESPACE { static inline svuint8_t resize_parallel_vectors(svbool_t pg, svuint8_t top_row, svuint8_t bottom_row) @@ -47,7 +47,7 @@ static inline void process_parallel_rows( Rows src_rows, size_t src_width, Rows dst_rows, size_t dst_width) INTRINSICCV_STREAMING_COMPATIBLE { - using VecTraits = sve2::VecTraits; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; const size_t size_mask = ~static_cast(1U); // Process rows up to the last even pixel index. @@ -109,7 +109,7 @@ static inline void process_single_row( Rows src_rows, size_t src_width, Rows dst_rows, size_t dst_width) INTRINSICCV_STREAMING_COMPATIBLE { - using VecTraits = sve2::VecTraits; + using VecTraits = INTRINSICCV_TARGET_NAMESPACE::VecTraits; const size_t size_mask = ~static_cast(1U); // Process rows up to the last even pixel index. @@ -195,6 +195,6 @@ INTRINSICCV_TARGET_FN_ATTRS static intrinsiccv_error_t resize_to_quarter_u8_sc( return INTRINSICCV_OK; } -} // namespace intrinsiccv::sve2 +} // namespace INTRINSICCV_TARGET_NAMESPACE #endif // INTRINSICCV_RESIZE_SC_H diff --git a/intrinsiccv/src/resize/resize_sme2.cpp b/intrinsiccv/src/resize/resize_sme2.cpp index 69ae91e61..9f527d04e 100644 --- a/intrinsiccv/src/resize/resize_sme2.cpp +++ b/intrinsiccv/src/resize/resize_sme2.cpp @@ -11,9 +11,8 @@ INTRINSICCV_LOCALLY_STREAMING INTRINSICCV_TARGET_FN_ATTRS intrinsiccv_error_t resize_to_quarter_u8(const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height, uint8_t *dst, size_t dst_stride, size_t dst_width, size_t dst_height) { - return intrinsiccv::sve2::resize_to_quarter_u8_sc(src, src_stride, src_width, - src_height, dst, dst_stride, - dst_width, dst_height); + return resize_to_quarter_u8_sc(src, src_stride, src_width, src_height, dst, + dst_stride, dst_width, dst_height); } } // namespace intrinsiccv::sme2 diff --git a/test/api/test_yuv_to_rgb.cpp b/test/api/test_yuv_to_rgb.cpp index b462c8ce1..05922720f 100644 --- a/test/api/test_yuv_to_rgb.cpp +++ b/test/api/test_yuv_to_rgb.cpp @@ -44,8 +44,8 @@ class YuvTest final { input_y.set(4, 0, {7, 11, 128, 129}); // the width of the UV input must be even - test::Array2D input_uv{intrinsiccv::align_up(logical_width, 2), 3, - padding}; + test::Array2D input_uv{ + INTRINSICCV_TARGET_NAMESPACE::align_up(logical_width, 2), 3, padding}; input_uv.set(0, 0, {100, 130, 255, 255}); input_uv.set(1, 0, {0, 1, 3, 4}); input_uv.set(2, 0, {7, 8, 9, 10}); -- GitLab