KleidiCV Coverage Report


Directory: ./
File: kleidicv/include/kleidicv/filters/blur_and_downsample.h
Date: 2025-09-25 14:13:34
Exec Total Coverage
Lines: 2 2 100.0%
Functions: 1 1 100.0%
Branches: 4 4 100.0%

Line Branch Exec Source
1 // SPDX-FileCopyrightText: 2024 - 2025 Arm Limited and/or its affiliates <open-source-office@arm.com>
2 //
3 // SPDX-License-Identifier: Apache-2.0
4
5 #ifndef KLEIDICV_FILTERS_BLUR_AND_DOWNSAMPLE_H
6 #define KLEIDICV_FILTERS_BLUR_AND_DOWNSAMPLE_H
7
8 #include "kleidicv/config.h"
9 #include "kleidicv/kleidicv.h"
10 #include "kleidicv/types.h"
11 #include "kleidicv/workspace/border_types.h"
12
13 extern "C" {
14 // For internal use only. See instead kleidicv_blur_and_downsample_u8.
15 // Blurs and downsamples a horizontal stripe across an image. The stripe is
16 // defined by the range (y_begin, y_end].
17 KLEIDICV_API_DECLARATION(kleidicv_blur_and_downsample_stripe_u8,
18 const uint8_t *src, size_t src_stride,
19 size_t src_width, size_t src_height, uint8_t *dst,
20 size_t dst_stride, size_t y_begin, size_t y_end,
21 size_t channels,
22 kleidicv::FixedBorderType fixed_border_type,
23 kleidicv_filter_context_t *context);
24 }
25
26 namespace kleidicv {
27
28 276 inline bool blur_and_downsample_is_implemented(size_t src_width,
29 size_t src_height,
30 size_t channels) {
31
4/4
✓ Branch 0 taken 159 times.
✓ Branch 1 taken 117 times.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 156 times.
276 return (src_width >= 4 && src_height >= 4) && (channels == 1);
32 }
33
34 namespace neon {
35
36 kleidicv_error_t kleidicv_blur_and_downsample_stripe_u8(
37 const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height,
38 uint8_t *dst, size_t dst_stride, size_t y_begin, size_t y_end,
39 size_t channels, FixedBorderType fixed_border_type,
40 kleidicv_filter_context_t *context);
41
42 } // namespace neon
43
44 namespace sve2 {
45
46 kleidicv_error_t kleidicv_blur_and_downsample_stripe_u8(
47 const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height,
48 uint8_t *dst, size_t dst_stride, size_t y_begin, size_t y_end,
49 size_t channels, FixedBorderType fixed_border_type,
50 kleidicv_filter_context_t *context);
51
52 } // namespace sve2
53
54 namespace sme {
55
56 kleidicv_error_t kleidicv_blur_and_downsample_stripe_u8(
57 const uint8_t *src, size_t src_stride, size_t src_width, size_t src_height,
58 uint8_t *dst, size_t dst_stride, size_t y_begin, size_t y_end,
59 size_t channels, FixedBorderType fixed_border_type,
60 kleidicv_filter_context_t *context);
61
62 } // namespace sme
63
64 } // namespace kleidicv
65
66 #endif // KLEIDICV_FILTERS_BLUR_AND_DOWNSAMPLE_H
67