1 /* 2 * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef _HI_MPI_IVE_H_ 17 #define _HI_MPI_IVE_H_ 18 19 #include "hi_ive.h" 20 21 #ifdef __cplusplus 22 #if __cplusplus 23 extern "C" { 24 #endif 25 #endif 26 27 /***************************************************************************** 28 * Prototype : HI_MPI_IVE_DMA 29 * Description : Direct memory access (DMA): 30 * 1. Direct memory copy; 31 * 2. Copy with interval bytes; 32 * 3. Memset using 3 bytes; 33 * 4. Memset using 8 bytes; 34 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task. 35 * IVE_DATA_S *pstSrc Input source data.The input data is treated as U8C1 data. 36 * IVE_DATA_S *pstDst Output result data. 37 * IVE_DMA_CTRL_S *pstDmaCtrl DMA control parameter. 38 * HI_BOOL bInstant Flag indicating whether to generate an interrupt. 39 * If the output result blocks the next operation, 40 * set bInstant to HI_TRUE. 41 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 42 * Spec : The size of the input data ranges from 32x1 pixels to 1920x1080 pixels. 43 * The stride must be 16-byte-aligned. 44 *****************************************************************************/ 45 HI_S32 HI_MPI_IVE_DMA(IVE_HANDLE *pIveHandle, IVE_DATA_S *pstSrc, IVE_DST_DATA_S *pstDst, 46 IVE_DMA_CTRL_S *pstDmaCtrl, HI_BOOL bInstant); 47 48 /***************************************************************************** 49 * Prototype : HI_MPI_IVE_Filter 50 * Description : 5x5 template filter. 51 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 52 * IVE_SRC_IMAGE_S *pstSrc Input source data. 53 * The U8C1,SP420 and SP422 input formats are supported. 54 * IVE_DST_IMAGE_S *pstDst Output result, of same type with the input. 55 * IVE_FILTER_CTRL_S *pstFltCtrl Control parameters of filter 56 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 57 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 58 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 59 * The physical addresses of the input data and output data must be 16-byte-aligned. 60 * The stride must be 16-pixel-aligned. 61 *****************************************************************************/ 62 HI_S32 HI_MPI_IVE_Filter(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 63 IVE_FILTER_CTRL_S *pstFltCtrl, HI_BOOL bInstant); 64 65 /***************************************************************************** 66 * Prototype : HI_MPI_IVE_CSC 67 * Description : YUV2RGB\YUV2HSV\YUV2LAB\RGB2YUV color space conversion are supported. 68 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 69 * IVE_SRC_IMAGE_S *pstSrc Input source data: 70 * 1. SP420\SP422 type for YUV2RGB\YUV2HSV\YUV2LAB; 71 * 2. U8C3_PACKAGE\U8C3_PLANAR type for RGB2YUV; 72 * IVE_DST_IMAGE_S *pstDst Output result: 73 * 1. U8C3_PACKAGE\U8C3_PLANAR typed for 74 * YUV2RGB\YUV2HSV\YUV2LAB; 75 * 2. SP420\SP422 type for RGB2YUV; 76 * IVE_CSC_CTRL_S *pstCscCtrl Control parameters for CSC 77 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 78 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 79 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 80 * The physical addresses of the input data and output data must be 16-byte-aligned. 81 * The stride must be 16-pixel-aligned. 82 *****************************************************************************/ 83 HI_S32 HI_MPI_IVE_CSC(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 84 IVE_CSC_CTRL_S *pstCscCtrl, HI_BOOL bInstant); 85 86 /***************************************************************************** 87 * Prototype : HI_MPI_IVE_FILTER_AND_CSC 88 * Description : Only support YUV2RGB color space conversion. 89 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task. 90 * IVE_SRC_IMAGE_S *pstSrc Input source data.Only SP420\SP422 type 91 * are supported. 92 * IVE_DST_IMAGE_S *pstDst Output result.Only U8C3_PACKAGE\U8C3_PLANAR 93 * are supported. 94 * IVE_FILTER_AND_CSC_CTRL_S *pstFltCscCtrl Control parameters. 95 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 96 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 97 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 98 * The physical addresses of the input data and output data must be 16-byte-aligned. 99 * The stride must be 16-pixel-aligned. 100 *****************************************************************************/ 101 HI_S32 HI_MPI_IVE_FilterAndCSC(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 102 IVE_FILTER_AND_CSC_CTRL_S *pstFltCscCtrl, HI_BOOL bInstant); 103 104 /***************************************************************************** 105 * Prototype : HI_MPI_IVE_Sobel 106 * Description : SOBEL is used to extract the gradient information. 107 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 108 * IVE_SRC_IMAGE_S *pstSrc Input source data. Only the U8C1 input image 109 * is supported. 110 * IVE_DST_IMAGE_S *pstDstH The (horizontal) result of input image filtered by 111 * the input mask; 112 * IVE_DST_IMAGE_S *pstDstV The (vertical) result of input image filtered by 113 * the transposed mask; 114 * IVE_SOBEL_CTRL_S *pstSobelCtrl Control parameters 115 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 116 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 117 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 118 * The physical addresses of the input data and output data must be 16-byte-aligned. 119 * The stride must be 16-pixel-aligned. 120 *****************************************************************************/ 121 HI_S32 HI_MPI_IVE_Sobel(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDstH, 122 IVE_DST_IMAGE_S *pstDstV, IVE_SOBEL_CTRL_S *pstSobelCtrl, HI_BOOL bInstant); 123 124 /***************************************************************************** 125 * Prototype : HI_MPI_IVE_MagAndAng 126 * Description : MagAndAng is used to extract the edge information. 127 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 128 * IVE_SRC_INFO_S *pstSrc Input source data. Only the U8C1 input format 129 * is supported. 130 * IVE_MEM_INFO_S *pstDstMag Output magnitude. 131 * IVE_MEM_INFO_S *pstDstAng Output angle. 132 * If the output mode is set to magnitude only, 133 * this item can be set to null. 134 * IVE_MAG_AND_ANG_CTRL_S *pstMagAndAngCtrl Control parameters 135 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 136 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 137 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 138 * The physical addresses of the input data and output data must be 16-byte-aligned. 139 * The stride must be 16-pixel-aligned. 140 *****************************************************************************/ 141 HI_S32 HI_MPI_IVE_MagAndAng(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDstMag, 142 IVE_DST_IMAGE_S *pstDstAng, IVE_MAG_AND_ANG_CTRL_S *pstMagAndAngCtrl, HI_BOOL bInstant); 143 144 /***************************************************************************** 145 * Prototype : HI_MPI_IVE_Dilate 146 * Description : 5x5 template dilate. Only the U8C1 binary image input is supported. 147 * Or else the result is not expected. 148 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 149 * IVE_SRC_IMAGE_S *pstSrc Input binary image, which consists of 0 or 255 150 * IVE_DST_IMAGE_S *pstDst Output result. 151 * IVE_DILATE_CTRL_S *pstDilateCtrl Control parameters. 152 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 153 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 154 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 155 * The physical addresses of the input data and output data must be 16-byte-aligned. 156 * The stride must be 16-pixel-aligned. 157 * The input value, output value, and mask value must be 0 or 255. 158 *****************************************************************************/ 159 HI_S32 HI_MPI_IVE_Dilate(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 160 IVE_DILATE_CTRL_S *pstDilateCtrl, HI_BOOL bInstant); 161 162 /***************************************************************************** 163 * Prototype : HI_MPI_IVE_Erode 164 * Parameters : 5x5 template erode. Only the U8C1 binary image input is supported. 165 * Or else the result is not correct. 166 * Input : IVE_HANDLE *pIveHandle Returned handle ID of a task 167 * IVE_SRC_IMAGE_S *pstSrc Input binary image, which consists of 0 or 255 168 * IVE_DST_IMAGE_S *pstDst Output result. 169 * IVE_ERODE_CTRL_S *pstErodeCtrl Control parameters 170 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 171 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 172 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 173 * The physical addresses of the input data and output data must be 16-byte-aligned. 174 * The stride must be 16-pixel-aligned. 175 * The input value, output value, and mask value must be 0 or 255. 176 *****************************************************************************/ 177 HI_S32 HI_MPI_IVE_Erode(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 178 IVE_ERODE_CTRL_S *pstErodeCtrl, HI_BOOL bInstant); 179 180 /***************************************************************************** 181 * Prototype : HI_MPI_IVE_Thresh 182 * Description : Thresh operation to the input image. 183 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 184 * IVE_SRC_IMAGE_S *pstSrc Input source data. Only the U8C1 input format is supported. 185 * IVE_DST_IMAGE_S *pstDst Output result 186 * IVE_THRESH_CTRL_S *pstThrCtrl Control parameters 187 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 188 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 189 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 190 * The stride must be 16-pixel-aligned. 191 *****************************************************************************/ 192 HI_S32 HI_MPI_IVE_Thresh(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 193 IVE_THRESH_CTRL_S *pstThrCtrl, HI_BOOL bInstant); 194 195 /***************************************************************************** 196 * Prototype : HI_MPI_IVE_And 197 * Description : Binary images' And operation. 198 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 199 * IVE_SRC_IMAGE_S *pstSrc1 The input source1. Only U8C1 input format is supported. 200 * IVE_SRC_IMAGE_S *pstSrc2 The input source2.Only U8C1 input format is supported. 201 * IVE_DST_IMAGE_S *pstDst Output result of " src1 & src2 ". 202 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 203 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 204 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 205 * The stride must be 16-pixel-aligned. 206 * The types, widths, heights of two input sources must be the same. 207 *****************************************************************************/ 208 HI_S32 HI_MPI_IVE_And(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc1, IVE_SRC_IMAGE_S *pstSrc2, 209 IVE_DST_IMAGE_S *pstDst, HI_BOOL bInstant); 210 211 /***************************************************************************** 212 * Prototype : HI_MPI_IVE_Sub 213 * Description : Two gray images' Sub operation. 214 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 215 * IVE_SRC_IMAGE_S *pstSrc1 Minuend of the input source.Only the U8C1 input format 216 * is supported. 217 * IVE_SRC_IMAGE_S *pstSrc2 Subtrahend of the input source.Only the U8C1 input 218 * format is supported. 219 * IVE_DST_IMAGE_S *pstDst Output result of src1 minus src2 220 * IVE_SUB_CTRL_S *pstSubCtrl Control parameter 221 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 222 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 223 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 224 * The stride must be 16-pixel-aligned. 225 * The types, widths, heights of two input sources must be the same. 226 *****************************************************************************/ 227 HI_S32 HI_MPI_IVE_Sub(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc1, IVE_SRC_IMAGE_S *pstSrc2, 228 IVE_DST_IMAGE_S *pstDst, IVE_SUB_CTRL_S *pstSubCtrl, HI_BOOL bInstant); 229 230 /***************************************************************************** 231 * Prototype : HI_MPI_IVE_Or 232 * Description : Two binary images' Or operation. 233 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 234 * IVE_SRC_IMAGE_S *pstSrc1 Input source1. Only the U8C1 input format is supported. 235 * IVE_SRC_IMAGE_S *pstSrc2 Input source2. Only the U8C1 input format is supported. 236 * IVE_DST_IMAGE_S *pstDst Output result src1 or src2 237 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 238 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 239 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 240 * The stride must be 16-pixel-aligned. 241 * The types, widths, heights of two input sources must be the same. 242 *****************************************************************************/ 243 HI_S32 HI_MPI_IVE_Or(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc1, IVE_SRC_IMAGE_S *pstSrc2, 244 IVE_DST_IMAGE_S *pstDst, HI_BOOL bInstant); 245 246 /***************************************************************************** 247 * Prototype : HI_MPI_IVE_INTEG 248 * Description : Calculate the input gray image's integral image. 249 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 250 * IVE_SRC_IMAGE_S *pstSrc Input source data.Only the U8C1 input format 251 * is supported. 252 * IVE_DST_IMAGE_S *pstDst Output result.Can be U32C1 or U64C1, relied on the 253 * control parameter. 254 * IVE_INTEG_CTRL_S *pstIntegCtrl Integ Control 255 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 256 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 257 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 258 * The physical addresses of the input data and output data must be 16-byte-aligned. 259 * The stride must be 16-pixel-aligned. 260 * The pixel can be 32bit or 64 bit relied on the control parameter. 261 *****************************************************************************/ 262 HI_S32 HI_MPI_IVE_Integ(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 263 IVE_INTEG_CTRL_S *pstIntegCtrl, HI_BOOL bInstant); 264 265 /***************************************************************************** 266 * Prototype : HI_MPI_IVE_Hist 267 * Description : Calculate the input gray image's histogram. 268 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 269 * IVE_SRC_IMAGE_S *pstSrc Input source data. Only the U8C1 input format 270 * is supported. 271 * IVE_DST_MEM_INFO_S *pstDst Output result. 272 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 273 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 274 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 275 * The physical addresses of the input data and output data must be 16-byte-aligned. 276 * The stride must be 16-pixel-aligned. 277 *****************************************************************************/ 278 HI_S32 HI_MPI_IVE_Hist(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_MEM_INFO_S *pstDst, 279 HI_BOOL bInstant); 280 281 /***************************************************************************** 282 * Prototype : HI_MPI_IVE_Thresh_S16 283 * Description : S16 image's THRESH operation. 284 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 285 * IVE_SRC_IMAGE_S *pstSrc Input source data.Only the S16 input format 286 * is supported. 287 * IVE_DST_IMAGE_S *pstDst Output result. 288 * IVE_THRESH_S16_CTRL_S *pstThrS16Ctrl Control parameters 289 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 290 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 291 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 292 * The physical addresses of the input data must be 2-byte-aligned. 293 * The stride must be 16-pixel-aligned. 294 *****************************************************************************/ 295 HI_S32 HI_MPI_IVE_Thresh_S16(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 296 IVE_THRESH_S16_CTRL_S *pstThrS16Ctrl, HI_BOOL bInstant); 297 298 /***************************************************************************** 299 * Prototype : HI_MPI_IVE_Thresh_U16 300 * Description : U16 image's THRESH operation. 301 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 302 * IVE_SRC_IMAGE_S *pstSrc Input source data. Only the U16 input 303 * format is supported. 304 * IVE_DST_IMAGE_S *pstDst Output result 305 * IVE_THRESH_U16_CTRL_S *pstThrU16Ctrl Control parameters 306 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 307 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 308 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 309 * The physical addresses of the input data must be 2-byte-aligned. 310 * The stride must be 16-pixel-aligned. 311 *****************************************************************************/ 312 HI_S32 HI_MPI_IVE_Thresh_U16(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 313 IVE_THRESH_U16_CTRL_S *pstThrU16Ctrl, HI_BOOL bInstant); 314 315 /***************************************************************************** 316 * Prototype : HI_MPI_IVE_16BitTo8Bit 317 * Description : Scale the input 16bit data to the output 8bit data. 318 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 319 * IVE_SRC_IMAGE_S *pstSrc Input source data.Only U16C1\S16C1 320 * input is supported. 321 * IVE_DST_IMAGE_S *pstDst Output result 322 * IVE_16BITTO8BIT_CTRL_S *pst16BitTo8BitCtrl control parameter 323 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 324 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 325 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 326 * The physical addresses of the input data must be 2-byte-aligned. 327 * The stride must be 16-pixel-aligned. 328 *****************************************************************************/ 329 HI_S32 HI_MPI_IVE_16BitTo8Bit(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 330 IVE_16BIT_TO_8BIT_CTRL_S *pst16BitTo8BitCtrl, HI_BOOL bInstant); 331 332 /***************************************************************************** 333 * Prototype : HI_MPI_IVE_OrdStatFilter 334 * Description : Order Statistic Filter. It can be used as median\max\min value filter. 335 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 336 * IVE_SRC_IMAGE_S *pstSrc Input source data. Only U8C1 input 337 * is supported 338 * IVE_DST_IMAGE_S *pstDst Output result 339 * IVE_ORD_STAT_FILTER_CTRL_S *pstOrdStatFltCtrl Control parameter 340 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 341 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 342 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 343 * The physical addresses of the input data and output data must be 16-byte-aligned. 344 * The stride must be 16-pixel-aligned. 345 *****************************************************************************/ 346 HI_S32 HI_MPI_IVE_OrdStatFilter(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 347 IVE_ORD_STAT_FILTER_CTRL_S *pstOrdStatFltCtrl, HI_BOOL bInstant); 348 349 /***************************************************************************** 350 * Prototype : HI_MPI_IVE_Map 351 * Description : Map a image to another through a lookup table. 352 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 353 * IVE_SRC_IMAGE_S *pstSrc Input source. Only the U8C1 input format is supported. 354 * IVE_SRC_MEM_INFO_S *pstMap Input lookup table. Must be an U8 array of size 256. 355 * IVE_DST_IMAGE_S *pstDst Output result. 356 * IVE_MAP_CTRL_S *pstMapCtrl Map control parameter. 357 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 358 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 359 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 360 * The physical addresses of the input data and output data must be 16-byte-aligned. 361 * The stride must be 16-pixel-aligned. 362 *****************************************************************************/ 363 HI_S32 HI_MPI_IVE_Map(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_SRC_MEM_INFO_S *pstMap, 364 IVE_DST_IMAGE_S *pstDst, IVE_MAP_CTRL_S *pstMapCtrl, HI_BOOL bInstant); 365 366 /***************************************************************************** 367 * Prototype : HI_MPI_IVE_EqualizeHist 368 * Description : Enhance the input image's contrast through histogram equalization. 369 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 370 * IVE_SRC_IMAGE_S *pstSrc Input source.Only U8C1 input format 371 * is supported. 372 * IVE_DST_IMAGE_S *pstDst Output result. 373 * IVE_EQUALIZEHIST_CTRL_S *pstEqualizeHistCtrl EqualizeHist control parameter. 374 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 375 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 376 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 377 * The physical addresses of map data must be 16-byte-aligned. 378 * The stride must be 16-pixel-aligned. 379 *****************************************************************************/ 380 HI_S32 HI_MPI_IVE_EqualizeHist(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 381 IVE_EQUALIZE_HIST_CTRL_S *pstEqualizeHistCtrl, HI_BOOL bInstant); 382 383 /***************************************************************************** 384 * Prototype : HI_MPI_IVE_Add 385 * Description : Two gray images' Add operation. 386 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 387 * IVE_SRC_IMAGE_S *pstSrc1 Augend of the input source.Only the U8C1 input 388 * format is supported. 389 * IVE_SRC_IMAGE_S *pstSrc2 Addend of the input source.Only the U8C1 input 390 * format is supported. 391 * IVE_DST_IMAGE_S *pstDst Output result of src1 plus src2 392 * IVE_ADD_CTRL_S *pstAddCtrl Control parameter 393 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 394 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 395 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 396 * The stride must be 16-pixel-aligned. 397 * The types, widths, heights of two input sources must be the same. 398 *****************************************************************************/ 399 HI_S32 HI_MPI_IVE_Add(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc1, IVE_SRC_IMAGE_S *pstSrc2, 400 IVE_DST_IMAGE_S *pstDst, IVE_ADD_CTRL_S *pstAddCtrl, HI_BOOL bInstant); 401 402 /***************************************************************************** 403 * Prototype : HI_MPI_IVE_Xor 404 * Description : Two binary images' Xor operation. 405 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 406 * IVE_SRC_IMAGE_S *pstSrc1 The input source1.Only the U8C1 input format is supported. 407 * IVE_SRC_IMAGE_S *pstSrc2 The input source2. 408 * IVE_DST_IMAGE_S *pstDst Output result 409 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 410 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 411 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 412 * The stride must be 16-pixel-aligned. 413 * The types, widths, heights of two input sources must be the same. 414 *****************************************************************************/ 415 HI_S32 HI_MPI_IVE_Xor(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc1, IVE_SRC_IMAGE_S *pstSrc2, 416 IVE_DST_IMAGE_S *pstDst, HI_BOOL bInstant); 417 418 /***************************************************************************** 419 * Prototype : HI_MPI_IVE_NCC 420 * Description : Calculate two gray images' NCC (Normalized Cross Correlation). 421 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 422 * IVE_SRC_IMAGE_S *pstSrc1 Input source1. Only the U8C1 input format is supported. 423 * IVE_SRC_IMAGE_S *pstSrc2 Input source2. Must be of the same type, size of source1. 424 * IVE_DST_MEM_INFO_S *pstDst Output result 425 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 426 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 427 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 428 * The physical addresses of output data must be 16-byte-aligned. 429 * The stride must be 16-pixel-aligned. 430 *****************************************************************************/ 431 HI_S32 HI_MPI_IVE_NCC(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc1, IVE_SRC_IMAGE_S *pstSrc2, 432 IVE_DST_MEM_INFO_S *pstDst, HI_BOOL bInstant); 433 434 /***************************************************************************** 435 * Prototype : HI_MPI_IVE_CCL 436 * Description : Connected Component Labeling. Only 8-Connected method is supported. 437 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 438 * IVE_IMAGE_S *pstSrcDst Input source 439 * IVE_MEM_INFO_S *pstBlob Output result of detected region; 440 * IVE_CCL_CTRL_S *pstCclCtrl CCL control parameter 441 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 442 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 443 * Spec : The size of the input data ranges from 64x64 pixels to 720x640 pixels. 444 * The physical addresses of the input data and output data must be 16-byte-aligned. 445 * The stride must be 16-pixel-aligned. 446 *****************************************************************************/ 447 HI_S32 HI_MPI_IVE_CCL(IVE_HANDLE *pIveHandle, IVE_IMAGE_S *pstSrcDst, IVE_DST_MEM_INFO_S *pstBlob, 448 IVE_CCL_CTRL_S *pstCclCtrl, HI_BOOL bInstant); 449 450 /***************************************************************************** 451 * Prototype : HI_MPI_IVE_GMM 452 * Description : Separate foreground and background using GMM(Gaussian Mixture Model) method; 453 * Gray or RGB GMM are supported. 454 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 455 * IVE_SRC_IMAGE_S *pstSrc Input source. Only support U8C1 or U8C3_PACKAGE input. 456 * IVE_DST_IMAGE_S *pstFg Output foreground (Binary) image. 457 * IVE_DST_IMAGE_S *pstBg Output background image. Of the sampe type of pstSrc. 458 * IVE_MEM_INFO_S *pstModel Model data. 459 * IVE_GMM_CTRL_S *pstGmmCtrl Control parameter. 460 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 461 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 462 * Spec : The size of the input data ranges from 64x64 pixels to 720x576 pixels. 463 * The physical addresses of the input data and output data must be 16-byte-aligned. 464 * The stride must be 16-pixel-aligned. 465 *****************************************************************************/ 466 HI_S32 HI_MPI_IVE_GMM(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstFg, 467 IVE_DST_IMAGE_S *pstBg, IVE_MEM_INFO_S *pstModel, IVE_GMM_CTRL_S *pstGmmCtrl, HI_BOOL bInstant); 468 469 /***************************************************************************** 470 * Prototype : HI_MPI_IVE_GMM2 471 * Description : Separate foreground and background using GMM(Gaussian Mixture Model) method; 472 * Gray or RGB GMM are supported. 473 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 474 * IVE_SRC_IMAGE_S *pstSrc Only U8C1 or U8C3_PACKAGE input are supported. 475 * IVE_SRC_IMAGE_S *pstFactor U16C1 input, low-8bits is sensitivity factor, 476 * and high-8bits is life update factor. 477 * IVE_DST_IMAGE_S *pstFg Output foreground (Binary) image. 478 * IVE_DST_IMAGE_S *pstBg Output background image. With same type of pstSrc. 479 * IVE_DST_IMAGE_S *pstMatchModelInfo Output U8C1 match model info image. 480 * Low-1bit is match flag,and high-7bits is 481 * max freq index. 482 * IVE_MEM_INFO_S *pstModel Model data. 483 * IVE_GMM2_CTRL_S *pstGmm2Ctrl Control parameter. 484 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 485 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 486 * Spec : The size of the input data ranges from 64x64 pixels to 1280x720 pixels. 487 * The physical addresses of the input data and output data must be 16-byte-aligned. 488 * The stride must be 16-pixel-aligned. 489 *****************************************************************************/ 490 HI_S32 HI_MPI_IVE_GMM2(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_SRC_IMAGE_S *pstFactor, 491 IVE_DST_IMAGE_S *pstFg, IVE_DST_IMAGE_S *pstBg, IVE_DST_IMAGE_S *pstMatchModelInfo, IVE_MEM_INFO_S *pstModel, 492 IVE_GMM2_CTRL_S *pstGmm2Ctrl, HI_BOOL bInstant); 493 494 /***************************************************************************** 495 * Prototype : HI_MPI_IVE_CannyHysEdge 496 * Description : The first part of canny Edge detection. Including step: gradient calculation, 497 * magnitude and angle calculation, hysteresis threshold, NMS(Non-Maximum Suppression) 498 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 499 * IVE_SRC_IMAGE_S *pstSrc Input source. Only the U8C1 input 500 * format is supported 501 * IVE_DST_IMAGE_S *pstEdge Output result. 502 * IVE_DST_MEM_INFO_S *pstStack OutPut stack for CannyEdge 503 * IVE_CANNY_HYS_EDGE_CTRL_S *pstCannyHysEdgeCtrl Control parameter. 504 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 505 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 506 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 507 * The physical addresses of the input data and output data must be 16-byte-aligned. . 508 * The stride must be 16-pixel-aligned. 509 *****************************************************************************/ 510 HI_S32 HI_MPI_IVE_CannyHysEdge(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstEdge, 511 IVE_DST_MEM_INFO_S *pstStack, IVE_CANNY_HYS_EDGE_CTRL_S *pstCannyHysEdgeCtrl, HI_BOOL bInstant); 512 513 /***************************************************************************** 514 * Prototype : HI_MPI_IVE_CannyEdge 515 * Description : The second part of canny Edge detection: trace strong edge by weak edge. 516 * Parameters : IVE_IMAGE_S *pstEdge Input and Output source. Only the U8C1 format is supported 517 * IVE_MEM_INFO_S *pstStack stack for CannyEdge 518 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 519 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 520 * The physical addresses of the input data and output data must be 16-byte-aligned. 521 * The stride must be 16-pixel-aligned. 522 *****************************************************************************/ 523 HI_S32 HI_MPI_IVE_CannyEdge(IVE_IMAGE_S *pstEdge, IVE_MEM_INFO_S *pstStack); 524 525 /***************************************************************************** 526 * Prototype : HI_MPI_IVE_LBP 527 * Description : LBP calculation using the original method and a extensional method. 528 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 529 * IVE_SRC_IMAGE_S *pstSrc Input source.Only the U8C1 input format is supported. 530 * IVE_DST_IMAGE_S *pstDst Output result 531 * IVE_LBP_CTRL_S *pstLbpCtrl Control parameter 532 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 533 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 534 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 535 * The physical addresses of the input data and output data must be 16-byte-aligned. 536 * The stride must be 16-pixel-aligned. 537 *****************************************************************************/ 538 HI_S32 HI_MPI_IVE_LBP(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDst, 539 IVE_LBP_CTRL_S *pstLbpCtrl, HI_BOOL bInstant); 540 541 /***************************************************************************** 542 * Prototype : HI_MPI_IVE_NormGrad 543 * Description : Gradient calculation and the output is normalized to S8. 544 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 545 * IVE_SRC_IMAGE_S *pstSrc Input source data 546 * IVE_DST_IMAGE_S *pstDstH The (horizontal) result of input image filtered 547 * by the input mask 548 * IVE_DST_IMAGE_S *pstDstV The (vertical) result of input image filtered 549 * by the transposed mask 550 * IVE_DST_IMAGE_S *pstDstHV Output the horizontal and vertical component 551 * in single image in package format. 552 * IVE_NORM_GRAD_CTRL_S *pstNormGradCtrl Control parameter 553 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 554 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 555 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1024 pixels. 556 * The physical addresses of the input data and output data must be 16-byte-aligned. 557 * The stride must be 16-pixel-aligned. 558 *****************************************************************************/ 559 HI_S32 HI_MPI_IVE_NormGrad(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_DST_IMAGE_S *pstDstH, 560 IVE_DST_IMAGE_S *pstDstV, IVE_DST_IMAGE_S *pstDstHV, IVE_NORM_GRAD_CTRL_S *pstNormGradCtrl, HI_BOOL bInstant); 561 562 /***************************************************************************** 563 * Prototype : HI_MPI_IVE_LKOpticalFlowPyr 564 * Description : Calculate LK Optical Flow using multi-layer of the pyramid-images. 565 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 566 * IVE_SRC_IMAGE_S astSrcPrevPyr Prev-frame's pyramid. 567 * Must be U8C1 images. 568 * IVE_SRC_IMAGE_S astSrcNextPyr Next-frame's pyramid. Same size and 569 * type with astSrcPrePyr. 570 * IVE_SRC_MEM_INFO_S *pstPrevPts Intresting points on astSrcPrePyr[0]. 571 * IVE_MEM_INFO_S *pstNextPts Output points. When bUseInitFlow is 572 * true, must have the same size of 573 * pstPrevPts as input. 574 * IVE_LK_OPTICAL_FLOW_PYR_CTRL_S *pstLkOptiFlowCtrl Control parameters. 575 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 576 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 577 * Spec : The size of the input data ranges from 64x64 pixels to 1280x720 pixels. 578 * The physical addresses of the input data and output data must be 16-byte-aligned. 579 * The stride must be 16-pixel-aligned. 580 ****************************************************************************/ 581 HI_S32 HI_MPI_IVE_LKOpticalFlowPyr(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S astSrcPrevPyr[], 582 IVE_SRC_IMAGE_S astSrcNextPyr[], IVE_SRC_MEM_INFO_S *pstPrevPts, IVE_MEM_INFO_S *pstNextPts, 583 IVE_DST_MEM_INFO_S *pstStatus, IVE_DST_MEM_INFO_S *pstErr, IVE_LK_OPTICAL_FLOW_PYR_CTRL_S *pstLkOptiFlowPyrCtrl, 584 HI_BOOL bInstant); 585 586 /***************************************************************************** 587 * Prototype : HI_MPI_IVE_STCandiCorner 588 * Description : The first part of corners detection using Shi-Tomasi-like method: calculate 589 * candidate corners. 590 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 591 * IVE_SRC_IMAGE_S *pstSrc Input source data 592 * IVE_DST_IMAGE_S *pstCandiCorner Output result of eig 593 * IVE_ST_CANDI_CORNER_CTRL_S *pstStCandiCornerCtrl Control parameter 594 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 595 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 596 * Spec : The size of the input data ranges from 64x64 pixels to 720x576 pixels. 597 * The physical addresses of the input data and output data must be 16-byte-aligned. 598 * The stride must be 16-pixel-aligned. 599 *****************************************************************************/ 600 HI_S32 HI_MPI_IVE_STCandiCorner(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, 601 IVE_DST_IMAGE_S *pstCandiCorner, IVE_ST_CANDI_CORNER_CTRL_S *pstStCandiCornerCtrl, HI_BOOL bInstant); 602 603 /***************************************************************************** 604 * Prototype : HI_MPI_IVE_STCorner 605 * Description : The second part of corners detection using Shi-Tomasi-like method: 606 * select corners by certain rules. 607 * IVE_SRC_IMAGE_S *pstCandiCorner Input source data 608 * IVE_DST_MEM_INFO_S *pstCorner Output result of Corner 609 * IVE_ST_CORNER_CTRL_S *pstStCornerCtrl Control parameter 610 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 611 * Spec : The size of the input data ranges from 64x64 pixels to 720x576 pixels. 612 * The physical addresses of the input data and output data must be 16-byte-aligned. 613 * The stride must be 16-pixel-aligned. 614 *****************************************************************************/ 615 HI_S32 HI_MPI_IVE_STCorner(IVE_SRC_IMAGE_S *pstCandiCorner, IVE_DST_MEM_INFO_S *pstCorner, 616 IVE_ST_CORNER_CTRL_S *pstStCornerCtrl); 617 618 /***************************************************************************** 619 * Prototype : HI_MPI_IVE_GradFg 620 * Description : 621 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 622 * IVE_SRC_IMAGE_S *pstBgDiffFg Background subtraction foreground image 623 * IVE_SRC_IMAGE_S *pstCurGrad Current gradient image, both horizontally and vertically 624 * graded in accordance with [xyxyxy ...] format 625 * IVE_SRC_IMAGE_S *pstBgGrad Background gradient image 626 * IVE_DST_IMAGE_S *pstGradFg Gradient foreground image 627 * IVE_GRAD_FG_CTRL_S *pstGradFgCtrl Gradient calculation parameters 628 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 629 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 630 * Spec : None 631 *****************************************************************************/ 632 HI_S32 HI_MPI_IVE_GradFg(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstBgDiffFg, IVE_SRC_IMAGE_S *pstCurGrad, 633 IVE_SRC_IMAGE_S *pstBgGrad, IVE_DST_IMAGE_S *pstGradFg, IVE_GRAD_FG_CTRL_S *pstGradFgCtrl, HI_BOOL bInstant); 634 635 /***************************************************************************** 636 * Prototype : HI_MPI_IVE_MatchBgModel 637 * Description : 638 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 639 * IVE_SRC_IMAGE_S *pstCurImg Current grayscale image 640 * IVE_DATA_S *pstBgModel Background model data 641 * IVE_IMAGE_S *pstFgFlag Foreground status image 642 * IVE_DST_IMAGE_S *pstBgDiffFg Foreground image obtained by background 643 * matching, the background pixel value 644 * is 0, the foreground pixel value is 645 * the gray difference value 646 * IVE_DST_IMAGE_S *pstFrmDiffFg Foreground image obtained by interframe 647 * difference, the background pixel value 648 * is 0, the foreground pixel value is 649 * the gray difference value 650 * IVE_DST_MEM_INFO_S *pstStatData Result status data 651 * IVE_MATCH_BG_MODEL_CTRL_S *pstMatchBgModelCtrl Background matching parameters 652 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 653 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 654 * Spec : None 655 *****************************************************************************/ 656 HI_S32 HI_MPI_IVE_MatchBgModel(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstCurImg, IVE_DATA_S *pstBgModel, 657 IVE_IMAGE_S *pstFgFlag, IVE_DST_IMAGE_S *pstBgDiffFg, IVE_DST_IMAGE_S *pstFrmDiffFg, 658 IVE_DST_MEM_INFO_S *pstStatData, IVE_MATCH_BG_MODEL_CTRL_S *pstMatchBgModelCtrl, HI_BOOL bInstant); 659 660 /***************************************************************************** 661 * Prototype : HI_MPI_IVE_UpdateBgModel 662 * Description : 663 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 664 * IVE_DATA_S *pstBgModel Background model data 665 * IVE_IMAGE_S *pstFgFlag Foreground status image 666 * IVE_DST_IMAGE_S *pstBgImg Background grayscale image 667 * IVE_DST_IMAGE_S *pstChgStaImg Change state life image, 668 * for still detection 669 * IVE_DST_IMAGE_S *pstChgStaFg Change state grayscale image, 670 * for still detection 671 * IVE_DST_IMAGE_S *pstChgStaLife Change state foreground image, 672 * for still detection 673 * IVE_DST_MEM_INFO_S *pstStatData result status data 674 * IVE_UPDATE_BG_MODEL_CTRL_S *pstUpdateBgModelCtrl Background update parameters 675 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 676 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 677 * Spec : None 678 *****************************************************************************/ 679 HI_S32 HI_MPI_IVE_UpdateBgModel(IVE_HANDLE *pIveHandle, IVE_DATA_S *pstBgModel, IVE_IMAGE_S *pstFgFlag, 680 IVE_DST_IMAGE_S *pstBgImg, IVE_DST_IMAGE_S *pstChgStaImg, IVE_DST_IMAGE_S *pstChgStaFg, 681 IVE_DST_IMAGE_S *pstChgStaLife, IVE_DST_MEM_INFO_S *pstStatData, IVE_UPDATE_BG_MODEL_CTRL_S *pstUpdateBgModelCtrl, 682 HI_BOOL bInstant); 683 684 /***************************************************************************** 685 * Prototype : HI_MPI_IVE_ANN_MLP_LoadModel 686 * Description : Load ANN_MLP model data from ".bin" file. 687 * Parameters : HI_CHAR *pchFileName ANN_MLP model file name, must be ".bin" file. 688 * IVE_ANN_MLP_MODEL_S *pstAnnMlpModel ANN_MLP model data. 689 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 690 * Spec : None 691 *****************************************************************************/ 692 HI_S32 HI_MPI_IVE_ANN_MLP_LoadModel(const HI_CHAR *pchFileName, IVE_ANN_MLP_MODEL_S *pstAnnMlpModel); 693 694 /***************************************************************************** 695 * Prototype : HI_MPI_IVE_ANN_MLP_UnloadModel 696 * Description : Unload ANN_MLP model data. 697 * Parameters : IVE_ANN_MLP_MODEL_S *pstAnnMlpModel ANN_MLP model data. 698 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 699 * Spec : None 700 *****************************************************************************/ 701 HI_VOID HI_MPI_IVE_ANN_MLP_UnloadModel(IVE_ANN_MLP_MODEL_S *pstAnnMlpModel); 702 703 /***************************************************************************** 704 * Prototype : HI_MPI_IVE_ANN_MLP_Predict 705 * Description : 706 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 707 * IVE_SRC_DATA_S *pstSrc Input samples 708 * IVE_SRC_MEM_INFO_S *pstActivFuncTable Look-up talbe for active function 709 * IVE_ANN_MLP_MODEL_S *pstAnnMlpModel ANN_MLP model 710 * IVE_DST_DATA_S *pstDst Output layers of every intput sample 711 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 712 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 713 * Spec : None 714 *****************************************************************************/ 715 HI_S32 HI_MPI_IVE_ANN_MLP_Predict(IVE_HANDLE *pIveHandle, IVE_SRC_DATA_S *pstSrc, 716 IVE_LOOK_UP_TABLE_S *pstActivFuncTab, IVE_ANN_MLP_MODEL_S *pstAnnMlpModel, IVE_DST_DATA_S *pstDst, 717 HI_BOOL bInstant); 718 719 /***************************************************************************** 720 * Prototype : HI_MPI_IVE_SVM_LoadModel 721 * Description : Load SVM model data from ".bin" file. 722 * Parameters : HI_CHAR *pchFileName SVM model file name, must be ".bin" file. 723 * IVE_SVM_MODEL_S *pstSvmModel SVM model data. 724 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 725 * Spec : None 726 *****************************************************************************/ 727 HI_S32 HI_MPI_IVE_SVM_LoadModel(const HI_CHAR *pchFileName, IVE_SVM_MODEL_S *pstSvmModel); 728 729 /***************************************************************************** 730 * Prototype : HI_MPI_IVE_SVM_UnloadModel 731 * Description : Unload SVM model data. 732 * Parameters : IVE_SVM_MODEL_S *pstSvmModel SVM model data. 733 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 734 * Spec : None 735 *****************************************************************************/ 736 HI_VOID HI_MPI_IVE_SVM_UnloadModel(IVE_SVM_MODEL_S *pstSvmModel); 737 738 /***************************************************************************** 739 * Prototype : HI_MPI_IVE_SVM_Predict 740 * Description : 741 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 742 * IVE_SRC_DATA_S *pstSrc Input sample 743 * IVE_SRC_MEM_INFO_S *pstKernelTable Look-up talbe for active function 744 * IVE_SVM_MODEL_S *pstSvmModel SVM model 745 * IVE_SRC_DATA_S *pstDstVote Output Votes' array of each class 746 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 747 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 748 * Spec : None 749 *****************************************************************************/ 750 HI_S32 HI_MPI_IVE_SVM_Predict(IVE_HANDLE *pIveHandle, IVE_SRC_DATA_S *pstSrc, IVE_LOOK_UP_TABLE_S *pstKernelTab, 751 IVE_SVM_MODEL_S *pstSvmModel, IVE_DST_DATA_S *pstDstVote, HI_BOOL bInstant); 752 753 /***************************************************************************** 754 * Prototype : HI_MPI_IVE_SAD 755 * Description : Sum of absolute differences. 756 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 757 * IVE_SRC_IMAGE_S *pstSrc1 The input source1.Only the U8C1 input format is supported. 758 * IVE_SRC_IMAGE_S *pstSrc2 The input source2.Only the U8C1 input format is supported. 759 * IVE_DST_IMAGE_S *pstSad Output result of sad value.Only the U8C1/U16C1 format is 760 * supported. 761 * IVE_DST_IMAGE_S *pstThr Output result of thresh.Only the U8C1 format is supported. 762 * IVE_SAD_CTRL_S *pstSadCtrl Control parameter 763 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 764 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 765 * Spec : The size of the input data ranges from 64x64 pixels to 1920x1080 pixels. 766 * The stride must be 16-pixel-aligned. 767 * The types, widths, heights of two input sources must be the same. 768 *****************************************************************************/ 769 HI_S32 HI_MPI_IVE_SAD(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc1, IVE_SRC_IMAGE_S *pstSrc2, 770 IVE_DST_IMAGE_S *pstSad, IVE_DST_IMAGE_S *pstThr, IVE_SAD_CTRL_S *pstSadCtrl, HI_BOOL bInstant); 771 772 /***************************************************************************** 773 * Prototype : HI_MPI_IVE_Resize 774 * Description : Resize. 775 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 776 * IVE_SRC_IMAGE_S astSrc[] The input source.Only the U8C1/U8C3_PLANAR input format 777 * is supported. 778 * IVE_DST_IMAGE_S astDst[] Output result.Only the U8C1/U8C3_PLANAR format is 779 * supported. 780 * IVE_RESIZE_CTRL_S *pstResizeCtrl Control parameter 781 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 782 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 783 * Spec : The size of the input data ranges from 32x16 pixels to 1920x1080 pixels. 784 * The stride must be 16-pixel-aligned. 785 *****************************************************************************/ 786 HI_S32 HI_MPI_IVE_Resize(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S astSrc[], IVE_DST_IMAGE_S astDst[], 787 IVE_RESIZE_CTRL_S *pstResizeCtrl, HI_BOOL bInstant); 788 789 /***************************************************************************** 790 * Prototype : HI_MPI_IVE_CNN_LoadModel 791 * Description : Load CNN model data from ".bin" file. 792 * Parameters : HI_CHAR *pchFileName CNN model file name, must be ".bin" file. 793 * IVE_CNN_MODEL_S *pstCnnModel CNN model data. 794 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 795 * Spec : None 796 *****************************************************************************/ 797 HI_S32 HI_MPI_IVE_CNN_LoadModel(const HI_CHAR *pchFileName, IVE_CNN_MODEL_S *pstCnnModel); 798 799 /***************************************************************************** 800 * Prototype : HI_MPI_IVE_CNN_UnloadModel 801 * Description : Unload CNN model data and release memory. 802 * Parameters : IVE_CNN_MODEL_S *pstCnnModel CNN model data. 803 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 804 * Spec : None 805 *****************************************************************************/ 806 HI_VOID HI_MPI_IVE_CNN_UnloadModel(IVE_CNN_MODEL_S *pstCnnModel); 807 808 /***************************************************************************** 809 * Prototype : HI_MPI_IVE_CNN_Predict 810 * Description : Perform CNN prediction on input sample(s), and output responses for 811 * corresponding sample(s) 812 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 813 * IVE_SRC_IMAGE_S astSrc[] Input images array. Only the U8C1 and U8C3_PLANAR input 814 * are supported 815 * IVE_CNN_MODEL_S *pstCnnModel CNN model data 816 * IVE_CNN_CTRL_S *pstCnnCtrl CNN control parameter 817 * IVE_DST_DATA_S *pstDst Output vectors of CNN_Predict 818 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 819 * Return Value : HI_SUCCESS: Success; Error codes: Failure. 820 * Spec : The stride must be 16-pixel-aligned. 821 * The types, widths, heights and strides of input images must be the same. 822 *****************************************************************************/ 823 HI_S32 HI_MPI_IVE_CNN_Predict(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S astSrc[], IVE_CNN_MODEL_S *pstCnnModel, 824 IVE_DST_DATA_S *pstDst, IVE_CNN_CTRL_S *pstCnnCtrl, HI_BOOL bInstant); 825 826 /***************************************************************************** 827 * Prototype : HI_MPI_IVE_CNN_GetResult 828 * Description : Calculate classification and confidence with CNN output by softmax regression. 829 * Parameters : IVE_SRC_DATA_S *pstSrc The result of CNN_Predict output. 830 * IVE_DST_MEM_INFO_S *pstDst The prediction about classification label 831 * index and confidence. 832 * IVE_CNN_MODEL_S *pstpstCnnModel CNN model data 833 * IVE_CNN_CTRL_S *pstCnnCtrl CNN control parameter 834 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 835 * Spec : None 836 *****************************************************************************/ 837 HI_S32 HI_MPI_IVE_CNN_GetResult(IVE_SRC_DATA_S *pstSrc, IVE_DST_MEM_INFO_S *pstDst, 838 IVE_CNN_MODEL_S *pstCnnModel, IVE_CNN_CTRL_S *pstCnnCtrl); 839 840 /***************************************************************************** 841 * Prototype : HI_MPI_IVE_PerspTrans 842 * Description : Perspective transform 843 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task. 844 * IVE_SRC_IMAGE_S *pstSrc The input source.Only the U8C1/YUVSP420 input 845 * format is supported. 846 * IVE_RECT_U32_S astRoi[] Roi array. 847 * IVE_SRC_MEM_INFO_S astPointPair[] Point pair array. 848 * IVE_DST_IMAGE_S astDst[] Output result.Only the U8C1/YUVSP420/ 849 * U8C3_PACKAGE format is supported. 850 * IVE_PERSP_TRANS_CTRL_S *pstPerspTransCtrl PerspTrans control parameter. 851 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 852 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 853 * Spec : The stride must be 16-pixel-aligned. 854 *****************************************************************************/ 855 HI_S32 HI_MPI_IVE_PerspTrans(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_RECT_U32_S astRoi[], 856 IVE_SRC_MEM_INFO_S astPointPair[], IVE_DST_IMAGE_S astDst[], IVE_PERSP_TRANS_CTRL_S *pstPerspTransCtrl, 857 HI_BOOL bInstant); 858 859 /***************************************************************************** 860 * Prototype : HI_MPI_IVE_KCF_GetMemSize 861 * Description : KCF get object memory size 862 * Parameters : HI_U32 u32MaxObjNum The maximum numbers of tracking object. 863 * HI_U32 *pu32Size memmory size. 864 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 865 * Spec : None 866 *****************************************************************************/ 867 HI_S32 HI_MPI_IVE_KCF_GetMemSize(HI_U32 u32MaxObjNum, HI_U32 *pu32Size); 868 869 /***************************************************************************** 870 * Prototype : HI_MPI_IVE_KCF_CreateObjList 871 * Description : KCF creste object list 872 * Parameters : IVE_MEM_INFO_S *pstMem The memory of object for object list. 873 * HI_U32 u32MaxObjNum The maximum numbers of tracking object (list node). 874 * IVE_KCF_OBJ_LIST_S *pstObjList The object list. 875 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 876 * Spec : None 877 *****************************************************************************/ 878 HI_S32 HI_MPI_IVE_KCF_CreateObjList(IVE_MEM_INFO_S *pstMem, HI_U32 u32MaxObjNum, 879 IVE_KCF_OBJ_LIST_S *pstObjList); 880 881 /***************************************************************************** 882 * Prototype : HI_MPI_IVE_KCF_DestroyObjList 883 * Description : KCF destroy object list 884 * Parameters : IVE_KCF_OBJ_LIST_S *pstObjList The object list. 885 * 886 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 887 * Spec : None 888 *****************************************************************************/ 889 HI_S32 HI_MPI_IVE_KCF_DestroyObjList(IVE_KCF_OBJ_LIST_S *pstObjList); 890 891 /***************************************************************************** 892 * Prototype : HI_MPI_IVE_KCF_CreateGaussPeak 893 * Description : KCF calculate gauss peak 894 * Parameters : HI_U3Q5 u3q5Padding The multiple of roi rectangle's width and height. 895 * IVE_DST_MEM_INFO_S *pstGaussPeak The memory of gauss peak. 896 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 897 * Spec : None 898 *****************************************************************************/ 899 HI_S32 HI_MPI_IVE_KCF_CreateGaussPeak(HI_U3Q5 u3q5Padding, IVE_DST_MEM_INFO_S *pstGaussPeak); 900 901 /***************************************************************************** 902 * Prototype : HI_MPI_IVE_KCF_CreateCosWin 903 * Description : KCF calculate cos window x and y. 904 * Parameters : IVE_DST_MEM_INFO_S *pstCosWinX The memory of cos window x. 905 * IVE_DST_MEM_INFO_S *pstCosWinY The memory of cos window y. 906 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 907 * Spec : None 908 *****************************************************************************/ 909 HI_S32 HI_MPI_IVE_KCF_CreateCosWin(IVE_DST_MEM_INFO_S *pstCosWinX, IVE_DST_MEM_INFO_S *pstCosWinY); 910 911 /***************************************************************************** 912 * Prototype : HI_MPI_IVE_KCF_GetTrainObj 913 * Description : KCF get train object. 914 * Parameters : HI_U3Q5 u3q5Padding The multiple of roi rectangle's width and height. 915 * IVE_ROI_INFO_S astRoiInfo[] The array of roi information. 916 * HI_U32 u32ObjNum The numbers of RoiInfo and object. 917 * IVE_MEM_INFO_S *pstCosWinX The memory of cos window x. 918 * IVE_MEM_INFO_S *pstCosWinY The memory of cos window y. 919 * IVE_MEM_INFO_S *pstGaussPeak The memory of gauss peak. 920 * IVE_KCF_OBJ_LIST_S *pstObjList The object list. 921 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 922 * Spec : None 923 *****************************************************************************/ 924 HI_S32 HI_MPI_IVE_KCF_GetTrainObj(HI_U3Q5 u3q5Padding, IVE_ROI_INFO_S astRoiInfo[], HI_U32 u32ObjNum, 925 IVE_MEM_INFO_S *pstCosWinX, IVE_MEM_INFO_S *pstCosWinY, IVE_MEM_INFO_S *pstGaussPeak, 926 IVE_KCF_OBJ_LIST_S *pstObjList); 927 928 /***************************************************************************** 929 * Prototype : HI_MPI_IVE_KCF_Process 930 * Description : KCF process. 931 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task 932 * IVE_SRC_IMAGE_S *pstSrc Input source.Only the YUV420SP inpu format is supported. 933 * IVE_KCF_OBJ_LIST_S *pstObjList The object list. 934 * IVE_KCF_PRO_CTRL_S *pstKcfProCtrl Control parameter. 935 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 936 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 937 * Spec : None 938 *****************************************************************************/ 939 HI_S32 HI_MPI_IVE_KCF_Process(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_KCF_OBJ_LIST_S *pstObjList, 940 IVE_KCF_PRO_CTRL_S *pstKcfProCtrl, HI_BOOL bInstant); 941 942 /***************************************************************************** 943 * Prototype : HI_MPI_IVE_KCF_GetObjBbox 944 * Description : KCF get track object bbox information. 945 * Parameters : IVE_KCF_OBJ_LIST_S *pstObjList The object list. 946 * IVE_KCF_BBOX_S astBbox The output bbox of object. 947 * HI_U32 *pu32BboxObjNum The valid numbers of output bbox. 948 * IVE_KCF_BBOX_CTRL_S *pstKcfBboxCtrl Control parameter. 949 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 950 * Spec : None 951 *****************************************************************************/ 952 HI_S32 HI_MPI_IVE_KCF_GetObjBbox(IVE_KCF_OBJ_LIST_S *pstObjList, IVE_KCF_BBOX_S astBbox[], 953 HI_U32 *pu32BboxObjNum, IVE_KCF_BBOX_CTRL_S *pstKcfBboxCtrl); 954 955 /***************************************************************************** 956 * Prototype : HI_MPI_IVE_KCF_JudgeObjBboxTrackState 957 * Description : KCF judge object tracking state. 958 * Parameters : IVE_KCF_OBJ_LIST_S *pstObjList The object list. 959 * IVE_KCF_BBOX_S *pstBbox The bbox of object. 960 * HI_BOOL *pbTrackOk The tracking state of object. 961 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 962 * Spec : None 963 *****************************************************************************/ 964 HI_S32 HI_MPI_IVE_KCF_JudgeObjBboxTrackState(IVE_ROI_INFO_S *pstRoiInfo, IVE_KCF_BBOX_S *pstBbox, 965 HI_BOOL *pbTrackOk); 966 967 /***************************************************************************** 968 * Prototype : HI_MPI_IVE_KCF_ObjUpdate 969 * Description : KCF update object. 970 * Parameters : IVE_KCF_OBJ_LIST_S *pstObjList The object list. 971 * IVE_KCF_BBOX_S astBbox The bbox information of update object. 972 * HI_U32 u32BboxObjNum The update numbers of bbox. 973 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 974 * Spec : None 975 *****************************************************************************/ 976 HI_S32 HI_MPI_IVE_KCF_ObjUpdate(IVE_KCF_OBJ_LIST_S *pstObjList, IVE_KCF_BBOX_S astBbox[], 977 HI_U32 u32BboxObjNum); 978 979 /***************************************************************************** 980 * Prototype : HI_MPI_IVE_Hog 981 * Description : get Hog feature. 982 * Parameters : IVE_HANDLE *pIveHandle Returned handle ID of a task. 983 * IVE_SRC_IMAGE_S *pstSrc Input source.Only the YUV420SP inpu format is supported. 984 * IVE_RECT_U32_S astRoi[] The array of roi. 985 * IVE_DST_BLOB_S astDst[] The array of Hog feature. 986 * IVE_HOG_CTRL_S *pstHogCtrl Control parameter. 987 * HI_BOOL bInstant For details, see HI_MPI_IVE_DMA. 988 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 989 * Spec : None 990 *****************************************************************************/ 991 HI_S32 HI_MPI_IVE_Hog(IVE_HANDLE *pIveHandle, IVE_SRC_IMAGE_S *pstSrc, IVE_RECT_U32_S astRoi[], 992 IVE_DST_BLOB_S astDst[], IVE_HOG_CTRL_S *pstHogCtrl, HI_BOOL bInstant); 993 994 /***************************************************************************** 995 * Prototype : HI_MPI_IVE_Query 996 * Description : This API is used to query the status of a called function by using the returned 997 * IveHandle of the function. In block mode, the system waits until the function that 998 * is being queried is called. In non-block mode, the current status is queried and 999 * no action is taken. 1000 * Parameters : IVE_HANDLE IveHandle IveHandle of a called function. It is entered by users. 1001 * HI_BOOL *pbFinish Returned status 1002 * HI_BOOL bBlock Flag indicating the block mode or non-block mode 1003 * Return Value : HI_SUCCESS: Success;Error codes: Failure. 1004 * Spec : None 1005 *****************************************************************************/ 1006 HI_S32 HI_MPI_IVE_Query(IVE_HANDLE IveHandle, HI_BOOL *pbFinish, HI_BOOL bBlock); 1007 1008 #ifdef __cplusplus 1009 #if __cplusplus 1010 } 1011 #endif 1012 #endif 1013 #endif