1 /* 2 // Copyright 1999-2019 Intel Corporation All Rights Reserved. 3 // 4 // The source code, information and material ("Material") contained herein is 5 // owned by Intel Corporation or its suppliers or licensors, and title 6 // to such Material remains with Intel Corporation or its suppliers or 7 // licensors. The Material contains proprietary information of Intel 8 // or its suppliers and licensors. The Material is protected by worldwide 9 // copyright laws and treaty provisions. No part of the Material may be used, 10 // copied, reproduced, modified, published, uploaded, posted, transmitted, 11 // distributed or disclosed in any way without Intel's prior express written 12 // permission. No license under any patent, copyright or other intellectual 13 // property rights in the Material is granted to or conferred upon you, 14 // either expressly, by implication, inducement, estoppel or otherwise. 15 // Any license under such intellectual property rights must be express and 16 // approved by Intel in writing. 17 // 18 // Unless otherwise agreed by Intel in writing, 19 // you may not remove or alter this notice or any other notice embedded in 20 // Materials by Intel or Intel's suppliers or licensors in any way. 21 // 22 */ 23 24 /* 25 // Intel(R) Integrated Performance Primitives (Intel(R) IPP) 26 // Derivative Types and Macro Definitions 27 // 28 // The main purpose of this header file is 29 // to support compatibility with the legacy 30 // domains until their end of life. 31 // 32 */ 33 34 35 #ifndef __IPPICV_TYPES_H__ 36 #define __IPPICV_TYPES_H__ 37 38 #ifdef __cplusplus 39 extern "C" { 40 #endif 41 42 #if defined( IPPTYPES_H__ ) 43 #error "You try to include ippicv_types.h and ipptypes.h together. You can't use Intel(R) IPP and ICV libraries together, please use only one and please use header files only for one library" 44 #endif 45 46 /*****************************************************************************/ 47 /* Below are ippCore domain specific definitions */ 48 /*****************************************************************************/ 49 #if !defined( _OWN_BLDPCS ) 50 51 #ifndef IPP_CPU_FEATURES__ 52 #define IPP_CPU_FEATURES__ 53 54 #define ippCPUID_MMX 0x00000001 /* Intel(R) Architecture MMX technology supported */ 55 #define ippCPUID_SSE 0x00000002 /* Intel(R) Streaming SIMD Extensions */ 56 #define ippCPUID_SSE2 0x00000004 /* Intel(R) Streaming SIMD Extensions 2 */ 57 #define ippCPUID_SSE3 0x00000008 /* Intel(R) Streaming SIMD Extensions 3 */ 58 #define ippCPUID_SSSE3 0x00000010 /* Supplemental Streaming SIMD Extensions 3 */ 59 #define ippCPUID_MOVBE 0x00000020 /* Intel(R) MOVBE instruction */ 60 #define ippCPUID_SSE41 0x00000040 /* Intel(R) Streaming SIMD Extensions 4.1 */ 61 #define ippCPUID_SSE42 0x00000080 /* Intel(R) Streaming SIMD Extensions 4.2 */ 62 #define ippCPUID_AVX 0x00000100 /* Intel(R) Advanced Vector Extensions instruction set */ 63 #define ippAVX_ENABLEDBYOS 0x00000200 /* Intel(R) Advanced Vector Extensions instruction set is supported by OS */ 64 #define ippCPUID_AES 0x00000400 /* Intel(R) AES New Instructions */ 65 #define ippCPUID_CLMUL 0x00000800 /* Intel(R) CLMUL instruction */ 66 #define ippCPUID_ABR 0x00001000 /* Reserved */ 67 #define ippCPUID_RDRAND 0x00002000 /* Intel(R) RDRAND instruction */ 68 #define ippCPUID_F16C 0x00004000 /* Intel(R) F16C new instructions */ 69 #define ippCPUID_AVX2 0x00008000 /* Intel(R) Advanced Vector Extensions 2 instruction set */ 70 #define ippCPUID_ADCOX 0x00010000 /* Intel(R) ADOX/ADCX new instructions */ 71 #define ippCPUID_RDSEED 0x00020000 /* Intel(R) RDSEED instruction */ 72 #define ippCPUID_PREFETCHW 0x00040000 /* Intel(R) PREFETCHW instruction */ 73 #define ippCPUID_SHA 0x00080000 /* Intel(R) SHA new instructions */ 74 #define ippCPUID_AVX512F 0x00100000 /* Intel(R) Advanced Vector Extensions 3.1 instruction set */ 75 #define ippCPUID_AVX512CD 0x00200000 /* Intel(R) Advanced Vector Extensions CD (Conflict Detection) instruction set */ 76 #define ippCPUID_AVX512ER 0x00400000 /* Intel(R) Advanced Vector Extensions ER instruction set */ 77 #define ippCPUID_AVX512PF 0x00800000 /* Intel(R) Advanced Vector Extensions PF instruction set */ 78 #define ippCPUID_AVX512BW 0x01000000 /* Intel(R) Advanced Vector Extensions BW instruction set */ 79 #define ippCPUID_AVX512DQ 0x02000000 /* Intel(R) Advanced Vector Extensions DQ instruction set */ 80 #define ippCPUID_AVX512VL 0x04000000 /* Intel(R) Advanced Vector Extensions VL instruction set */ 81 #define ippCPUID_AVX512VBMI 0x08000000 /* Intel(R) Advanced Vector Extensions Bit Manipulation instructions */ 82 #define ippCPUID_MPX 0x10000000 /* Intel(R) Memory Protection Extensions */ 83 #define ippCPUID_AVX512_4FMADDPS 0x20000000 /* Intel(R) Advanced Vector Extensions DL floating-point single precision */ 84 #define ippCPUID_AVX512_4VNNIW 0x40000000 /* Intel(R) Advanced Vector Extensions DL enhanced word variable precision */ 85 #define ippCPUID_KNC 0x80000000 /* Intel(R) Xeon Phi(TM) Coprocessor */ 86 #if defined( _WIN32 ) || defined ( _WIN64 ) 87 #define ippCPUID_AVX512IFMA 0x100000000L /* Intel(R) Advanced Vector Extensions IFMA (PMADD52) instruction set */ 88 #define ippCPUID_NOCHECK 0x8000000000000000L /* Force ippSetCpuFeatures to set CPU features without check */ 89 #define ippCPUID_GETINFO_A 0x616f666e69746567L /* Force ipp_GetCpuFeatures to work as cpuid instruction */ 90 #define ippCPUID_AVX512VPOPCNTDQ 0x400000000L /* Intel(R) Advanced Vector Extensions 512 VPOPCNTDQ instruction set */ 91 #define ippCPUID_AVX512_BITALG 0x800000000L /* Intel(R) Advanced Vector Extensions 512 BITALG instruction set */ 92 #else 93 #define ippCPUID_AVX512IFMA 0x100000000LL /* Intel(R) Advanced Vector Extensions IFMA (PMADD52) instruction set */ 94 #define ippCPUID_NOCHECK 0x8000000000000000LL 95 #define ippCPUID_GETINFO_A 0x616f666e69746567LL 96 #define ippCPUID_AVX512VPOPCNTDQ 0x400000000LL /* Intel(R) Advanced Vector Extensions 512 VPOPCNTDQ instruction set */ 97 #define ippCPUID_AVX512_BITALG 0x800000000LL /* Intel(R) Advanced Vector Extensions 512 BITALG instruction set */ 98 #endif 99 100 #endif /* IPP_CPU_FEATURES__ */ 101 102 #define IPP_COUNT_OF( obj ) (sizeof(obj)/sizeof(obj[0])) 103 104 typedef struct { 105 int type; 106 int level; 107 int size; 108 } IppCache; 109 110 /*****************************************************************************/ 111 /* Below are ippSP domain specific definitions */ 112 /*****************************************************************************/ 113 typedef enum { 114 ippRndZero, 115 ippRndNear, 116 ippRndFinancial, 117 ippRndHintAccurate=0x10 118 } IppRoundMode; 119 120 121 typedef enum { 122 ippAlgHintNone, 123 ippAlgHintFast, 124 ippAlgHintAccurate 125 } IppHintAlgorithm; 126 127 typedef enum { 128 ippCmpLess, 129 ippCmpLessEq, 130 ippCmpEq, 131 ippCmpGreaterEq, 132 ippCmpGreater 133 } IppCmpOp; 134 135 typedef enum { 136 ippAlgAuto = 0x00000000, 137 ippAlgDirect = 0x00000001, 138 ippAlgFFT = 0x00000002, 139 ippAlgMask = 0x000000FF 140 } IppAlgType; 141 142 typedef enum { 143 ippsNormNone = 0x00000000, /* default */ 144 ippsNormA = 0x00000100, /* biased normalization */ 145 ippsNormB = 0x00000200, /* unbiased normalization */ 146 ippsNormMask = 0x0000FF00 147 } IppsNormOp; 148 149 typedef enum { 150 ippNormInf = 0x00000001, 151 ippNormL1 = 0x00000002, 152 ippNormL2 = 0x00000004 153 } IppNormType; 154 155 enum { 156 IPP_FFT_DIV_FWD_BY_N = 1, 157 IPP_FFT_DIV_INV_BY_N = 2, 158 IPP_FFT_DIV_BY_SQRTN = 4, 159 IPP_FFT_NODIV_BY_ANY = 8 160 }; 161 162 enum { 163 IPP_DIV_FWD_BY_N = 1, 164 IPP_DIV_INV_BY_N = 2, 165 IPP_DIV_BY_SQRTN = 4, 166 IPP_NODIV_BY_ANY = 8 167 }; 168 169 typedef struct { 170 Ipp32f rho; 171 Ipp32f theta; 172 } IppPointPolar; 173 174 typedef enum {ippWinBartlett,ippWinBlackman,ippWinHamming,ippWinHann,ippWinRect} IppWinType; 175 176 typedef enum { ippButterworth, ippChebyshev1 } IppsIIRFilterType; 177 178 typedef enum { ippZCR=0, ippZCXor, ippZCC } IppsZCType; 179 180 #if !defined( _OWN_BLDPCS ) 181 182 typedef struct { 183 int left; 184 int right; 185 } IppsROI; 186 187 typedef struct RandUniState_8u IppsRandUniState_8u; 188 typedef struct RandUniState_16s IppsRandUniState_16s; 189 typedef struct RandUniState_32f IppsRandUniState_32f; 190 typedef struct RandUniState_64f IppsRandUniState_64f; 191 192 typedef struct RandGaussState_8u IppsRandGaussState_8u; 193 typedef struct RandGaussState_16s IppsRandGaussState_16s; 194 typedef struct RandGaussState_32f IppsRandGaussState_32f; 195 typedef struct RandGaussState_64f IppsRandGaussState_64f; 196 197 typedef struct FFTSpec_C_32fc IppsFFTSpec_C_32fc; 198 typedef struct FFTSpec_C_32f IppsFFTSpec_C_32f; 199 typedef struct FFTSpec_R_32f IppsFFTSpec_R_32f; 200 201 typedef struct FFTSpec_C_64fc IppsFFTSpec_C_64fc; 202 typedef struct FFTSpec_C_64f IppsFFTSpec_C_64f; 203 typedef struct FFTSpec_R_64f IppsFFTSpec_R_64f; 204 205 typedef struct DFTSpec_C_32fc IppsDFTSpec_C_32fc; 206 typedef struct DFTSpec_C_32f IppsDFTSpec_C_32f; 207 typedef struct DFTSpec_R_32f IppsDFTSpec_R_32f; 208 209 typedef struct DFTSpec_C_64fc IppsDFTSpec_C_64fc; 210 typedef struct DFTSpec_C_64f IppsDFTSpec_C_64f; 211 typedef struct DFTSpec_R_64f IppsDFTSpec_R_64f; 212 213 typedef struct DCTFwdSpec_32f IppsDCTFwdSpec_32f; 214 typedef struct DCTInvSpec_32f IppsDCTInvSpec_32f; 215 216 typedef struct DCTFwdSpec_64f IppsDCTFwdSpec_64f; 217 typedef struct DCTInvSpec_64f IppsDCTInvSpec_64f; 218 219 typedef struct sWTFwdState_32f IppsWTFwdState_32f; 220 typedef struct sWTFwdState_8u32f IppsWTFwdState_8u32f; 221 typedef struct sWTFwdState_16s32f IppsWTFwdState_16s32f; 222 typedef struct sWTFwdState_16u32f IppsWTFwdState_16u32f; 223 typedef struct sWTInvState_32f IppsWTInvState_32f; 224 typedef struct sWTInvState_32f8u IppsWTInvState_32f8u; 225 typedef struct sWTInvState_32f16s IppsWTInvState_32f16s; 226 typedef struct sWTInvState_32f16u IppsWTInvState_32f16u; 227 228 typedef struct IIRState_32f IppsIIRState_32f; 229 typedef struct IIRState_32fc IppsIIRState_32fc; 230 typedef struct IIRState32f_16s IppsIIRState32f_16s; 231 typedef struct IIRState32fc_16sc IppsIIRState32fc_16sc; 232 typedef struct IIRState_64f IppsIIRState_64f; 233 typedef struct IIRState_64fc IppsIIRState_64fc; 234 typedef struct IIRState64f_32f IppsIIRState64f_32f; 235 typedef struct IIRState64fc_32fc IppsIIRState64fc_32fc; 236 typedef struct IIRState64f_32s IppsIIRState64f_32s; 237 typedef struct IIRState64fc_32sc IppsIIRState64fc_32sc; 238 typedef struct IIRState64f_16s IppsIIRState64f_16s; 239 typedef struct IIRState64fc_16sc IppsIIRState64fc_16sc; 240 241 typedef struct FIRSpec_32f IppsFIRSpec_32f; 242 typedef struct FIRSpec_64f IppsFIRSpec_64f; 243 typedef struct FIRSpec_32fc IppsFIRSpec_32fc; 244 typedef struct FIRSpec_64fc IppsFIRSpec_64fc; 245 246 typedef struct FIRLMSState_32f IppsFIRLMSState_32f; 247 typedef struct FIRLMSState32f_16s IppsFIRLMSState32f_16s; 248 249 typedef struct HilbertSpec IppsHilbertSpec; 250 251 typedef struct FIRSparseState_32f IppsFIRSparseState_32f; 252 typedef struct IIRSparseState_32f IppsIIRSparseState_32f; 253 254 typedef struct ResamplingPolyphase_16s IppsResamplingPolyphase_16s; 255 typedef struct ResamplingPolyphaseFixed_16s IppsResamplingPolyphaseFixed_16s; 256 typedef struct ResamplingPolyphase_32f IppsResamplingPolyphase_32f; 257 typedef struct ResamplingPolyphaseFixed_32f IppsResamplingPolyphaseFixed_32f; 258 259 #endif /* _OWN_BLDPCS */ 260 261 /*****************************************************************************/ 262 /* Below are ippIP domain specific definitions */ 263 /*****************************************************************************/ 264 #define IPP_TEMPORAL_COPY 0x0 265 #define IPP_NONTEMPORAL_STORE 0x01 266 #define IPP_NONTEMPORAL_LOAD 0x02 267 268 typedef int IppEnum; 269 270 #define IPP_DEG_TO_RAD( deg ) ( (deg)/180.0 * IPP_PI ) 271 272 typedef enum { 273 ippiNormNone = 0x00000000, /* default */ 274 ippiNorm = 0x00000100, /* normalized form */ 275 ippiNormCoefficient = 0x00000200, /* correlation coefficient in the range [-1.0 ... 1.0] */ 276 ippiNormMask = 0x0000FF00 277 } IppiNormOp; 278 279 typedef enum { 280 ippiROIFull = 0x00000000, 281 ippiROIValid = 0x00010000, 282 ippiROISame = 0x00020000, 283 ippiROIMask = 0x00FF0000 284 } IppiROIShape; 285 286 typedef enum { 287 ippC0 = 0, 288 ippC1 = 1, 289 ippC2 = 2, 290 ippC3 = 3, 291 ippC4 = 4, 292 ippP2 = 5, 293 ippP3 = 6, 294 ippP4 = 7, 295 ippAC1 = 8, 296 ippAC4 = 9, 297 ippA0C4 = 10, 298 ippAP4 = 11 299 } IppChannels; 300 301 typedef enum _IppiBorderType { 302 ippBorderRepl = 1, 303 ippBorderWrap = 2, 304 ippBorderMirror = 3, /* left border: 012... -> 21012... */ 305 ippBorderMirrorR = 4, /* left border: 012... -> 210012... */ 306 ippBorderDefault = 5, 307 ippBorderConst = 6, 308 ippBorderTransp = 7, 309 310 /* Flags to use source image memory pixels from outside of the border in particular directions */ 311 ippBorderInMemTop = 0x0010, 312 ippBorderInMemBottom = 0x0020, 313 ippBorderInMemLeft = 0x0040, 314 ippBorderInMemRight = 0x0080, 315 ippBorderInMem = ippBorderInMemLeft|ippBorderInMemTop|ippBorderInMemRight|ippBorderInMemBottom, 316 317 /* Flags to use source image memory pixels from outside of the border for first stage only in multi-stage filters */ 318 ippBorderFirstStageInMemTop = 0x0100, 319 ippBorderFirstStageInMemBottom = 0x0200, 320 ippBorderFirstStageInMemLeft = 0x0400, 321 ippBorderFirstStageInMemRight = 0x0800, 322 ippBorderFirstStageInMem = ippBorderFirstStageInMemLeft|ippBorderFirstStageInMemTop|ippBorderFirstStageInMemRight|ippBorderFirstStageInMemBottom 323 } IppiBorderType; 324 325 typedef enum { 326 ippAxsHorizontal, 327 ippAxsVertical, 328 ippAxsBoth, 329 ippAxs45, 330 ippAxs135 331 } IppiAxis; 332 333 typedef struct { 334 int x; 335 int y; 336 int width; 337 int height; 338 } IppiRect; 339 340 typedef struct { 341 int x; 342 int y; 343 } IppiPoint; 344 345 typedef struct { 346 int width; 347 int height; 348 } IppiSize; 349 350 typedef struct { 351 Ipp32f x; 352 Ipp32f y; 353 } IppiPoint_32f; 354 355 typedef enum _IppiMaskSize { 356 ippMskSize1x3 = 13, 357 ippMskSize1x5 = 15, 358 ippMskSize3x1 = 31, 359 ippMskSize3x3 = 33, 360 ippMskSize5x1 = 51, 361 ippMskSize5x5 = 55 362 } IppiMaskSize; 363 364 enum { 365 IPPI_INTER_NN = 1, 366 IPPI_INTER_LINEAR = 2, 367 IPPI_INTER_CUBIC = 4, 368 IPPI_INTER_CUBIC2P_BSPLINE, /* two-parameter cubic filter (B=1, C=0) */ 369 IPPI_INTER_CUBIC2P_CATMULLROM, /* two-parameter cubic filter (B=0, C=1/2) */ 370 IPPI_INTER_CUBIC2P_B05C03, /* two-parameter cubic filter (B=1/2, C=3/10) */ 371 IPPI_INTER_SUPER = 8, 372 IPPI_INTER_LANCZOS = 16, 373 IPPI_ANTIALIASING = (1 << 29), 374 IPPI_SUBPIXEL_EDGE = (1 << 30), 375 IPPI_SMOOTH_EDGE = (1 << 31) 376 }; 377 378 typedef enum { 379 ippNearest = IPPI_INTER_NN, 380 ippLinear = IPPI_INTER_LINEAR, 381 ippCubic = IPPI_INTER_CUBIC2P_CATMULLROM, 382 ippLanczos = IPPI_INTER_LANCZOS, 383 ippHahn = 0, 384 ippSuper = IPPI_INTER_SUPER 385 } IppiInterpolationType; 386 387 typedef enum { 388 ippPolyphase_1_2, 389 ippPolyphase_3_5, 390 ippPolyphase_2_3, 391 ippPolyphase_7_10, 392 ippPolyphase_3_4 393 } IppiFraction; 394 395 enum { 396 IPP_FASTN_ORIENTATION = 0x0001, 397 IPP_FASTN_NMS = 0x0002, 398 IPP_FASTN_CIRCLE = 0X0004, 399 IPP_FASTN_SCORE_MODE0 = 0X0020 400 }; 401 402 #if !defined( _OWN_BLDPCS ) 403 404 typedef enum { 405 ippAlphaOver, 406 ippAlphaIn, 407 ippAlphaOut, 408 ippAlphaATop, 409 ippAlphaXor, 410 ippAlphaPlus, 411 ippAlphaOverPremul, 412 ippAlphaInPremul, 413 ippAlphaOutPremul, 414 ippAlphaATopPremul, 415 ippAlphaXorPremul, 416 ippAlphaPlusPremul 417 } IppiAlphaType; 418 419 typedef struct DeconvFFTState_32f_C1R IppiDeconvFFTState_32f_C1R; 420 typedef struct DeconvFFTState_32f_C3R IppiDeconvFFTState_32f_C3R; 421 typedef struct DeconvLR_32f_C1R IppiDeconvLR_32f_C1R; 422 typedef struct DeconvLR_32f_C3R IppiDeconvLR_32f_C3R; 423 424 typedef enum { 425 ippiFilterBilateralGauss = 100, 426 ippiFilterBilateralGaussFast = 101 427 } IppiFilterBilateralType; 428 429 typedef struct FilterBilateralSpec IppiFilterBilateralSpec; 430 431 typedef enum { 432 ippDistNormL1 = 0x00000002 433 } IppiDistanceMethodType; 434 435 typedef enum { 436 ippResizeFilterHann, 437 ippResizeFilterLanczos 438 } IppiResizeFilterType; 439 440 typedef struct ResizeFilterState IppiResizeFilterState; 441 442 typedef struct { 443 Ipp32u borderLeft; 444 Ipp32u borderTop; 445 Ipp32u borderRight; 446 Ipp32u borderBottom; 447 } IppiBorderSize; 448 449 typedef enum { 450 ippWarpForward, 451 ippWarpBackward 452 } IppiWarpDirection; 453 454 typedef enum { 455 ippWarpAffine, 456 ippWarpPerspective, 457 ippWarpBilinear 458 } IppiWarpTransformType; 459 460 461 typedef struct ResizeSpec_32f IppiResizeSpec_32f; 462 typedef struct ResizeYUV422Spec IppiResizeYUV422Spec; 463 typedef struct ResizeYUV420Spec IppiResizeYUV420Spec; 464 465 typedef struct ResizeSpec_64f IppiResizeSpec_64f; 466 467 typedef struct IppiWarpSpec IppiWarpSpec; 468 469 typedef struct FilterBorderSpec IppiFilterBorderSpec; 470 471 typedef struct ThresholdAdaptiveSpec IppiThresholdAdaptiveSpec; 472 473 typedef struct HistogramSpec IppiHistogramSpec; 474 475 typedef struct { 476 int cvCompatible; /* openCV compatible output format */ 477 int cellSize; /* squre cell size (pixels) */ 478 int blockSize; /* square block size (pixels) */ 479 int blockStride; /* block displacement (the same for x- and y- directions) */ 480 int nbins; /* required number of bins */ 481 Ipp32f sigma; /* gaussian factor of HOG block weights */ 482 Ipp32f l2thresh; /* normalization factor */ 483 IppiSize winSize; /* detection window size (pixels) */ 484 } IppiHOGConfig; 485 486 typedef struct FFT2DSpec_C_32fc IppiFFTSpec_C_32fc; 487 typedef struct FFT2DSpec_R_32f IppiFFTSpec_R_32f; 488 489 typedef struct DFT2DSpec_C_32fc IppiDFTSpec_C_32fc; 490 typedef struct DFT2DSpec_R_32f IppiDFTSpec_R_32f; 491 492 typedef struct DCT2DFwdSpec_32f IppiDCTFwdSpec_32f; 493 typedef struct DCT2DInvSpec_32f IppiDCTInvSpec_32f; 494 495 typedef struct iWTFwdSpec_32f_C1R IppiWTFwdSpec_32f_C1R; 496 typedef struct iWTInvSpec_32f_C1R IppiWTInvSpec_32f_C1R; 497 typedef struct iWTFwdSpec_32f_C3R IppiWTFwdSpec_32f_C3R; 498 typedef struct iWTInvSpec_32f_C3R IppiWTInvSpec_32f_C3R; 499 500 typedef struct MomentState64f IppiMomentState_64f; 501 typedef Ipp64f IppiHuMoment_64f[7]; 502 503 typedef struct LUT_Spec IppiLUT_Spec; 504 505 #define IPP_HOG_MAX_CELL (16) /* max size of CELL */ 506 #define IPP_HOG_MAX_BLOCK (64) /* max size of BLOCK */ 507 #define IPP_HOG_MAX_BINS (16) /* max number of BINS */ 508 509 typedef struct _ipHOG IppiHOGSpec; 510 511 #endif /* _OWN_BLDPCS */ 512 513 514 /**** Below are 3D Image (Volume) Processing specific definitions ****/ 515 516 typedef struct { 517 int width; 518 int height; 519 int depth; 520 } IpprVolume; 521 522 typedef struct { 523 int x; 524 int y; 525 int z; 526 int width; 527 int height; 528 int depth; 529 } IpprCuboid; 530 531 typedef struct { 532 int x; 533 int y; 534 int z; 535 } IpprPoint; 536 537 /*****************************************************************************/ 538 /* Below are ippCV domain specific definitions */ 539 /*****************************************************************************/ 540 541 typedef enum _IppiDifferentialKernel 542 { 543 ippFilterSobelVert, 544 ippFilterSobelHoriz, 545 ippFilterSobel, 546 ippFilterScharrVert, 547 ippFilterScharrHoriz, 548 ippFilterScharr, 549 ippFilterCentralDiffVert, 550 ippFilterCentralDiffHoriz, 551 ippFilterCentralDiff 552 }IppiDifferentialKernel; 553 554 #if !defined( _OWN_BLDPCS ) 555 556 typedef enum _IppiKernelType { 557 ippKernelSobel = 0, 558 ippKernelScharr = 1, 559 ippKernelSobelNeg = 2 560 } IppiKernelType; 561 562 typedef enum _IppiNorm { 563 ippiNormInf = 0, 564 ippiNormL1 = 1, 565 ippiNormL2 = 2, 566 ippiNormFM = 3 567 } IppiNorm; 568 569 typedef struct ipcvMorphState IppiMorphState; 570 typedef struct ipcvMorphStateL IppiMorphStateL; 571 typedef struct ipcvMorphAdvState IppiMorphAdvState; 572 typedef struct ipcvMorphAdvStateL IppiMorphAdvStateL; 573 typedef struct ipcvMorphGrayState_8u IppiMorphGrayState_8u; 574 typedef struct ipcvMorphGrayState_8uL IppiMorphGrayState_8uL; 575 typedef struct ipcvMorphGrayState_32f IppiMorphGrayState_32f; 576 typedef struct ipcvMorphGrayState_32fL IppiMorphGrayState_32fL; 577 578 typedef struct ipcvConvState IppiConvState; 579 580 typedef struct _IppiConnectedComp { 581 Ipp64f area; /* area of the segmented component */ 582 Ipp64f value[3];/* gray scale value of the segmented component */ 583 IppiRect rect; /* bounding rectangle of the segmented component */ 584 } IppiConnectedComp; 585 586 typedef struct PyramidState IppiPyramidState; 587 588 typedef IppiPyramidState IppiPyramidDownState_8u_C1R; 589 typedef IppiPyramidState IppiPyramidDownState_16u_C1R; 590 typedef IppiPyramidState IppiPyramidDownState_32f_C1R; 591 typedef IppiPyramidState IppiPyramidDownState_8u_C3R; 592 typedef IppiPyramidState IppiPyramidDownState_16u_C3R; 593 typedef IppiPyramidState IppiPyramidDownState_32f_C3R; 594 typedef IppiPyramidState IppiPyramidUpState_8u_C1R; 595 typedef IppiPyramidState IppiPyramidUpState_16u_C1R; 596 typedef IppiPyramidState IppiPyramidUpState_32f_C1R; 597 typedef IppiPyramidState IppiPyramidUpState_8u_C3R; 598 typedef IppiPyramidState IppiPyramidUpState_16u_C3R; 599 typedef IppiPyramidState IppiPyramidUpState_32f_C3R; 600 601 602 typedef struct _IppiPyramid { 603 Ipp8u **pImage; 604 IppiSize *pRoi; 605 Ipp64f *pRate; 606 int *pStep; 607 Ipp8u *pState; 608 int level; 609 } IppiPyramid; 610 611 typedef struct OptFlowPyrLK IppiOptFlowPyrLK; 612 613 typedef IppiOptFlowPyrLK IppiOptFlowPyrLK_8u_C1R; 614 typedef IppiOptFlowPyrLK IppiOptFlowPyrLK_16u_C1R; 615 typedef IppiOptFlowPyrLK IppiOptFlowPyrLK_32f_C1R; 616 617 typedef struct ipcvHaarClassifier_32f IppiHaarClassifier_32f; 618 typedef struct ipcvHaarClassifier_32s IppiHaarClassifier_32s; 619 620 typedef struct ipcvFGHistogramState_8u_C1R IppFGHistogramState_8u_C1R; 621 typedef struct ipcvFGHistogramState_8u_C3R IppFGHistogramState_8u_C3R; 622 623 typedef struct ipcvFGGaussianState_8u_C1R IppFGGaussianState_8u_C1R; 624 typedef struct ipcvFGGaussianState_8u_C3R IppFGGaussianState_8u_C3R; 625 626 typedef enum _IppiInpaintFlag { 627 IPP_INPAINT_TELEA = 0, 628 IPP_INPAINT_NS = 1 629 } IppiInpaintFlag; 630 631 typedef struct ippcvFilterGaussianSpec IppFilterGaussianSpec; 632 633 typedef struct ipcvInpaintState_8u IppiInpaintState_8u_C1R; 634 typedef struct ipcvInpaintState_8u IppiInpaintState_8u_C3R; 635 636 typedef struct HoughProbSpec IppiHoughProbSpec; 637 638 typedef struct FastNSpec IppiFastNSpec; 639 640 typedef struct _IppiCornerFastN { 641 int x; 642 int y; 643 int cornerType; 644 int orientation; 645 float angle; 646 float score; 647 } IppiCornerFastN; 648 649 typedef struct FGMMState_8u_C3R IppFGMMState_8u_C3R; 650 651 typedef struct 652 { 653 unsigned int numFrames; 654 unsigned int maxNGauss; 655 Ipp32f varInit; 656 Ipp32f varMin; 657 Ipp32f varMax; 658 Ipp32f varWBRatio; 659 Ipp32f bckgThr; 660 Ipp32f varNGRatio; 661 Ipp32f reduction; 662 Ipp8u shadowValue; 663 char shadowFlag; 664 Ipp32f shadowRatio; 665 } IppFGMModel; 666 667 #endif /* _OWN_BLDPCS */ 668 669 #define IPP_SEGMENT_QUEUE 0x01 670 #define IPP_SEGMENT_DISTANCE 0x02 671 #define IPP_SEGMENT_BORDER_4 0x40 672 #define IPP_SEGMENT_BORDER_8 0x80 673 674 #define IPP_TRUNC(a,b) ((a)&~((b)-1)) 675 #define IPP_APPEND(a,b) (((a)+(b)-1)&~((b)-1)) 676 677 /*****************************************************************************/ 678 /* Below are ippCC domain specific definitions */ 679 /*****************************************************************************/ 680 enum { 681 IPP_UPPER = 1, 682 IPP_LEFT = 2, 683 IPP_CENTER = 4, 684 IPP_RIGHT = 8, 685 IPP_LOWER = 16, 686 IPP_UPPER_LEFT = 32, 687 IPP_UPPER_RIGHT = 64, 688 IPP_LOWER_LEFT = 128, 689 IPP_LOWER_RIGHT = 256 690 }; 691 692 #if !defined( _OWN_BLDPCS ) 693 694 typedef enum { 695 ippDitherNone, 696 ippDitherFS, 697 ippDitherJJN, 698 ippDitherStucki, 699 ippDitherBayer 700 } IppiDitherType; 701 702 #endif /* _OWN_BLDPCS */ 703 704 /*****************************************************************************/ 705 /* Below are ippCH domain specific definitions */ 706 /*****************************************************************************/ 707 708 #if !defined( _OWN_BLDPCS ) 709 710 typedef struct { 711 void *pFind; 712 int lenFind; 713 } IppRegExpFind; 714 715 typedef struct RegExpState IppRegExpState; 716 717 typedef enum { 718 ippFmtASCII = 0, 719 ippFmtUTF8 720 } IppRegExpFormat; 721 722 typedef struct RegExpReplaceState IppRegExpReplaceState; 723 724 #endif /* _OWN_BLDPCS */ 725 726 /*****************************************************************************/ 727 /* Below are ippDC domain specific definitions */ 728 /*****************************************************************************/ 729 730 #if !defined ( _OWN_BLDPCS ) 731 732 typedef struct MTFState_8u IppMTFState_8u; 733 734 typedef enum { 735 ippBWTItohTanakaLimSort, 736 ippBWTItohTanakaUnlimSort, 737 ippBWTSuffixSort, 738 ippBWTAutoSort 739 } IppBWTSortAlgorithmHint; 740 741 typedef struct LZSSState_8u IppLZSSState_8u; 742 743 typedef struct LZ77State_8u IppLZ77State_8u; 744 typedef enum{ 745 IppLZ77FastCompr, 746 IppLZ77AverageCompr, 747 IppLZ77BestCompr 748 } IppLZ77ComprLevel; 749 typedef enum{ 750 IppLZ77NoChcksm, 751 IppLZ77Adler32, 752 IppLZ77CRC32 753 } IppLZ77Chcksm; 754 typedef enum { 755 IppLZ77NoFlush, 756 IppLZ77SyncFlush, 757 IppLZ77FullFlush, 758 IppLZ77FinishFlush 759 } IppLZ77Flush; 760 typedef struct IppLZ77Pairs_16u { 761 Ipp16u length; 762 Ipp16u offset; 763 } IppLZ77Pair; 764 typedef enum { 765 IppLZ77StatusInit, 766 IppLZ77StatusLZ77Process, 767 IppLZ77StatusHuffProcess, 768 IppLZ77StatusFinal 769 } IppLZ77DeflateStatus; 770 typedef enum { 771 IppLZ77UseFixed, 772 IppLZ77UseDynamic, 773 IppLZ77UseStored 774 } IppLZ77HuffMode; 775 typedef enum { 776 IppLZ77InflateStatusInit, 777 IppLZ77InflateStatusHuffProcess, 778 IppLZ77InflateStatusLZ77Process, 779 IppLZ77InflateStatusFinal 780 } IppLZ77InflateStatus; 781 782 typedef struct IppInflateState { 783 const Ipp8u* pWindow; /* pointer to the sliding window 784 (the dictionary for the LZ77 algorithm) */ 785 unsigned int winSize; /* size of the sliding window */ 786 unsigned int tableType; /* type of Huffman code tables 787 (for example, 0 - tables for Fixed Huffman codes) */ 788 unsigned int tableBufferSize; /* (ENOUGH = 2048) * (sizeof(code) = 4) - 789 sizeof(IppInflateState) */ 790 } IppInflateState; 791 792 typedef enum { /* this type is used as a translator of the inflate_mode type from zlib */ 793 ippTYPE, 794 ippLEN, 795 ippLENEXT 796 } IppInflateMode; 797 798 typedef struct { 799 Ipp16u freq; 800 Ipp16u code; 801 } IppDeflateFreqTable; 802 803 typedef struct { 804 Ipp16u code; 805 Ipp16u len; 806 } IppDeflateHuffCode; 807 808 typedef struct RLEState_BZ2 IppRLEState_BZ2; 809 810 typedef struct EncodeHuffState_BZ2 IppEncodeHuffState_BZ2; 811 812 typedef struct DecodeHuffState_BZ2 IppDecodeHuffState_BZ2; 813 814 typedef enum { 815 IppLZO1XST, /* Single-threaded, generic LZO-compatible*/ 816 IppLZO1XMT /* Multi-threaded */ 817 } IppLZOMethod ; 818 819 typedef struct LZOState_8u IppLZOState_8u; 820 821 #endif /* _OWN_BLDPCS */ 822 823 /* ///////////////////////////////////////////////////////////////////////////// 824 // The following enumerator defines a status of Intel(R) IPP operations 825 // negative value means error 826 */ 827 /* errors */ 828 #define ippStsCpuNotSupportedErr -9999/* The target CPU is not supported. */ 829 #define ippStsInplaceModeNotSupportedErr -9998/* The inplace operation is currently not supported. */ 830 831 #define ippStsIIRIIRLengthErr -234 /* Vector length for IIRIIR function is less than 3*(IIR order) */ 832 #define ippStsWarpTransformTypeErr -233 /* The warp transform type is illegal */ 833 #define ippStsExceededSizeErr -232 /* Requested size exceeded the maximum supported ROI size */ 834 #define ippStsWarpDirectionErr -231 /* The warp transform direction is illegal */ 835 #define ippStsFilterTypeErr -230 /* The filter type is incorrect or not supported */ 836 #define ippStsNormErr -229 /* The norm is incorrect or not supported */ 837 #define ippStsAlgTypeErr -228 /* Algorithm type is not supported. */ 838 #define ippStsMisalignedOffsetErr -227 /* The offset is not aligned with an element. */ 839 #define ippStsBorderErr -225 /* Illegal value for border type.*/ 840 #define ippStsDitherTypeErr -224 /* Dithering type is not supported. */ 841 #define ippStsUnknownStatusCodeErr -216 /* Unknown status code. */ 842 #define ippStsLzoBrokenStreamErr -214 /* LZO safe decompression function cannot decode LZO stream.*/ 843 #define ippStsRoundModeNotSupportedErr -213 /* Rounding mode is not supported. */ 844 #define ippStsDecimateFractionErr -212 /* Fraction in Decimate is not supported. */ 845 #define ippStsWeightErr -211 /* Incorrect value for weight. */ 846 #define ippStsQualityIndexErr -210 /* Cannot calculate the quality index for an image filled with a constant. */ 847 #define ippStsIIRPassbandRippleErr -209 /* Ripple in passband for Chebyshev1 design is less than zero, equal to zero, or greater than 29. */ 848 #define ippStsFilterFrequencyErr -208 /* Cutoff frequency of filter is less than zero, equal to zero, or greater than 0.5. */ 849 #define ippStsIIRGenOrderErr -206 /* Order of the IIR filter for design is less than 1, or greater than 12. */ 850 #define ippStsConvergeErr -205 /* The algorithm does not converge. */ 851 #define ippStsSizeMatchMatrixErr -204 /* The sizes of the source matrices are unsuitable. */ 852 #define ippStsCountMatrixErr -203 /* Count value is less than or equal to zero. */ 853 #define ippStsRoiShiftMatrixErr -202 /* RoiShift value is negative or not divisible by the size of the data type. */ 854 #define ippStsSrcDataErr -200 /* The source buffer contains unsupported data.*/ 855 #define ippStsSingularErr -195 /* Matrix is singular. */ 856 #define ippStsSparseErr -194 /* Positions of taps are not in ascending order, or are negative, or repetitive. */ 857 #define ippStsRegExpOptionsErr -190 /* RegExp: Options for the pattern are incorrect. */ 858 #define ippStsRegExpErr -189 /* RegExp: The structure pRegExpState contains incorrect data. */ 859 #define ippStsRegExpMatchLimitErr -188 /* RegExp: The match limit is exhausted. */ 860 #define ippStsRegExpQuantifierErr -187 /* RegExp: Incorrect quantifier. */ 861 #define ippStsRegExpGroupingErr -186 /* RegExp: Incorrect grouping. */ 862 #define ippStsRegExpBackRefErr -185 /* RegExp: Incorrect back reference. */ 863 #define ippStsRegExpChClassErr -184 /* RegExp: Incorrect character class. */ 864 #define ippStsRegExpMetaChErr -183 /* RegExp: Incorrect metacharacter. */ 865 #define ippStsStrideMatrixErr -182 /* Stride value is not positive or not divisible by the size of the data type. */ 866 #define ippStsNoiseRangeErr -125 /* Noise value for Wiener Filter is out of range. */ 867 #define ippStsNotEvenStepErr -108 /* Step value is not pixel multiple. */ 868 #define ippStsHistoNofLevelsErr -107 /* Number of levels for histogram is less than 2. */ 869 #define ippStsLUTNofLevelsErr -106 /* Number of levels for LUT is less than 2. */ 870 #define ippStsChannelOrderErr -60 /* Incorrect order of the destination channels. */ 871 #define ippStsDataTypeErr -59 /* Data type is incorrect or not supported. */ 872 #define ippStsQuadErr -58 /* The quadrangle is nonconvex or degenerates into triangle, line, or point */ 873 #define ippStsRectErr -57 /* Size of the rectangle region is less than, or equal to 1. */ 874 #define ippStsCoeffErr -56 /* Incorrect values for transformation coefficients. */ 875 #define ippStsNoiseValErr -55 /* Incorrect value for noise amplitude for dithering. */ 876 #define ippStsDitherLevelsErr -54 /* Number of dithering levels is out of range. */ 877 #define ippStsNumChannelsErr -53 /* Number of channels is incorrect, or not supported. */ 878 #define ippStsCOIErr -52 /* COI is out of range. */ 879 #define ippStsDivisorErr -51 /* Divisor is equal to zero, function is aborted. */ 880 #define ippStsAlphaTypeErr -50 /* Illegal type of image compositing operation. */ 881 #define ippStsGammaRangeErr -49 /* Gamma range bounds is less than, or equal to zero. */ 882 #define ippStsChannelErr -47 /* Illegal channel number. */ 883 #define ippStsToneMagnErr -46 /* Tone magnitude is less than, or equal to zero. */ 884 #define ippStsToneFreqErr -45 /* Tone frequency is negative, or greater than, or equal to 0.5. */ 885 #define ippStsTonePhaseErr -44 /* Tone phase is negative, or greater than, or equal to 2*PI. */ 886 #define ippStsTrnglMagnErr -43 /* Triangle magnitude is less than, or equal to zero. */ 887 #define ippStsTrnglFreqErr -42 /* Triangle frequency is negative, or greater than, or equal to 0.5. */ 888 #define ippStsTrnglPhaseErr -41 /* Triangle phase is negative, or greater than, or equal to 2*PI. */ 889 #define ippStsTrnglAsymErr -40 /* Triangle asymmetry is less than -PI, or greater than, or equal to PI. */ 890 #define ippStsHugeWinErr -39 /* Kaiser window is too big. */ 891 #define ippStsJaehneErr -38 /* Magnitude value is negative. */ 892 #define ippStsStrideErr -37 /* Stride value is less than the length of the row. */ 893 #define ippStsEpsValErr -36 /* Negative epsilon value. */ 894 #define ippStsWtOffsetErr -35 /* Invalid offset value for wavelet filter. */ 895 #define ippStsAnchorErr -34 /* Anchor point is outside the mask. */ 896 #define ippStsMaskSizeErr -33 /* Invalid mask size. */ 897 #define ippStsShiftErr -32 /* Shift value is less than zero. */ 898 #define ippStsSampleFactorErr -31 /* Sampling factor is less than,or equal to zero. */ 899 #define ippStsSamplePhaseErr -30 /* Phase value is out of range: 0 <= phase < factor. */ 900 #define ippStsFIRMRFactorErr -29 /* MR FIR sampling factor is less than, or equal to zero. */ 901 #define ippStsFIRMRPhaseErr -28 /* MR FIR sampling phase is negative, or greater than, or equal to the sampling factor. */ 902 #define ippStsRelFreqErr -27 /* Relative frequency value is out of range. */ 903 #define ippStsFIRLenErr -26 /* Length of a FIR filter is less than, or equal to zero. */ 904 #define ippStsIIROrderErr -25 /* Order of an IIR filter is not valid. */ 905 #define ippStsResizeFactorErr -24 /* Resize factor(s) is less than, or equal to zero. */ 906 #define ippStsInterpolationErr -23 /* Invalid interpolation mode. */ 907 #define ippStsMirrorFlipErr -22 /* Invalid flip mode. */ 908 #define ippStsMoment00ZeroErr -21 /* Moment value M(0,0) is too small to continue calculations. */ 909 #define ippStsThreshNegLevelErr -20 /* Negative value of the level in the threshold operation. */ 910 #define ippStsThresholdErr -19 /* Invalid threshold bounds. */ 911 #define ippStsFftFlagErr -18 /* Invalid value for the FFT flag parameter. */ 912 #define ippStsFftOrderErr -17 /* Invalid value for the FFT order parameter. */ 913 #define ippStsStepErr -16 /* Step value is not valid. */ 914 915 #ifndef IPPSTATUS_H__ 916 #define IPPSTATUS_H__ 917 typedef signed int IppStatus; 918 /* start of common with ippCrypto part - any changes MUST be done in both repositories - IPP & ippCrypto */ 919 #define ippStsLoadDynErr -221 /* Error when loading the dynamic library. */ 920 #define ippStsLengthErr -15 /* Incorrect value for string length. */ 921 #define ippStsNotSupportedModeErr -14 /* The requested mode is currently not supported. */ 922 #define ippStsContextMatchErr -13 /* Context parameter does not match the operation. */ 923 #define ippStsScaleRangeErr -12 /* Scale bounds are out of range. */ 924 #define ippStsOutOfRangeErr -11 /* Argument is out of range, or point is outside the image. */ 925 #define ippStsDivByZeroErr -10 /* An attempt to divide by zero. */ 926 #define ippStsMemAllocErr -9 /* Memory allocated for the operation is not enough.*/ 927 #define ippStsNullPtrErr -8 /* Null pointer error. */ 928 #define ippStsRangeErr -7 /* Incorrect values for bounds: the lower bound is greater than the upper bound. */ 929 #define ippStsSizeErr -6 /* Incorrect value for data size. */ 930 #define ippStsBadArgErr -5 /* Incorrect arg/param of the function. */ 931 #define ippStsNoMemErr -4 /* Not enough memory for the operation. */ 932 #define ippStsErr -2 /* Unknown/unspecified error */ 933 /* no errors */ 934 #define ippStsNoErr 0 /* No errors. */ 935 /* warnings */ 936 #define ippStsNoOperation 1 /* No operation has been executed. */ 937 #define ippStsDivByZero 2 /* Zero value(s) for the divisor in the Div function. */ 938 #define ippStsWaterfall 43 /* Cannot load required library, waterfall is used. */ 939 /* end of common with ippCrypto part */ 940 #endif /* IPPSTATUS_H__ */ 941 942 #define ippStsSqrtNegArg 3 /* Negative value(s) for the argument in the Sqrt function. */ 943 #define ippStsInvZero 4 /* INF result. Zero value was met by InvThresh with zero level. */ 944 #define ippStsEvenMedianMaskSize 5 /* Even size of the Median Filter mask was replaced with the odd one. */ 945 #define ippStsLnZeroArg 7 /* Zero value(s) for the argument in the Ln function. */ 946 #define ippStsLnNegArg 8 /* Negative value(s) for the argument in the Ln function. */ 947 #define ippStsNanArg 9 /* Argument value is not a number. */ 948 #define ippStsOverflow 12 /* Overflow in the operation. */ 949 #define ippStsUnderflow 17 /* Underflow in the operation. */ 950 #define ippStsSingularity 18 /* Singularity in the operation. */ 951 #define ippStsDomain 19 /* Argument is out of the function domain.*/ 952 #define ippStsNonIntelCpu 20 /* The target CPU is not Genuine Intel. */ 953 #define ippStsCpuMismatch 21 /* Cannot set the library for the given CPU. */ 954 #define ippStsOvermuchStrings 26 /* Number of destination strings is more than expected. */ 955 #define ippStsOverlongString 27 /* Length of one of the destination strings is more than expected. */ 956 #define ippStsAffineQuadChanged 28 /* 4th vertex of destination quad is not equal to customer's one. */ 957 #define ippStsWrongIntersectROI 29 /* ROI has no intersection with the source or destination ROI. No operation. */ 958 #define ippStsWrongIntersectQuad 30 /* Quadrangle has no intersection with the source or destination ROI. No operation. */ 959 #define ippStsSrcSizeLessExpected 32 /* DC: Size of the source buffer is less than the expected one.*/ 960 #define ippStsDstSizeLessExpected 33 /* DC: Size of the destination buffer is less than the expected one. */ 961 #define ippStsDoubleSize 35 /* Width or height of image is odd. */ 962 #define ippStsNotSupportedCpu 36 /* The CPU is not supported. */ 963 #define ippStsUnknownCacheSize 37 /* The CPU is supported, but the size of the cache is unknown. */ 964 #define ippStsSymKernelExpected 38 /* The Kernel is not symmetric. */ 965 #define ippStsEvenMedianWeight 39 /* Even weight of the Weighted Median Filter is replaced with the odd one. */ 966 #define ippStsWrongIntersectVOI 40 /* VOI has no intersection with the source or destination volume. No operation. */ 967 #define ippStsNoAntialiasing 46 /* The mode does not support antialiasing. */ 968 #define ippStsRepetitiveSrcData 47 /* DC: The source data is too repetitive.*/ 969 #define ippStsSizeWrn 48 /* The size does not allow to perform full operation. */ 970 #define ippStsFeatureNotSupported 49 /* Current CPU doesn't support at least 1 of the desired features. */ 971 #define ippStsUnknownFeature 50 /* At least one of the desired features is unknown. */ 972 #define ippStsFeaturesCombination 51 /* Wrong combination of features. */ 973 #define ippStsAccurateModeNotSupported 52/* Accurate mode is not supported. */ 974 975 #define ippStsOk ippStsNoErr 976 977 #endif 978 979 #define ippRectInfinite ippiWarpGetRectInfinite() 980 981 #ifdef __cplusplus 982 } 983 #endif 984 985 #endif /* __IPPICV_TYPES_H__ */ 986