1 #ifndef OPENCV_CORE_HAL_INTERFACE_H
2 #define OPENCV_CORE_HAL_INTERFACE_H
3 
4 //! @addtogroup core_hal_interface
5 //! @{
6 
7 //! @name Return codes
8 //! @{
9 #define CV_HAL_ERROR_OK 0
10 #define CV_HAL_ERROR_NOT_IMPLEMENTED 1
11 #define CV_HAL_ERROR_UNKNOWN -1
12 //! @}
13 
14 #ifdef __cplusplus
15 #include <cstddef>
16 #else
17 #include <stddef.h>
18 #include <stdbool.h>
19 #endif
20 
21 //! @name Data types
22 //! primitive types
23 //! - schar  - signed 1 byte integer
24 //! - uchar  - unsigned 1 byte integer
25 //! - short  - signed 2 byte integer
26 //! - ushort - unsigned 2 byte integer
27 //! - int    - signed 4 byte integer
28 //! - uint   - unsigned 4 byte integer
29 //! - int64  - signed 8 byte integer
30 //! - uint64 - unsigned 8 byte integer
31 //! @{
32 #if !defined _MSC_VER && !defined __BORLANDC__
33 #  if defined __cplusplus && __cplusplus >= 201103L && !defined __APPLE__
34 #    include <cstdint>
35 #    ifdef __NEWLIB__
36         typedef unsigned int uint;
37 #    else
38         typedef std::uint32_t uint;
39 #    endif
40 #  else
41 #    include <stdint.h>
42      typedef uint32_t uint;
43 #  endif
44 #else
45    typedef unsigned uint;
46 #endif
47 
48 typedef signed char schar;
49 
50 #ifndef __IPL_H__
51    typedef unsigned char uchar;
52    typedef unsigned short ushort;
53 #endif
54 
55 #if defined _MSC_VER || defined __BORLANDC__
56    typedef __int64 int64;
57    typedef unsigned __int64 uint64;
58 #  define CV_BIG_INT(n)   n##I64
59 #  define CV_BIG_UINT(n)  n##UI64
60 #else
61    typedef int64_t int64;
62    typedef uint64_t uint64;
63 #  define CV_BIG_INT(n)   n##LL
64 #  define CV_BIG_UINT(n)  n##ULL
65 #endif
66 
67 #define CV_USRTYPE1 (void)"CV_USRTYPE1 support has been dropped in OpenCV 4.0"
68 
69 #define CV_CN_MAX     512
70 #define CV_CN_SHIFT   3
71 #define CV_DEPTH_MAX  (1 << CV_CN_SHIFT)
72 
73 #define CV_8U   0
74 #define CV_8S   1
75 #define CV_16U  2
76 #define CV_16S  3
77 #define CV_32S  4
78 #define CV_32F  5
79 #define CV_64F  6
80 #define CV_16F  7
81 
82 #define CV_MAT_DEPTH_MASK       (CV_DEPTH_MAX - 1)
83 #define CV_MAT_DEPTH(flags)     ((flags) & CV_MAT_DEPTH_MASK)
84 
85 #define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT))
86 #define CV_MAKE_TYPE CV_MAKETYPE
87 
88 #define CV_8UC1 CV_MAKETYPE(CV_8U,1)
89 #define CV_8UC2 CV_MAKETYPE(CV_8U,2)
90 #define CV_8UC3 CV_MAKETYPE(CV_8U,3)
91 #define CV_8UC4 CV_MAKETYPE(CV_8U,4)
92 #define CV_8UC(n) CV_MAKETYPE(CV_8U,(n))
93 
94 #define CV_8SC1 CV_MAKETYPE(CV_8S,1)
95 #define CV_8SC2 CV_MAKETYPE(CV_8S,2)
96 #define CV_8SC3 CV_MAKETYPE(CV_8S,3)
97 #define CV_8SC4 CV_MAKETYPE(CV_8S,4)
98 #define CV_8SC(n) CV_MAKETYPE(CV_8S,(n))
99 
100 #define CV_16UC1 CV_MAKETYPE(CV_16U,1)
101 #define CV_16UC2 CV_MAKETYPE(CV_16U,2)
102 #define CV_16UC3 CV_MAKETYPE(CV_16U,3)
103 #define CV_16UC4 CV_MAKETYPE(CV_16U,4)
104 #define CV_16UC(n) CV_MAKETYPE(CV_16U,(n))
105 
106 #define CV_16SC1 CV_MAKETYPE(CV_16S,1)
107 #define CV_16SC2 CV_MAKETYPE(CV_16S,2)
108 #define CV_16SC3 CV_MAKETYPE(CV_16S,3)
109 #define CV_16SC4 CV_MAKETYPE(CV_16S,4)
110 #define CV_16SC(n) CV_MAKETYPE(CV_16S,(n))
111 
112 #define CV_32SC1 CV_MAKETYPE(CV_32S,1)
113 #define CV_32SC2 CV_MAKETYPE(CV_32S,2)
114 #define CV_32SC3 CV_MAKETYPE(CV_32S,3)
115 #define CV_32SC4 CV_MAKETYPE(CV_32S,4)
116 #define CV_32SC(n) CV_MAKETYPE(CV_32S,(n))
117 
118 #define CV_32FC1 CV_MAKETYPE(CV_32F,1)
119 #define CV_32FC2 CV_MAKETYPE(CV_32F,2)
120 #define CV_32FC3 CV_MAKETYPE(CV_32F,3)
121 #define CV_32FC4 CV_MAKETYPE(CV_32F,4)
122 #define CV_32FC(n) CV_MAKETYPE(CV_32F,(n))
123 
124 #define CV_64FC1 CV_MAKETYPE(CV_64F,1)
125 #define CV_64FC2 CV_MAKETYPE(CV_64F,2)
126 #define CV_64FC3 CV_MAKETYPE(CV_64F,3)
127 #define CV_64FC4 CV_MAKETYPE(CV_64F,4)
128 #define CV_64FC(n) CV_MAKETYPE(CV_64F,(n))
129 
130 #define CV_16FC1 CV_MAKETYPE(CV_16F,1)
131 #define CV_16FC2 CV_MAKETYPE(CV_16F,2)
132 #define CV_16FC3 CV_MAKETYPE(CV_16F,3)
133 #define CV_16FC4 CV_MAKETYPE(CV_16F,4)
134 #define CV_16FC(n) CV_MAKETYPE(CV_16F,(n))
135 //! @}
136 
137 //! @name Comparison operation
138 //! @sa cv::CmpTypes
139 //! @{
140 #define CV_HAL_CMP_EQ 0
141 #define CV_HAL_CMP_GT 1
142 #define CV_HAL_CMP_GE 2
143 #define CV_HAL_CMP_LT 3
144 #define CV_HAL_CMP_LE 4
145 #define CV_HAL_CMP_NE 5
146 //! @}
147 
148 //! @name Border processing modes
149 //! @sa cv::BorderTypes
150 //! @{
151 #define CV_HAL_BORDER_CONSTANT 0
152 #define CV_HAL_BORDER_REPLICATE 1
153 #define CV_HAL_BORDER_REFLECT 2
154 #define CV_HAL_BORDER_WRAP 3
155 #define CV_HAL_BORDER_REFLECT_101 4
156 #define CV_HAL_BORDER_TRANSPARENT 5
157 #define CV_HAL_BORDER_ISOLATED 16
158 //! @}
159 
160 //! @name DFT flags
161 //! @{
162 #define CV_HAL_DFT_INVERSE        1
163 #define CV_HAL_DFT_SCALE          2
164 #define CV_HAL_DFT_ROWS           4
165 #define CV_HAL_DFT_COMPLEX_OUTPUT 16
166 #define CV_HAL_DFT_REAL_OUTPUT    32
167 #define CV_HAL_DFT_TWO_STAGE      64
168 #define CV_HAL_DFT_STAGE_COLS    128
169 #define CV_HAL_DFT_IS_CONTINUOUS 512
170 #define CV_HAL_DFT_IS_INPLACE 1024
171 //! @}
172 
173 //! @name SVD flags
174 //! @{
175 #define CV_HAL_SVD_NO_UV    1
176 #define CV_HAL_SVD_SHORT_UV 2
177 #define CV_HAL_SVD_MODIFY_A 4
178 #define CV_HAL_SVD_FULL_UV  8
179 //! @}
180 
181 //! @name Gemm flags
182 //! @{
183 #define CV_HAL_GEMM_1_T 1
184 #define CV_HAL_GEMM_2_T 2
185 #define CV_HAL_GEMM_3_T 4
186 //! @}
187 
188 //! @}
189 
190 #endif
191