From e0f6468f92c49159d21ce70164ae2eb193566c06 Mon Sep 17 00:00:00 2001 From: Michael Platings Date: Tue, 30 Jan 2024 09:14:09 +0000 Subject: [PATCH] Reduce text manipulation in macros Having the "intrinsiccv_" prefix added in a macro makes it hard to understand what functions are called and to locate where they are defined. This change is consistent with C++ Core Guideline ES.30 [1]. This change is an enabler for a later change to add error handling to the API. [1] https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-macros --- intrinsiccv/include/dispatch.h | 10 +- intrinsiccv/include/intrinsiccv.h | 309 +++++++++--------- intrinsiccv/src/analysis/canny_neon.cpp | 2 +- .../src/analysis/count_nonzeros_neon.cpp | 5 +- intrinsiccv/src/analysis/min_max_api.cpp | 54 +-- intrinsiccv/src/arithmetics/absdiff_api.cpp | 10 +- .../add_abs_with_threshold_api.cpp | 2 +- intrinsiccv/src/arithmetics/add_api.cpp | 16 +- intrinsiccv/src/arithmetics/multiply_api.cpp | 10 +- intrinsiccv/src/arithmetics/scale_api.cpp | 30 +- intrinsiccv/src/arithmetics/sub_api.cpp | 16 +- intrinsiccv/src/arithmetics/threshold_api.cpp | 2 +- intrinsiccv/src/arithmetics/transpose_api.cpp | 6 +- .../src/conversions/gray_to_rgb_api.cpp | 12 +- intrinsiccv/src/conversions/merge_api.cpp | 6 +- .../src/conversions/rgb_to_rgb_api.cpp | 32 +- intrinsiccv/src/conversions/split_api.cpp | 2 +- .../src/conversions/yuv_to_rgb_api.cpp | 16 +- intrinsiccv/src/filters/gaussian_blur_api.cpp | 8 +- intrinsiccv/src/filters/sobel_api.cpp | 14 +- intrinsiccv/src/morphology/morphology_api.cpp | 9 +- intrinsiccv/src/resize/resize_api.cpp | 2 +- 22 files changed, 281 insertions(+), 292 deletions(-) diff --git a/intrinsiccv/include/dispatch.h b/intrinsiccv/include/dispatch.h index 441c2bb7d..d033f52fb 100644 --- a/intrinsiccv/include/dispatch.h +++ b/intrinsiccv/include/dispatch.h @@ -95,16 +95,16 @@ static inline IFuncImplType default_ifunc_resolver( // Creates a multiversioned C API with an ifunc resolver for it #define INTRINSICCV_MULTIVERSION_C_API(api_name, impls_builder, retty, ...) \ extern "C" INTRINSICCV_IFUNC_RESOLVER IFuncImplType \ - intrinsiccv_##api_name##_ifunc_resolver(HwCapTy, __ifunc_arg_t *arg); \ + api_name##_ifunc_resolver(HwCapTy, __ifunc_arg_t *arg); \ \ - extern "C" IFuncImplType intrinsiccv_##api_name##_ifunc_resolver( \ - HwCapTy hwcap, __ifunc_arg_t *arg) { \ + extern "C" IFuncImplType api_name##_ifunc_resolver(HwCapTy hwcap, \ + __ifunc_arg_t *arg) { \ IFuncImpls impls = impls_builder(); \ return default_ifunc_resolver(make_hwcaps(hwcap, arg), impls); \ } \ \ - extern "C" retty intrinsiccv_##api_name(__VA_ARGS__) \ - INTRINSICCV_ATTR_IFUNC("intrinsiccv_" #api_name "_ifunc_resolver") + extern "C" retty api_name(__VA_ARGS__) \ + INTRINSICCV_ATTR_IFUNC(#api_name "_ifunc_resolver") } // namespace intrinsiccv diff --git a/intrinsiccv/include/intrinsiccv.h b/intrinsiccv/include/intrinsiccv.h index 2016dde0f..76865c6dd 100644 --- a/intrinsiccv/include/intrinsiccv.h +++ b/intrinsiccv/include/intrinsiccv.h @@ -24,19 +24,15 @@ extern "C" { #endif // __cplusplus -#define INTRINSICCV_C_API(name) intrinsiccv_##name +#define INTRINSICCV_BINARY_OP(name, type) \ + void name(const type *src_a, size_t src_a_stride, const type *src_b, \ + size_t src_b_stride, type *dst, size_t dst_stride, size_t width, \ + size_t height) -#define INTRINSICCV_BINARY_OP(name, type) \ - void INTRINSICCV_C_API(name)(const type *src_a, size_t src_a_stride, \ - const type *src_b, size_t src_b_stride, \ - type *dst, size_t dst_stride, size_t width, \ - size_t height) - -#define INTRINSICCV_BINARY_OP_SCALE(name, type, scaletype) \ - void INTRINSICCV_C_API(name)(const type *src_a, size_t src_a_stride, \ - const type *src_b, size_t src_b_stride, \ - type *dst, size_t dst_stride, size_t width, \ - size_t height, scaletype scale) +#define INTRINSICCV_BINARY_OP_SCALE(name, type, scaletype) \ + void name(const type *src_a, size_t src_a_stride, const type *src_b, \ + size_t src_b_stride, type *dst, size_t dst_stride, size_t width, \ + size_t height, scaletype scale) /// Adds the values of the corresponding elements in `src_a` and `src_b`, and /// puts the result into `dst`. @@ -61,21 +57,21 @@ extern "C" { /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -INTRINSICCV_BINARY_OP(saturating_add_s8, int8_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_add_s8, int8_t); /// @copydoc intrinsiccv_saturating_add_s8 -INTRINSICCV_BINARY_OP(saturating_add_u8, uint8_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_add_u8, uint8_t); /// @copydoc intrinsiccv_saturating_add_s8 -INTRINSICCV_BINARY_OP(saturating_add_s16, int16_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_add_s16, int16_t); /// @copydoc intrinsiccv_saturating_add_s8 -INTRINSICCV_BINARY_OP(saturating_add_u16, uint16_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_add_u16, uint16_t); /// @copydoc intrinsiccv_saturating_add_s8 -INTRINSICCV_BINARY_OP(saturating_add_s32, int32_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_add_s32, int32_t); /// @copydoc intrinsiccv_saturating_add_s8 -INTRINSICCV_BINARY_OP(saturating_add_u32, uint32_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_add_u32, uint32_t); /// @copydoc intrinsiccv_saturating_add_s8 -INTRINSICCV_BINARY_OP(saturating_add_s64, int64_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_add_s64, int64_t); /// @copydoc intrinsiccv_saturating_add_s8 -INTRINSICCV_BINARY_OP(saturating_add_u64, uint64_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_add_u64, uint64_t); /// Subtracts the value of the corresponding element in `src_b` from `src_a`, /// and puts the result into `dst`. @@ -100,21 +96,21 @@ INTRINSICCV_BINARY_OP(saturating_add_u64, uint64_t); /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -INTRINSICCV_BINARY_OP(saturating_sub_s8, int8_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_sub_s8, int8_t); /// @copydoc intrinsiccv_saturating_sub_s8 -INTRINSICCV_BINARY_OP(saturating_sub_u8, uint8_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_sub_u8, uint8_t); /// @copydoc intrinsiccv_saturating_sub_s8 -INTRINSICCV_BINARY_OP(saturating_sub_s16, int16_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_sub_s16, int16_t); /// @copydoc intrinsiccv_saturating_sub_s8 -INTRINSICCV_BINARY_OP(saturating_sub_u16, uint16_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_sub_u16, uint16_t); /// @copydoc intrinsiccv_saturating_sub_s8 -INTRINSICCV_BINARY_OP(saturating_sub_s32, int32_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_sub_s32, int32_t); /// @copydoc intrinsiccv_saturating_sub_s8 -INTRINSICCV_BINARY_OP(saturating_sub_u32, uint32_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_sub_u32, uint32_t); /// @copydoc intrinsiccv_saturating_sub_s8 -INTRINSICCV_BINARY_OP(saturating_sub_s64, int64_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_sub_s64, int64_t); /// @copydoc intrinsiccv_saturating_sub_s8 -INTRINSICCV_BINARY_OP(saturating_sub_u64, uint64_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_sub_u64, uint64_t); /// From the corresponding elements in `src_a` and `src_b`, subtracts the lower /// one from the higher one, and puts the result into `dst`. @@ -139,15 +135,15 @@ INTRINSICCV_BINARY_OP(saturating_sub_u64, uint64_t); /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -INTRINSICCV_BINARY_OP(saturating_absdiff_u8, uint8_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_absdiff_u8, uint8_t); /// @copydoc intrinsiccv_saturating_absdiff_u8 -INTRINSICCV_BINARY_OP(saturating_absdiff_s8, int8_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_absdiff_s8, int8_t); /// @copydoc intrinsiccv_saturating_absdiff_u8 -INTRINSICCV_BINARY_OP(saturating_absdiff_u16, uint16_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_absdiff_u16, uint16_t); /// @copydoc intrinsiccv_saturating_absdiff_u8 -INTRINSICCV_BINARY_OP(saturating_absdiff_s16, int16_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_absdiff_s16, int16_t); /// @copydoc intrinsiccv_saturating_absdiff_u8 -INTRINSICCV_BINARY_OP(saturating_absdiff_s32, int32_t); +INTRINSICCV_BINARY_OP(intrinsiccv_saturating_absdiff_s32, int32_t); /// Multiplies the values of the corresponding elements in `src_a` and `src_b`, /// and puts the result into `dst`. @@ -173,17 +169,22 @@ INTRINSICCV_BINARY_OP(saturating_absdiff_s32, int32_t); /// @param height Number of rows in the data. /// @param scale Currently unused parameter. /// -INTRINSICCV_BINARY_OP_SCALE(saturating_multiply_u8, uint8_t, double); +INTRINSICCV_BINARY_OP_SCALE(intrinsiccv_saturating_multiply_u8, uint8_t, + double); /// @copydoc intrinsiccv_saturating_multiply_u8 -INTRINSICCV_BINARY_OP_SCALE(saturating_multiply_s8, int8_t, double); +INTRINSICCV_BINARY_OP_SCALE(intrinsiccv_saturating_multiply_s8, int8_t, double); /// @copydoc intrinsiccv_saturating_multiply_u8 -INTRINSICCV_BINARY_OP_SCALE(saturating_multiply_u16, uint16_t, double); +INTRINSICCV_BINARY_OP_SCALE(intrinsiccv_saturating_multiply_u16, uint16_t, + double); /// @copydoc intrinsiccv_saturating_multiply_u8 -INTRINSICCV_BINARY_OP_SCALE(saturating_multiply_s16, int16_t, double); +INTRINSICCV_BINARY_OP_SCALE(intrinsiccv_saturating_multiply_s16, int16_t, + double); /// @copydoc intrinsiccv_saturating_multiply_u8 -INTRINSICCV_BINARY_OP_SCALE(saturating_multiply_s32, int32_t, double); +INTRINSICCV_BINARY_OP_SCALE(intrinsiccv_saturating_multiply_s32, int32_t, + double); -INTRINSICCV_BINARY_OP_SCALE(add_abs_with_threshold, int16_t, int16_t); +INTRINSICCV_BINARY_OP_SCALE(intrinsiccv_add_abs_with_threshold, int16_t, + int16_t); /// Converts a grayscale image to RGB. All channels are 8-bit wide. /// @@ -203,9 +204,9 @@ INTRINSICCV_BINARY_OP_SCALE(add_abs_with_threshold, int16_t, int16_t); /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Converts a grayscale image to RGBA. All channels are 8-bit wide. /// @@ -225,9 +226,9 @@ void INTRINSICCV_C_API(gray_to_rgb_u8)(const uint8_t *src, size_t src_stride, /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Converts an RGB image to BGR. All channels are 8-bit wide. /// @@ -247,9 +248,9 @@ void INTRINSICCV_C_API(gray_to_rgba_u8)(const uint8_t *src, size_t src_stride, /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Copies a source RBG image to destination buffer. /// All channels are 8-bit wide. @@ -265,9 +266,9 @@ void INTRINSICCV_C_API(rgb_to_bgr_u8)(const uint8_t *src, size_t src_stride, /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -void INTRINSICCV_C_API(rgb_to_rgb_u8)(const uint8_t *src, size_t src_stride, - uint8_t *dst, size_t dst_stride, - size_t width, size_t height); +void intrinsiccv_rgb_to_rgb_u8(const uint8_t *src, size_t src_stride, + uint8_t *dst, size_t dst_stride, size_t width, + size_t height); /// Converts an RGBA image to BGRA. All channels are 8-bit wide. /// @@ -287,9 +288,9 @@ void INTRINSICCV_C_API(rgb_to_rgb_u8)(const uint8_t *src, size_t src_stride, /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Copies a source RBGA image to destination buffer. /// All channels are 8-bit wide. @@ -305,9 +306,9 @@ void INTRINSICCV_C_API(rgba_to_bgra_u8)(const uint8_t *src, size_t src_stride, /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -void INTRINSICCV_C_API(rgba_to_rgba_u8)(const uint8_t *src, size_t src_stride, - uint8_t *dst, size_t dst_stride, - size_t width, size_t height); +void intrinsiccv_rgba_to_rgba_u8(const uint8_t *src, size_t src_stride, + uint8_t *dst, size_t dst_stride, size_t width, + size_t height); /// Converts an RGB image to BGRA. All channels are 8-bit wide. /// @@ -328,9 +329,9 @@ void INTRINSICCV_C_API(rgba_to_rgba_u8)(const uint8_t *src, size_t src_stride, /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Converts an RGB image to RGBA. All channels are 8-bit wide. /// @@ -351,9 +352,9 @@ void INTRINSICCV_C_API(rgb_to_bgra_u8)(const uint8_t *src, size_t src_stride, /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Converts an RGBA image to BGR. All channels are 8-bit wide. /// @@ -374,9 +375,9 @@ void INTRINSICCV_C_API(rgb_to_rgba_u8)(const uint8_t *src, size_t src_stride, /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Converts an RGBA image to RGB. All channels are 8-bit wide. /// @@ -397,9 +398,9 @@ void INTRINSICCV_C_API(rgba_to_bgr_u8)(const uint8_t *src, size_t src_stride, /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Converts an NV12 or NV21 YUV image to RGB. All channels are 8-bit wide. /// @@ -430,12 +431,10 @@ void INTRINSICCV_C_API(rgba_to_rgb_u8)(const uint8_t *src, size_t src_stride, /// @param is_nv21 If true, input is treated as NV21, otherwise treated /// as NV12. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Converts an NV12 or NV21 YUV image to BGR. All channels are 8-bit wide. /// @@ -466,12 +465,10 @@ void INTRINSICCV_C_API(yuv_sp_to_rgb_u8)(const uint8_t *src_y, /// @param is_nv21 If true, input is treated as NV21, otherwise treated /// as NV12. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Converts an NV12 or NV21 YUV image to RGBA. All channels are 8-bit wide. /// Alpha channel is set to 0xFF. @@ -501,12 +498,10 @@ void INTRINSICCV_C_API(yuv_sp_to_bgr_u8)(const uint8_t *src_y, /// @param is_nv21 If true, input is treated as NV21, otherwise treated /// as NV12. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Converts an NV12 or NV21 YUV image to BGRA. All channels are 8-bit wide. /// Alpha channel is set to 0xFF. @@ -536,12 +531,10 @@ void INTRINSICCV_C_API(yuv_sp_to_rgba_u8)(const uint8_t *src_y, /// @param is_nv21 If true, input is treated as NV21, otherwise treated /// as NV12. /// -void INTRINSICCV_C_API(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); +void intrinsiccv_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); /// Performs a comparison of each element's value in `src` with respect to a /// caller defined threshold. The strictly larger elements are set to @@ -561,26 +554,23 @@ void INTRINSICCV_C_API(yuv_sp_to_bgra_u8)(const uint8_t *src_y, /// compared to. /// @param value The value that the larger elements are set to. /// -void INTRINSICCV_C_API(threshold_binary_u8)(const uint8_t *src, - size_t src_stride, uint8_t *dst, - size_t dst_stride, size_t width, - size_t height, uint8_t threshold, - uint8_t value); +void intrinsiccv_threshold_binary_u8(const uint8_t *src, size_t src_stride, + uint8_t *dst, size_t dst_stride, + size_t width, size_t height, + uint8_t threshold, uint8_t value); -intrinsiccv_morphology_params_t *INTRINSICCV_C_API(morphology_create)( +intrinsiccv_morphology_params_t *intrinsiccv_morphology_create( intrinsiccv_morphology_params_t *params, intrinsiccv_rectangle_t image); -void INTRINSICCV_C_API(morphology_release)( - intrinsiccv_morphology_params_t *params); +void intrinsiccv_morphology_release(intrinsiccv_morphology_params_t *params); -void INTRINSICCV_C_API(dilate_u8)( - const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, - size_t width, size_t height, const intrinsiccv_morphology_params_t *params); +void intrinsiccv_dilate_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, size_t height, + const intrinsiccv_morphology_params_t *params); -void INTRINSICCV_C_API(erode_u8)(const uint8_t *src, size_t src_stride, - uint8_t *dst, size_t dst_stride, size_t width, - size_t height, - const intrinsiccv_morphology_params_t *params); +void intrinsiccv_erode_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, size_t height, + const intrinsiccv_morphology_params_t *params); /// Counts how many nonzero elements are in the source data. /// @@ -591,39 +581,40 @@ void INTRINSICCV_C_API(erode_u8)(const uint8_t *src, size_t src_stride, /// @param width Number of elements in a row. /// @param height Number of rows in the data. /// -size_t INTRINSICCV_C_API(count_nonzeros_u8)(const uint8_t *src, - size_t src_stride, size_t width, - size_t height); +size_t intrinsiccv_count_nonzeros_u8(const uint8_t *src, size_t src_stride, + size_t width, size_t height); -void INTRINSICCV_C_API(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); +void intrinsiccv_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); -void INTRINSICCV_C_API(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 channel); +void intrinsiccv_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 channel); -void INTRINSICCV_C_API(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 channel); +void intrinsiccv_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 channel); -void INTRINSICCV_C_API(canny_u8)(const uint8_t *src, size_t src_stride, - uint8_t *dst, size_t dst_stride, size_t width, - size_t height, double low_threshold, - double high_threshold); +void intrinsiccv_canny_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, size_t height, + double low_threshold, double high_threshold); -intrinsiccv_filter_params_t *INTRINSICCV_C_API(filter_create)( +intrinsiccv_filter_params_t *intrinsiccv_filter_create( intrinsiccv_filter_params_t *params, intrinsiccv_rectangle_t image); -void INTRINSICCV_C_API(filter_release)(intrinsiccv_filter_params_t *params); +void intrinsiccv_filter_release(intrinsiccv_filter_params_t *params); -void INTRINSICCV_C_API(gaussian_blur_3x3_u8)( +void intrinsiccv_gaussian_blur_3x3_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, const intrinsiccv_filter_params_t *params); -void INTRINSICCV_C_API(gaussian_blur_5x5_u8)( +void intrinsiccv_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, @@ -650,14 +641,13 @@ void INTRINSICCV_C_API(gaussian_blur_5x5_u8)( /// @param channels Number of channels in the data. /// @param element_size Size of one element in bytes. /// -void INTRINSICCV_C_API(split)(const void *src_data, size_t src_stride, - void **dst_data, size_t *dst_strides, - size_t width, size_t height, size_t channels, - size_t element_size); +void intrinsiccv_split(const void *src_data, size_t src_stride, void **dst_data, + size_t *dst_strides, size_t width, size_t height, + size_t channels, size_t element_size); -void INTRINSICCV_C_API(transpose)(const void *src, size_t src_stride, void *dst, - size_t dst_stride, size_t src_width, - size_t src_height, size_t element_size); +void intrinsiccv_transpose(const void *src, size_t src_stride, void *dst, + size_t dst_stride, size_t src_width, + size_t src_height, size_t element_size); /// Merges separate 1-channel source streams to one multi channel stream. /// @@ -680,10 +670,9 @@ void INTRINSICCV_C_API(transpose)(const void *src, size_t src_stride, void *dst, /// @param channels Number of channels in the destination data. /// @param element_size Size of one element in bytes. /// -void INTRINSICCV_C_API(merge)(const void **srcs, const size_t *src_strides, - void *dst, size_t dst_stride, size_t width, - size_t height, size_t channels, - size_t element_size); +void intrinsiccv_merge(const void **srcs, const size_t *src_strides, void *dst, + size_t dst_stride, size_t width, size_t height, + size_t channels, size_t element_size); /// Calculates minimum and maximum element value across the source data. /// @@ -698,25 +687,25 @@ void INTRINSICCV_C_API(merge)(const void **srcs, const size_t *src_strides, /// @param max_value Pointer to save result maximum value to, or nullptr if /// maximum is not to be calculated. /// -void INTRINSICCV_C_API(min_max_u8)(const uint8_t *src, size_t src_stride, - size_t width, size_t height, - uint8_t *min_value, uint8_t *max_value); +void intrinsiccv_min_max_u8(const uint8_t *src, size_t src_stride, size_t width, + size_t height, uint8_t *min_value, + uint8_t *max_value); /// @copydoc intrinsiccv_min_max_u8 -void INTRINSICCV_C_API(min_max_s8)(const int8_t *src, size_t src_stride, - size_t width, size_t height, - int8_t *min_value, int8_t *max_value); +void intrinsiccv_min_max_s8(const int8_t *src, size_t src_stride, size_t width, + size_t height, int8_t *min_value, + int8_t *max_value); /// @copydoc intrinsiccv_min_max_u8 -void INTRINSICCV_C_API(min_max_u16)(const uint16_t *src, size_t src_stride, - size_t width, size_t height, - uint16_t *min_value, uint16_t *max_value); +void intrinsiccv_min_max_u16(const uint16_t *src, size_t src_stride, + size_t width, size_t height, uint16_t *min_value, + uint16_t *max_value); /// @copydoc intrinsiccv_min_max_u8 -void INTRINSICCV_C_API(min_max_s16)(const int16_t *src, size_t src_stride, - size_t width, size_t height, - int16_t *min_value, int16_t *max_value); +void intrinsiccv_min_max_s16(const int16_t *src, size_t src_stride, + size_t width, size_t height, int16_t *min_value, + int16_t *max_value); /// @copydoc intrinsiccv_min_max_u8 -void INTRINSICCV_C_API(min_max_s32)(const int32_t *src, size_t src_stride, - size_t width, size_t height, - int32_t *min_value, int32_t *max_value); +void intrinsiccv_min_max_s32(const int32_t *src, size_t src_stride, + size_t width, size_t height, int32_t *min_value, + int32_t *max_value); /// Finds minimum and maximum element value across the source data, /// and returns their location in the source data as offset in bytes @@ -733,13 +722,13 @@ void INTRINSICCV_C_API(min_max_s32)(const int32_t *src, size_t src_stride, /// @param max_offset Pointer to save result offset of maximum value to, or /// nullptr if maximum is not to be calculated. /// -void INTRINSICCV_C_API(min_max_loc_u8)(const uint8_t *src, size_t src_stride, - size_t width, size_t height, - size_t *min_offset, size_t *max_offset); +void intrinsiccv_min_max_loc_u8(const uint8_t *src, size_t src_stride, + size_t width, size_t height, size_t *min_offset, + size_t *max_offset); -void INTRINSICCV_C_API(scale_u8)(const uint8_t *src, size_t src_stride, - uint8_t *dst, size_t dst_stride, size_t width, - size_t height, float scale, float shift); +void intrinsiccv_scale_u8(const uint8_t *src, size_t src_stride, uint8_t *dst, + size_t dst_stride, size_t width, size_t height, + float scale, float shift); #ifdef __cplusplus } // extern "C" diff --git a/intrinsiccv/src/analysis/canny_neon.cpp b/intrinsiccv/src/analysis/canny_neon.cpp index 200e1b41f..8ffb7729c 100644 --- a/intrinsiccv/src/analysis/canny_neon.cpp +++ b/intrinsiccv/src/analysis/canny_neon.cpp @@ -465,7 +465,7 @@ static void perform_hysteresis(StrongEdgeStack &strong_edge_pixels, } } -extern "C" INTRINSICCV_TARGET_FN_ATTRS void INTRINSICCV_C_API(canny_u8)( +extern "C" INTRINSICCV_TARGET_FN_ATTRS void intrinsiccv_canny_u8( const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, size_t height, double low_threshold, double high_threshold) { Rectangle dst_rect{width, height}; diff --git a/intrinsiccv/src/analysis/count_nonzeros_neon.cpp b/intrinsiccv/src/analysis/count_nonzeros_neon.cpp index 0d692a270..0f99fa44d 100644 --- a/intrinsiccv/src/analysis/count_nonzeros_neon.cpp +++ b/intrinsiccv/src/analysis/count_nonzeros_neon.cpp @@ -63,9 +63,8 @@ INTRINSICCV_TARGET_FN_ATTRS static size_t count_nonzeros(const T *src, extern "C" { INTRINSICCV_TARGET_FN_ATTRS -size_t INTRINSICCV_C_API(count_nonzeros_u8)(const uint8_t *src, - size_t src_stride, size_t width, - size_t height) { +size_t intrinsiccv_count_nonzeros_u8(const uint8_t *src, size_t src_stride, + size_t width, size_t height) { return count_nonzeros(src, src_stride, width, height); } diff --git a/intrinsiccv/src/analysis/min_max_api.cpp b/intrinsiccv/src/analysis/min_max_api.cpp index 34b93e6d1..c34c735b7 100644 --- a/intrinsiccv/src/analysis/min_max_api.cpp +++ b/intrinsiccv/src/analysis/min_max_api.cpp @@ -24,32 +24,32 @@ namespace sve2 {} // namespace sve2 namespace sme2 {} // namespace sme2 -#define INTRINSICCV_DEFINE_MINMAX_API(suffix, type) \ - static IFuncImpls min_max_##suffix##_impls_builder(void) { \ - IFuncImpls impls; \ - INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::min_max); \ - return impls; \ - } \ - INTRINSICCV_MULTIVERSION_C_API( \ - min_max_##suffix, min_max_##suffix##_impls_builder, void, const type *, \ - size_t, size_t, size_t, type *, type *) - -INTRINSICCV_DEFINE_MINMAX_API(u8, uint8_t); -INTRINSICCV_DEFINE_MINMAX_API(s8, int8_t); -INTRINSICCV_DEFINE_MINMAX_API(u16, uint16_t); -INTRINSICCV_DEFINE_MINMAX_API(s16, int16_t); -INTRINSICCV_DEFINE_MINMAX_API(s32, int32_t); - -#define INTRINSICCV_DEFINE_MINMAXLOC_API(suffix, type) \ - static IFuncImpls min_max_loc_##suffix##_impls_builder(void) { \ - IFuncImpls impls; \ - INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::min_max_loc); \ - return impls; \ - } \ - INTRINSICCV_MULTIVERSION_C_API( \ - min_max_loc_##suffix, min_max_loc_##suffix##_impls_builder, void, \ - const type *, size_t, size_t, size_t, size_t *, size_t *) - -INTRINSICCV_DEFINE_MINMAXLOC_API(u8, uint8_t); +#define INTRINSICCV_DEFINE_MINMAX_API(name, type) \ + static IFuncImpls name##_impls_builder(void) { \ + IFuncImpls impls; \ + INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::min_max); \ + return impls; \ + } \ + INTRINSICCV_MULTIVERSION_C_API(name, name##_impls_builder, void, \ + const type *, size_t, size_t, size_t, type *, \ + type *) + +INTRINSICCV_DEFINE_MINMAX_API(intrinsiccv_min_max_u8, uint8_t); +INTRINSICCV_DEFINE_MINMAX_API(intrinsiccv_min_max_s8, int8_t); +INTRINSICCV_DEFINE_MINMAX_API(intrinsiccv_min_max_u16, uint16_t); +INTRINSICCV_DEFINE_MINMAX_API(intrinsiccv_min_max_s16, int16_t); +INTRINSICCV_DEFINE_MINMAX_API(intrinsiccv_min_max_s32, int32_t); + +#define INTRINSICCV_DEFINE_MINMAXLOC_API(name, type) \ + static IFuncImpls name##_impls_builder(void) { \ + IFuncImpls impls; \ + INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::min_max_loc); \ + return impls; \ + } \ + INTRINSICCV_MULTIVERSION_C_API(name, name##_impls_builder, void, \ + const type *, size_t, size_t, size_t, \ + size_t *, size_t *) + +INTRINSICCV_DEFINE_MINMAXLOC_API(intrinsiccv_min_max_loc_u8, uint8_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/arithmetics/absdiff_api.cpp b/intrinsiccv/src/arithmetics/absdiff_api.cpp index a83e3a820..d0e66ac81 100644 --- a/intrinsiccv/src/arithmetics/absdiff_api.cpp +++ b/intrinsiccv/src/arithmetics/absdiff_api.cpp @@ -47,10 +47,10 @@ void saturating_absdiff(const T *src_a, size_t src_a_stride, const T *src_b, const type *, size_t, const type *, size_t, \ type *, size_t, size_t, size_t) -INTRINSICCV_DEFINE_C_API(saturating_absdiff_u8, uint8_t); -INTRINSICCV_DEFINE_C_API(saturating_absdiff_s8, int8_t); -INTRINSICCV_DEFINE_C_API(saturating_absdiff_u16, uint16_t); -INTRINSICCV_DEFINE_C_API(saturating_absdiff_s16, int16_t); -INTRINSICCV_DEFINE_C_API(saturating_absdiff_s32, int32_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_absdiff_u8, uint8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_absdiff_s8, int8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_absdiff_u16, uint16_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_absdiff_s16, int16_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_absdiff_s32, int32_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/arithmetics/add_abs_with_threshold_api.cpp b/intrinsiccv/src/arithmetics/add_abs_with_threshold_api.cpp index f1a4c2ebf..61c74a727 100644 --- a/intrinsiccv/src/arithmetics/add_abs_with_threshold_api.cpp +++ b/intrinsiccv/src/arithmetics/add_abs_with_threshold_api.cpp @@ -50,6 +50,6 @@ void add_abs_with_threshold(const T *src_a, size_t src_a_stride, const T *src_b, const type *, size_t, const type *, size_t, \ type *, size_t, size_t, size_t, type) -INTRINSICCV_DEFINE_C_API(add_abs_with_threshold, int16_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_add_abs_with_threshold, int16_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/arithmetics/add_api.cpp b/intrinsiccv/src/arithmetics/add_api.cpp index 33de62456..363d4cd94 100644 --- a/intrinsiccv/src/arithmetics/add_api.cpp +++ b/intrinsiccv/src/arithmetics/add_api.cpp @@ -47,13 +47,13 @@ void saturating_add(const T *src_a, size_t src_a_stride, const T *src_b, const type *, size_t, const type *, size_t, \ type *, size_t, size_t, size_t) -INTRINSICCV_DEFINE_C_API(saturating_add_s8, int8_t); -INTRINSICCV_DEFINE_C_API(saturating_add_u8, uint8_t); -INTRINSICCV_DEFINE_C_API(saturating_add_s16, int16_t); -INTRINSICCV_DEFINE_C_API(saturating_add_u16, uint16_t); -INTRINSICCV_DEFINE_C_API(saturating_add_s32, int32_t); -INTRINSICCV_DEFINE_C_API(saturating_add_u32, uint32_t); -INTRINSICCV_DEFINE_C_API(saturating_add_s64, int64_t); -INTRINSICCV_DEFINE_C_API(saturating_add_u64, uint64_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_add_s8, int8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_add_u8, uint8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_add_s16, int16_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_add_u16, uint16_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_add_s32, int32_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_add_u32, uint32_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_add_s64, int64_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_add_u64, uint64_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/arithmetics/multiply_api.cpp b/intrinsiccv/src/arithmetics/multiply_api.cpp index 3df1e669b..ff9f00668 100644 --- a/intrinsiccv/src/arithmetics/multiply_api.cpp +++ b/intrinsiccv/src/arithmetics/multiply_api.cpp @@ -47,10 +47,10 @@ void saturating_multiply(const T *src_a, size_t src_a_stride, const T *src_b, const type *, size_t, const type *, size_t, \ type *, size_t, size_t, size_t, double) -INTRINSICCV_DEFINE_C_API(saturating_multiply_u8, uint8_t); -INTRINSICCV_DEFINE_C_API(saturating_multiply_s8, int8_t); -INTRINSICCV_DEFINE_C_API(saturating_multiply_u16, uint16_t); -INTRINSICCV_DEFINE_C_API(saturating_multiply_s16, int16_t); -INTRINSICCV_DEFINE_C_API(saturating_multiply_s32, int32_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_multiply_u8, uint8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_multiply_s8, int8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_multiply_u16, uint16_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_multiply_s16, int16_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_multiply_s32, int32_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/arithmetics/scale_api.cpp b/intrinsiccv/src/arithmetics/scale_api.cpp index db658da02..4ee262b7f 100644 --- a/intrinsiccv/src/arithmetics/scale_api.cpp +++ b/intrinsiccv/src/arithmetics/scale_api.cpp @@ -19,20 +19,20 @@ namespace sve2 {} // namespace sve2 namespace sme2 {} // namespace sme2 -#define INTRINSICCV_DEFINE_SCALE_API(suffix, type) \ - static IFuncImpls scale_##suffix##_impls_builder(void) { \ - IFuncImpls impls; \ - INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::scale); \ - return impls; \ - } \ - INTRINSICCV_MULTIVERSION_C_API( \ - scale_##suffix, scale_##suffix##_impls_builder, void, const type *, \ - size_t, type *, size_t, size_t, size_t, float, float) - -INTRINSICCV_DEFINE_SCALE_API(u8, uint8_t); -// INTRINSICCV_DEFINE_SCALE_API(s8, int8_t); -// INTRINSICCV_DEFINE_SCALE_API(u16, uint16_t); -// INTRINSICCV_DEFINE_SCALE_API(s16, int16_t); -// INTRINSICCV_DEFINE_SCALE_API(s32, int32_t); +#define INTRINSICCV_DEFINE_SCALE_API(name, type) \ + static IFuncImpls name##_impls_builder(void) { \ + IFuncImpls impls; \ + INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::scale); \ + return impls; \ + } \ + INTRINSICCV_MULTIVERSION_C_API(name, name##_impls_builder, void, \ + const type *, size_t, type *, size_t, size_t, \ + size_t, float, float) + +INTRINSICCV_DEFINE_SCALE_API(intrinsiccv_scale_u8, uint8_t); +// INTRINSICCV_DEFINE_SCALE_API(intrinsiccv_scale_s8, int8_t); +// INTRINSICCV_DEFINE_SCALE_API(intrinsiccv_scale_u16, uint16_t); +// INTRINSICCV_DEFINE_SCALE_API(intrinsiccv_scale_s16, int16_t); +// INTRINSICCV_DEFINE_SCALE_API(intrinsiccv_scale_s32, int32_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/arithmetics/sub_api.cpp b/intrinsiccv/src/arithmetics/sub_api.cpp index f426258f4..e52fe080e 100644 --- a/intrinsiccv/src/arithmetics/sub_api.cpp +++ b/intrinsiccv/src/arithmetics/sub_api.cpp @@ -46,13 +46,13 @@ void saturating_sub(const T *src_a, size_t src_a_stride, const T *src_b, const type *, size_t, const type *, size_t, \ type *, size_t, size_t, size_t) -INTRINSICCV_DEFINE_C_API(saturating_sub_s8, int8_t); -INTRINSICCV_DEFINE_C_API(saturating_sub_u8, uint8_t); -INTRINSICCV_DEFINE_C_API(saturating_sub_s16, int16_t); -INTRINSICCV_DEFINE_C_API(saturating_sub_u16, uint16_t); -INTRINSICCV_DEFINE_C_API(saturating_sub_s32, int32_t); -INTRINSICCV_DEFINE_C_API(saturating_sub_u32, uint32_t); -INTRINSICCV_DEFINE_C_API(saturating_sub_s64, int64_t); -INTRINSICCV_DEFINE_C_API(saturating_sub_u64, uint64_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_sub_s8, int8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_sub_u8, uint8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_sub_s16, int16_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_sub_u16, uint16_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_sub_s32, int32_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_sub_u32, uint32_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_sub_s64, int64_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_saturating_sub_u64, uint64_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/arithmetics/threshold_api.cpp b/intrinsiccv/src/arithmetics/threshold_api.cpp index ff0786ff9..53968ccd8 100644 --- a/intrinsiccv/src/arithmetics/threshold_api.cpp +++ b/intrinsiccv/src/arithmetics/threshold_api.cpp @@ -40,6 +40,6 @@ void threshold_binary(const T *src, size_t src_stride, T *dst, const type *, size_t, type *, size_t, size_t, \ size_t, type, type) -INTRINSICCV_DEFINE_C_API(threshold_binary_u8, uint8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_threshold_binary_u8, uint8_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/arithmetics/transpose_api.cpp b/intrinsiccv/src/arithmetics/transpose_api.cpp index 037729a2c..7cf11cbfc 100644 --- a/intrinsiccv/src/arithmetics/transpose_api.cpp +++ b/intrinsiccv/src/arithmetics/transpose_api.cpp @@ -13,8 +13,8 @@ static IFuncImpls transpose_impls_builder(void) { INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::transpose); return impls; } -INTRINSICCV_MULTIVERSION_C_API(transpose, transpose_impls_builder, void, - const void *, size_t, void *, size_t, size_t, - size_t, size_t); +INTRINSICCV_MULTIVERSION_C_API(intrinsiccv_transpose, transpose_impls_builder, + void, const void *, size_t, void *, size_t, + size_t, size_t, size_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/conversions/gray_to_rgb_api.cpp b/intrinsiccv/src/conversions/gray_to_rgb_api.cpp index ca6215b8b..36b79889b 100644 --- a/intrinsiccv/src/conversions/gray_to_rgb_api.cpp +++ b/intrinsiccv/src/conversions/gray_to_rgb_api.cpp @@ -8,19 +8,19 @@ namespace intrinsiccv { -#define INTRINSICCV_DEFINE_C_API(name) \ +#define INTRINSICCV_DEFINE_C_API(name, partialname) \ static IFuncImpls name##_impls_builder(void) { \ IFuncImpls impls; \ - INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::name); \ - INTRINSICCV_ADD_SVE2_IMPL_IF(intrinsiccv::sve2::name); \ - INTRINSICCV_ADD_SME2_IMPL(intrinsiccv::sme2::name); \ + INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::partialname); \ + INTRINSICCV_ADD_SVE2_IMPL_IF(intrinsiccv::sve2::partialname); \ + INTRINSICCV_ADD_SME2_IMPL(intrinsiccv::sme2::partialname); \ return impls; \ } \ INTRINSICCV_MULTIVERSION_C_API( \ name, name##_impls_builder, void, const uint8_t *src, size_t src_stride, \ uint8_t *dst, size_t dst_stride, size_t width, size_t height) -INTRINSICCV_DEFINE_C_API(gray_to_rgb_u8); -INTRINSICCV_DEFINE_C_API(gray_to_rgba_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_gray_to_rgb_u8, gray_to_rgb_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_gray_to_rgba_u8, gray_to_rgba_u8); } // namespace intrinsiccv diff --git a/intrinsiccv/src/conversions/merge_api.cpp b/intrinsiccv/src/conversions/merge_api.cpp index 8ee77bedb..622aae866 100644 --- a/intrinsiccv/src/conversions/merge_api.cpp +++ b/intrinsiccv/src/conversions/merge_api.cpp @@ -13,8 +13,8 @@ static IFuncImpls merge_impls_builder(void) { INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::merge); return impls; } -INTRINSICCV_MULTIVERSION_C_API(merge, merge_impls_builder, void, const void **, - const size_t *, void *, size_t, size_t, size_t, - size_t, size_t); +INTRINSICCV_MULTIVERSION_C_API(intrinsiccv_merge, merge_impls_builder, void, + const void **, const size_t *, void *, size_t, + size_t, size_t, size_t, size_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/conversions/rgb_to_rgb_api.cpp b/intrinsiccv/src/conversions/rgb_to_rgb_api.cpp index fd2f5d10b..911e7a78b 100644 --- a/intrinsiccv/src/conversions/rgb_to_rgb_api.cpp +++ b/intrinsiccv/src/conversions/rgb_to_rgb_api.cpp @@ -9,39 +9,39 @@ namespace intrinsiccv { -#define INTRINSICCV_DEFINE_C_API(name) \ +#define INTRINSICCV_DEFINE_C_API(name, partialname) \ static IFuncImpls name##_impls_builder(void) { \ IFuncImpls impls; \ - INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::name); \ - INTRINSICCV_ADD_SVE2_IMPL_IF(intrinsiccv::sve2::name); \ - INTRINSICCV_ADD_SME2_IMPL(intrinsiccv::sme2::name); \ + INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::partialname); \ + INTRINSICCV_ADD_SVE2_IMPL_IF(intrinsiccv::sve2::partialname); \ + INTRINSICCV_ADD_SME2_IMPL(intrinsiccv::sme2::partialname); \ return impls; \ } \ INTRINSICCV_MULTIVERSION_C_API( \ name, name##_impls_builder, void, const uint8_t *src, size_t src_stride, \ uint8_t *dst, size_t dst_stride, size_t width, size_t height) -INTRINSICCV_DEFINE_C_API(rgb_to_bgr_u8); -INTRINSICCV_DEFINE_C_API(rgba_to_bgra_u8); -INTRINSICCV_DEFINE_C_API(rgb_to_bgra_u8); -INTRINSICCV_DEFINE_C_API(rgb_to_rgba_u8); -INTRINSICCV_DEFINE_C_API(rgba_to_bgr_u8); -INTRINSICCV_DEFINE_C_API(rgba_to_rgb_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_rgb_to_bgr_u8, rgb_to_bgr_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_rgba_to_bgra_u8, rgba_to_bgra_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_rgb_to_bgra_u8, rgb_to_bgra_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_rgb_to_rgba_u8, rgb_to_rgba_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_rgba_to_bgr_u8, rgba_to_bgr_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_rgba_to_rgb_u8, rgba_to_rgb_u8); extern "C" { -void INTRINSICCV_C_API(rgb_to_rgb_u8)(const uint8_t *src, size_t src_stride, - uint8_t *dst, size_t dst_stride, - size_t width, size_t height) { +void intrinsiccv_rgb_to_rgb_u8(const uint8_t *src, size_t src_stride, + uint8_t *dst, size_t dst_stride, size_t width, + size_t height) { Rectangle rect{width, height}; Rows src_rows{src, src_stride, 3 /* RGB */}; Rows dst_rows{dst, dst_stride, 3 /* BGR */}; CopyRows::copy_rows(rect, src_rows, dst_rows); } -void INTRINSICCV_C_API(rgba_to_rgba_u8)(const uint8_t *src, size_t src_stride, - uint8_t *dst, size_t dst_stride, - size_t width, size_t height) { +void intrinsiccv_rgba_to_rgba_u8(const uint8_t *src, size_t src_stride, + uint8_t *dst, size_t dst_stride, size_t width, + size_t height) { Rectangle rect{width, height}; Rows src_rows{src, src_stride, 4 /* RGBA */}; Rows dst_rows{dst, dst_stride, 4 /* RGBA */}; diff --git a/intrinsiccv/src/conversions/split_api.cpp b/intrinsiccv/src/conversions/split_api.cpp index 6d76cf826..61a80ae02 100644 --- a/intrinsiccv/src/conversions/split_api.cpp +++ b/intrinsiccv/src/conversions/split_api.cpp @@ -13,7 +13,7 @@ static IFuncImpls split_impls_builder(void) { INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::split); return impls; } -INTRINSICCV_MULTIVERSION_C_API(split, split_impls_builder, void, +INTRINSICCV_MULTIVERSION_C_API(intrinsiccv_split, split_impls_builder, void, const void *src_data, size_t src_stride, void **dst_data, size_t *dst_strides, size_t width, size_t height, size_t channels, diff --git a/intrinsiccv/src/conversions/yuv_to_rgb_api.cpp b/intrinsiccv/src/conversions/yuv_to_rgb_api.cpp index 3aa2e4c4c..bf98eb5d4 100644 --- a/intrinsiccv/src/conversions/yuv_to_rgb_api.cpp +++ b/intrinsiccv/src/conversions/yuv_to_rgb_api.cpp @@ -8,21 +8,21 @@ namespace intrinsiccv { -#define INTRINSICCV_DEFINE_C_API(name) \ +#define INTRINSICCV_DEFINE_C_API(name, partialname) \ static IFuncImpls name##_impls_builder(void) { \ IFuncImpls impls; \ - INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::name); \ - INTRINSICCV_ADD_SVE2_IMPL(intrinsiccv::sve2::name); \ - INTRINSICCV_ADD_SME2_IMPL(intrinsiccv::sme2::name); \ + INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::partialname); \ + INTRINSICCV_ADD_SVE2_IMPL(intrinsiccv::sve2::partialname); \ + INTRINSICCV_ADD_SME2_IMPL(intrinsiccv::sme2::partialname); \ return impls; \ } \ INTRINSICCV_MULTIVERSION_C_API( \ name, name##_impls_builder, void, const uint8_t *, size_t, \ const uint8_t *, size_t, uint8_t *, size_t, size_t, size_t, bool) -INTRINSICCV_DEFINE_C_API(yuv_sp_to_rgb_u8); -INTRINSICCV_DEFINE_C_API(yuv_sp_to_bgr_u8); -INTRINSICCV_DEFINE_C_API(yuv_sp_to_rgba_u8); -INTRINSICCV_DEFINE_C_API(yuv_sp_to_bgra_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_yuv_sp_to_rgb_u8, yuv_sp_to_rgb_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_yuv_sp_to_bgr_u8, yuv_sp_to_bgr_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_yuv_sp_to_rgba_u8, yuv_sp_to_rgba_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_yuv_sp_to_bgra_u8, yuv_sp_to_bgra_u8); } // namespace intrinsiccv diff --git a/intrinsiccv/src/filters/gaussian_blur_api.cpp b/intrinsiccv/src/filters/gaussian_blur_api.cpp index bd693eccf..ca06e80c8 100644 --- a/intrinsiccv/src/filters/gaussian_blur_api.cpp +++ b/intrinsiccv/src/filters/gaussian_blur_api.cpp @@ -11,7 +11,7 @@ namespace intrinsiccv { extern "C" { -intrinsiccv_filter_params_t *INTRINSICCV_C_API(filter_create)( +intrinsiccv_filter_params_t *intrinsiccv_filter_create( intrinsiccv_filter_params_t *params, intrinsiccv_rectangle_t image) { auto workspace = SeparableFilterWorkspace::create( Rectangle{image}, params->channels, params->type_size); @@ -23,7 +23,7 @@ intrinsiccv_filter_params_t *INTRINSICCV_C_API(filter_create)( return params; } -void INTRINSICCV_C_API(filter_release)(intrinsiccv_filter_params_t *params) { +void intrinsiccv_filter_release(intrinsiccv_filter_params_t *params) { if (!params->workspace) { return; } @@ -44,7 +44,7 @@ static IFuncImpls gaussian_blur_3x3_u8_impls_builder(void) { INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::gaussian_blur_3x3_u8); return impls; } -INTRINSICCV_MULTIVERSION_C_API(gaussian_blur_3x3_u8, +INTRINSICCV_MULTIVERSION_C_API(intrinsiccv_gaussian_blur_3x3_u8, gaussian_blur_3x3_u8_impls_builder, void, const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, @@ -60,7 +60,7 @@ static IFuncImpls gaussian_blur_5x5_u8_impls_builder(void) { return impls; } -INTRINSICCV_MULTIVERSION_C_API(gaussian_blur_5x5_u8, +INTRINSICCV_MULTIVERSION_C_API(intrinsiccv_gaussian_blur_5x5_u8, gaussian_blur_5x5_u8_impls_builder, void, const uint8_t *src, size_t src_stride, uint8_t *dst, size_t dst_stride, size_t width, diff --git a/intrinsiccv/src/filters/sobel_api.cpp b/intrinsiccv/src/filters/sobel_api.cpp index f0c80ed7a..3047aa2b2 100644 --- a/intrinsiccv/src/filters/sobel_api.cpp +++ b/intrinsiccv/src/filters/sobel_api.cpp @@ -8,12 +8,12 @@ namespace intrinsiccv { -#define INTRINSICCV_DEFINE_C_API(name) \ +#define INTRINSICCV_DEFINE_C_API(name, partialname) \ static IFuncImpls name##_impls_builder(void) { \ IFuncImpls impls; \ - INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::name); \ - INTRINSICCV_ADD_SVE2_IMPL_IF(intrinsiccv::sve2::name); \ - INTRINSICCV_ADD_SME2_IMPL(intrinsiccv::sme2::name); \ + INTRINSICCV_ADD_NEON_IMPL(intrinsiccv::neon::partialname); \ + INTRINSICCV_ADD_SVE2_IMPL_IF(intrinsiccv::sve2::partialname); \ + INTRINSICCV_ADD_SME2_IMPL(intrinsiccv::sme2::partialname); \ return impls; \ } \ INTRINSICCV_MULTIVERSION_C_API(name, name##_impls_builder, void, \ @@ -21,7 +21,9 @@ namespace intrinsiccv { int16_t *dst, size_t dst_stride, \ size_t width, size_t height, size_t channels) -INTRINSICCV_DEFINE_C_API(sobel_3x3_horizontal_s16_u8); -INTRINSICCV_DEFINE_C_API(sobel_3x3_vertical_s16_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_sobel_3x3_horizontal_s16_u8, + sobel_3x3_horizontal_s16_u8); +INTRINSICCV_DEFINE_C_API(intrinsiccv_sobel_3x3_vertical_s16_u8, + sobel_3x3_vertical_s16_u8); } // namespace intrinsiccv diff --git a/intrinsiccv/src/morphology/morphology_api.cpp b/intrinsiccv/src/morphology/morphology_api.cpp index 086ad6a18..3d279eae0 100644 --- a/intrinsiccv/src/morphology/morphology_api.cpp +++ b/intrinsiccv/src/morphology/morphology_api.cpp @@ -52,7 +52,7 @@ void erode(const T *src, size_t src_stride, T *dst, size_t dst_stride, extern "C" { -intrinsiccv_morphology_params_t *INTRINSICCV_C_API(morphology_create)( +intrinsiccv_morphology_params_t *intrinsiccv_morphology_create( intrinsiccv_morphology_params_t *params, intrinsiccv_rectangle_t image) { auto workspace = MorphologyWorkspace::create(Rectangle{image}, Rectangle{params->kernel}, @@ -66,8 +66,7 @@ intrinsiccv_morphology_params_t *INTRINSICCV_C_API(morphology_create)( return params; } -void INTRINSICCV_C_API(morphology_release)( - intrinsiccv_morphology_params_t *params) { +void intrinsiccv_morphology_release(intrinsiccv_morphology_params_t *params) { if (!params->data) { return; } @@ -96,7 +95,7 @@ void INTRINSICCV_C_API(morphology_release)( type *dst, size_t dst_stride, size_t width, size_t height, \ const intrinsiccv_morphology_params_t *) -INTRINSICCV_DEFINE_C_API(dilate_u8, dilate, uint8_t); -INTRINSICCV_DEFINE_C_API(erode_u8, erode, uint8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_dilate_u8, dilate, uint8_t); +INTRINSICCV_DEFINE_C_API(intrinsiccv_erode_u8, erode, uint8_t); } // namespace intrinsiccv diff --git a/intrinsiccv/src/resize/resize_api.cpp b/intrinsiccv/src/resize/resize_api.cpp index 52daa26ae..f89aee754 100644 --- a/intrinsiccv/src/resize/resize_api.cpp +++ b/intrinsiccv/src/resize/resize_api.cpp @@ -15,7 +15,7 @@ static IFuncImpls resize_to_quarter_u8_impls_builder(void) { INTRINSICCV_ADD_SME2_IMPL(intrinsiccv::sme2::resize_to_quarter_u8); return impls; } -INTRINSICCV_MULTIVERSION_C_API(resize_to_quarter_u8, +INTRINSICCV_MULTIVERSION_C_API(intrinsiccv_resize_to_quarter_u8, resize_to_quarter_u8_impls_builder, void, const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height, -- GitLab