From 14b006e808f4b74e3cba39a4f4b196dc1228bc65 Mon Sep 17 00:00:00 2001 From: Pavel Vlasov Date: Fri, 25 Sep 2015 17:50:15 +0300 Subject: [PATCH 1/2] IPP_VERSION_X100 was changed to: IPP_VERSION_MAJOR * 100 + IPP_VERSION_MINOR*10 + IPP_VERSION_UPDATE to manage changes between updates more easily. IPP_DISABLE_BLOCK was added to ease tracking of disabled IPP functions; --- modules/calib3d/src/stereosgbm.cpp | 4 +-- modules/core/include/opencv2/core/private.hpp | 13 +++++-- modules/core/src/convert.cpp | 4 +-- modules/core/src/copy.cpp | 4 +-- modules/core/src/dxt.cpp | 2 +- modules/core/src/matmul.cpp | 2 +- modules/core/src/matrix.cpp | 30 +++++++++------- modules/core/src/precomp.hpp | 2 +- modules/core/src/stat.cpp | 34 ++++++++++--------- modules/imgproc/perf/perf_houghLines.cpp | 2 +- modules/imgproc/src/canny.cpp | 2 +- modules/imgproc/src/color.cpp | 34 +++++++++---------- modules/imgproc/src/corner.cpp | 8 ++--- modules/imgproc/src/deriv.cpp | 4 +-- modules/imgproc/src/distransform.cpp | 4 +-- modules/imgproc/src/filter.cpp | 8 ++--- modules/imgproc/src/histogram.cpp | 1 - modules/imgproc/src/hough.cpp | 4 +-- modules/imgproc/src/imgwarp.cpp | 24 ++++++------- modules/imgproc/src/moments.cpp | 2 +- modules/imgproc/src/morph.cpp | 4 +-- modules/imgproc/src/pyramids.cpp | 8 ++--- modules/imgproc/src/samplers.cpp | 2 +- modules/imgproc/src/smooth.cpp | 10 +++--- modules/imgproc/src/thresh.cpp | 4 +-- modules/imgproc/test/ocl/test_color.cpp | 8 ++--- modules/imgproc/test/test_houghLines.cpp | 2 +- 27 files changed, 120 insertions(+), 106 deletions(-) diff --git a/modules/calib3d/src/stereosgbm.cpp b/modules/calib3d/src/stereosgbm.cpp index 7ea6ad54e..15b35fcf1 100644 --- a/modules/calib3d/src/stereosgbm.cpp +++ b/modules/calib3d/src/stereosgbm.cpp @@ -1691,7 +1691,7 @@ void filterSpecklesImpl(cv::Mat& img, int newVal, int maxSpeckleSize, int maxDif #ifdef HAVE_IPP static bool ipp_filterSpeckles(Mat &img, int maxSpeckleSize, int newVal, int maxDiff) { -#if IPP_VERSION_X100 >= 801 +#if IPP_VERSION_X100 >= 810 int type = img.type(); Ipp32s bufsize = 0; IppiSize roisize = { img.cols, img.rows }; @@ -1739,7 +1739,7 @@ void cv::filterSpeckles( InputOutputArray _img, double _newval, int maxSpeckleSi int newVal = cvRound(_newval), maxDiff = cvRound(_maxDiff); - CV_IPP_RUN(IPP_VERSION_X100 >= 801 && !__buf.needed() && (type == CV_8UC1 || type == CV_16SC1), ipp_filterSpeckles(img, maxSpeckleSize, newVal, maxDiff)); + CV_IPP_RUN(IPP_VERSION_X100 >= 810 && !__buf.needed() && (type == CV_8UC1 || type == CV_16SC1), ipp_filterSpeckles(img, maxSpeckleSize, newVal, maxDiff)); if (type == CV_8UC1) filterSpecklesImpl(img, newVal, maxSpeckleSize, maxDiff, _buf); diff --git a/modules/core/include/opencv2/core/private.hpp b/modules/core/include/opencv2/core/private.hpp index 0e8765be1..9f0f5701f 100644 --- a/modules/core/include/opencv2/core/private.hpp +++ b/modules/core/include/opencv2/core/private.hpp @@ -191,9 +191,16 @@ CV_EXPORTS void scalarToRawData(const cv::Scalar& s, void* buf, int type, int un \****************************************************************************************/ #ifdef HAVE_IPP -# include "ipp.h" +#include "ipp.h" -# define IPP_VERSION_X100 (IPP_VERSION_MAJOR * 100 + IPP_VERSION_MINOR) +#ifndef IPP_VERSION_UPDATE // prior to 7.1 +#define IPP_VERSION_UPDATE 0 +#endif + +#define IPP_VERSION_X100 (IPP_VERSION_MAJOR * 100 + IPP_VERSION_MINOR*10 + IPP_VERSION_UPDATE) + +// General define for ipp function disabling +#define IPP_DISABLE_BLOCK 0 #ifdef CV_MALLOC_ALIGN #undef CV_MALLOC_ALIGN @@ -235,7 +242,7 @@ static inline IppDataType ippiGetDataType(int depth) } #else -# define IPP_VERSION_X100 0 +#define IPP_VERSION_X100 0 #endif #ifdef HAVE_IPP_ICV_ONLY diff --git a/modules/core/src/convert.cpp b/modules/core/src/convert.cpp index fd07a7fc5..1070bd546 100644 --- a/modules/core/src/convert.cpp +++ b/modules/core/src/convert.cpp @@ -5682,7 +5682,7 @@ static bool ocl_LUT(InputArray _src, InputArray _lut, OutputArray _dst) #if defined(HAVE_IPP) namespace ipp { -#if 0 // there are no performance benefits (PR #2653) +#if IPP_DISABLE_BLOCK // there are no performance benefits (PR #2653) class IppLUTParallelBody_LUTC1 : public ParallelLoopBody { public: @@ -5850,7 +5850,7 @@ static bool ipp_lut(Mat &src, Mat &lut, Mat &dst) Ptr body; size_t elemSize1 = CV_ELEM_SIZE1(dst.depth()); -#if 0 // there are no performance benefits (PR #2653) +#if IPP_DISABLE_BLOCK // there are no performance benefits (PR #2653) if (lutcn == 1) { ParallelLoopBody* p = new ipp::IppLUTParallelBody_LUTC1(src, lut, dst, &ok); diff --git a/modules/core/src/copy.cpp b/modules/core/src/copy.cpp index 22b18710d..c463b70d4 100644 --- a/modules/core/src/copy.cpp +++ b/modules/core/src/copy.cpp @@ -377,7 +377,7 @@ Mat& Mat::operator = (const Scalar& s) if( is[0] == 0 && is[1] == 0 && is[2] == 0 && is[3] == 0 ) { -#if defined HAVE_IPP && !defined HAVE_IPP_ICV_ONLY && 0 +#if defined HAVE_IPP && !defined HAVE_IPP_ICV_ONLY && IPP_DISABLE_BLOCK CV_IPP_CHECK() { if (dims <= 2 || isContinuous()) @@ -1157,7 +1157,7 @@ void cv::copyMakeBorder( InputArray _src, OutputArray _dst, int top, int bottom, borderType &= ~BORDER_ISOLATED; -#if defined HAVE_IPP && 0 +#if defined HAVE_IPP && IPP_DISABLE_BLOCK CV_IPP_CHECK() { typedef IppStatus (CV_STDCALL * ippiCopyMakeBorder)(const void * pSrc, int srcStep, IppiSize srcRoiSize, void * pDst, diff --git a/modules/core/src/dxt.cpp b/modules/core/src/dxt.cpp index 315ab5b36..f6709e943 100644 --- a/modules/core/src/dxt.cpp +++ b/modules/core/src/dxt.cpp @@ -54,7 +54,7 @@ namespace cv # pragma warning(disable: 4748) #endif -#if IPP_VERSION_X100 >= 701 +#if IPP_VERSION_X100 >= 710 #define USE_IPP_DFT 1 #else #undef USE_IPP_DFT diff --git a/modules/core/src/matmul.cpp b/modules/core/src/matmul.cpp index c1eacfd21..cb639462f 100644 --- a/modules/core/src/matmul.cpp +++ b/modules/core/src/matmul.cpp @@ -2916,7 +2916,7 @@ dotProd_(const T* src1, const T* src2, int len) static double dotProd_8u(const uchar* src1, const uchar* src2, int len) { double r = 0; -#if ARITHM_USE_IPP && 0 +#if ARITHM_USE_IPP && IPP_DISABLE_BLOCK CV_IPP_CHECK() { if (0 <= ippiDotProd_8u64f_C1R(src1, (int)(len*sizeof(src1[0])), diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index cb3675e2c..9c05260e1 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -3782,18 +3782,24 @@ static IppSortFunc getSortFunc(int depth, bool sortDescending) { if (!sortDescending) return depth == CV_8U ? (IppSortFunc)ippsSortAscend_8u_I : - /*depth == CV_16U ? (IppSortFunc)ippsSortAscend_16u_I : +#if IPP_DISABLE_BLOCK + depth == CV_16U ? (IppSortFunc)ippsSortAscend_16u_I : depth == CV_16S ? (IppSortFunc)ippsSortAscend_16s_I : depth == CV_32S ? (IppSortFunc)ippsSortAscend_32s_I : depth == CV_32F ? (IppSortFunc)ippsSortAscend_32f_I : - depth == CV_64F ? (IppSortFunc)ippsSortAscend_64f_I :*/ 0; + depth == CV_64F ? (IppSortFunc)ippsSortAscend_64f_I : +#endif + 0; else return depth == CV_8U ? (IppSortFunc)ippsSortDescend_8u_I : - /*depth == CV_16U ? (IppSortFunc)ippsSortDescend_16u_I : +#if IPP_DISABLE_BLOCK + depth == CV_16U ? (IppSortFunc)ippsSortDescend_16u_I : depth == CV_16S ? (IppSortFunc)ippsSortDescend_16s_I : depth == CV_32S ? (IppSortFunc)ippsSortDescend_32s_I : depth == CV_32F ? (IppSortFunc)ippsSortDescend_32f_I : - depth == CV_64F ? (IppSortFunc)ippsSortDescend_64f_I :*/ 0; + depth == CV_64F ? (IppSortFunc)ippsSortDescend_64f_I : +#endif + 0; } static IppFlipFunc getFlipFunc(int depth) @@ -3908,7 +3914,7 @@ public: const _Tp* arr; }; -#if defined USE_IPP_SORT && 0 +#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK typedef IppStatus (CV_STDCALL *IppSortIndexFunc)(void *, int *, int); @@ -3955,7 +3961,7 @@ template static void sortIdx_( const Mat& src, Mat& dst, int flags ) bptr = (T*)buf; _iptr = (int*)ibuf; -#if defined USE_IPP_SORT && 0 +#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK int depth = src.depth(); IppSortIndexFunc ippFunc = 0; IppFlipFunc ippFlipFunc = 0; @@ -3984,27 +3990,27 @@ template static void sortIdx_( const Mat& src, Mat& dst, int flags ) for( j = 0; j < len; j++ ) iptr[j] = j; -#if defined USE_IPP_SORT && 0 +#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK if (sortRows || !ippFunc || ippFunc(ptr, iptr, len) < 0) #endif { -#if defined USE_IPP_SORT && 0 +#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK setIppErrorStatus(); #endif std::sort( iptr, iptr + len, LessThanIdx(ptr) ); if( sortDescending ) { -#if defined USE_IPP_SORT && 0 +#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK if (!ippFlipFunc || ippFlipFunc(iptr, len) < 0) #endif { -#if defined USE_IPP_SORT && 0 +#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK setIppErrorStatus(); #endif for( j = 0; j < len/2; j++ ) std::swap(iptr[j], iptr[len-1-j]); } -#if defined USE_IPP_SORT && 0 +#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK else { CV_IMPL_ADD(CV_IMPL_IPP); @@ -4012,7 +4018,7 @@ template static void sortIdx_( const Mat& src, Mat& dst, int flags ) #endif } } -#if defined USE_IPP_SORT && 0 +#if defined USE_IPP_SORT && IPP_DISABLE_BLOCK else { CV_IMPL_ADD(CV_IMPL_IPP); diff --git a/modules/core/src/precomp.hpp b/modules/core/src/precomp.hpp index 88064c85b..6123d3f3d 100644 --- a/modules/core/src/precomp.hpp +++ b/modules/core/src/precomp.hpp @@ -206,7 +206,7 @@ extern volatile bool USE_AVX2; enum { BLOCK_SIZE = 1024 }; -#if defined HAVE_IPP && (IPP_VERSION_MAJOR >= 7) +#if defined HAVE_IPP && (IPP_VERSION_X100 >= 700) #define ARITHM_USE_IPP 1 #else #define ARITHM_USE_IPP 0 diff --git a/modules/core/src/stat.cpp b/modules/core/src/stat.cpp index 3fce01d58..999640d94 100644 --- a/modules/core/src/stat.cpp +++ b/modules/core/src/stat.cpp @@ -1141,7 +1141,7 @@ static bool ocl_sum( InputArray _src, Scalar & res, int sum_op, InputArray _mask #ifdef HAVE_IPP static bool ipp_sum(Mat &src, Scalar &_res) { -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 int cn = src.channels(); size_t total_size = src.total(); int rows = src.size[0], cols = rows ? (int)(total_size/rows) : 0; @@ -1203,7 +1203,7 @@ cv::Scalar cv::sum( InputArray _src ) #endif Mat src = _src.getMat(); - CV_IPP_RUN(IPP_VERSION_MAJOR >= 7, ipp_sum(src, _res), _res); + CV_IPP_RUN(IPP_VERSION_X100 >= 700, ipp_sum(src, _res), _res); int k, cn = src.channels(), depth = src.depth(); SumFunc func = getSumFunc(depth); @@ -1645,7 +1645,7 @@ namespace cv { static bool ipp_meanStdDev(Mat& src, OutputArray _mean, OutputArray _sdv, Mat& mask) { -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 int cn = src.channels(); size_t total_size = src.total(); int rows = src.size[0], cols = rows ? (int)(total_size/rows) : 0; @@ -1717,7 +1717,7 @@ static bool ipp_meanStdDev(Mat& src, OutputArray _mean, OutputArray _sdv, Mat& m ippiMeanStdDevFuncC1 ippFuncC1 = type == CV_8UC1 ? (ippiMeanStdDevFuncC1)ippiMean_StdDev_8u_C1R : type == CV_16UC1 ? (ippiMeanStdDevFuncC1)ippiMean_StdDev_16u_C1R : -#if (IPP_VERSION_X100 >= 801) +#if (IPP_VERSION_X100 >= 810) type == CV_32FC1 ? (ippiMeanStdDevFuncC1)ippiMean_StdDev_32f_C1R ://Aug 2013: bug in IPP 7.1, 8.0 #endif 0; @@ -1761,7 +1761,7 @@ void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, Input Mat src = _src.getMat(), mask = _mask.getMat(); CV_Assert( mask.empty() || mask.type() == CV_8UC1 ); - CV_IPP_RUN(IPP_VERSION_MAJOR >= 7, ipp_meanStdDev(src, _mean, _sdv, mask)); + CV_IPP_RUN(IPP_VERSION_X100 >= 700, ipp_meanStdDev(src, _mean, _sdv, mask)); int k, cn = src.channels(), depth = src.depth(); @@ -2217,7 +2217,7 @@ static bool ocl_minMaxIdx( InputArray _src, double* minVal, double* maxVal, int* #ifdef HAVE_IPP static bool ipp_minMaxIdx( Mat &src, double* minVal, double* maxVal, int* minIdx, int* maxIdx, Mat &mask) { -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 int type = src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); size_t total_size = src.total(); int rows = src.size[0], cols = rows ? (int)(total_size/rows) : 0; @@ -2325,7 +2325,7 @@ void cv::minMaxIdx(InputArray _src, double* minVal, ocl_minMaxIdx(_src, minVal, maxVal, minIdx, maxIdx, _mask)) Mat src = _src.getMat(), mask = _mask.getMat(); - CV_IPP_RUN(IPP_VERSION_MAJOR >= 7, ipp_minMaxIdx(src, minVal, maxVal, minIdx, maxIdx, mask)) + CV_IPP_RUN(IPP_VERSION_X100 >= 700, ipp_minMaxIdx(src, minVal, maxVal, minIdx, maxIdx, mask)) MinMaxIdxFunc func = getMinmaxTab(depth); CV_Assert( func != 0 ); @@ -2658,7 +2658,7 @@ static bool ocl_norm( InputArray _src, int normType, InputArray _mask, double & #ifdef HAVE_IPP static bool ipp_norm(Mat &src, int normType, Mat &mask, double &result) { -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 int cn = src.channels(); size_t total_size = src.total(); int rows = src.size[0], cols = rows ? (int)(total_size/rows) : 0; @@ -2701,7 +2701,8 @@ static bool ipp_norm(Mat &src, int normType, Mat &mask, double &result) return true; } } - /*typedef IppStatus (CV_STDCALL* ippiMaskNormFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *); +#if IPP_DISABLED_BLOCK + typedef IppStatus (CV_STDCALL* ippiMaskNormFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *); ippiMaskNormFuncC3 ippFuncC3 = normType == NORM_INF ? (type == CV_8UC3 ? (ippiMaskNormFuncC3)ippiNorm_Inf_8u_C3CMR : @@ -2736,7 +2737,8 @@ static bool ipp_norm(Mat &src, int normType, Mat &mask, double &result) result = (normType == NORM_L2SQR ? (double)(norm * norm) : (double)norm); return true; } - }*/ + } +#endif } else { @@ -2762,7 +2764,7 @@ static bool ipp_norm(Mat &src, int normType, Mat &mask, double &result) type == CV_16UC3 ? (ippiNormFuncNoHint)ippiNorm_Inf_16u_C3R : type == CV_16UC4 ? (ippiNormFuncNoHint)ippiNorm_Inf_16u_C4R : type == CV_16SC1 ? (ippiNormFuncNoHint)ippiNorm_Inf_16s_C1R : -#if (IPP_VERSION_X100 >= 801) +#if (IPP_VERSION_X100 >= 810) type == CV_16SC3 ? (ippiNormFuncNoHint)ippiNorm_Inf_16s_C3R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768 type == CV_16SC4 ? (ippiNormFuncNoHint)ippiNorm_Inf_16s_C4R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768 #endif @@ -2842,7 +2844,7 @@ double cv::norm( InputArray _src, int normType, InputArray _mask ) #endif Mat src = _src.getMat(), mask = _mask.getMat(); - CV_IPP_RUN(IPP_VERSION_MAJOR >= 7, ipp_norm(src, normType, mask, _result), _result); + CV_IPP_RUN(IPP_VERSION_X100 >= 700, ipp_norm(src, normType, mask, _result), _result); int depth = src.depth(), cn = src.channels(); if( src.isContinuous() && mask.empty() ) @@ -3046,7 +3048,7 @@ namespace cv { static bool ipp_norm(InputArray _src1, InputArray _src2, int normType, InputArray _mask, double &result) { -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 Mat src1 = _src1.getMat(), src2 = _src2.getMat(), mask = _mask.getMat(); if( normType & CV_RELATIVE ) @@ -3260,7 +3262,7 @@ static bool ipp_norm(InputArray _src1, InputArray _src2, int normType, InputArra type == CV_16UC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_16u_C3R : type == CV_16UC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_16u_C4R : type == CV_16SC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_16s_C1R : -#if (IPP_VERSION_X100 >= 801) +#if (IPP_VERSION_X100 >= 810) type == CV_16SC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_16s_C3R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768 type == CV_16SC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_Inf_16s_C4R : //Aug 2013: problem in IPP 7.1, 8.0 : -32768 #endif @@ -3275,7 +3277,7 @@ static bool ipp_norm(InputArray _src1, InputArray _src2, int normType, InputArra type == CV_16UC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16u_C1R : type == CV_16UC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16u_C3R : type == CV_16UC4 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16u_C4R : -#if !(IPP_VERSION_X100 == 802 && (!defined(IPP_VERSION_UPDATE) || IPP_VERSION_UPDATE <= 1)) // Oct 2014: Accuracy issue with IPP 8.2 / 8.2.1 +#if !(IPP_VERSION_X100 == 820 || IPP_VERSION_X100 == 821) // Oct 2014: Accuracy issue with IPP 8.2 / 8.2.1 type == CV_16SC1 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16s_C1R : #endif type == CV_16SC3 ? (ippiNormDiffFuncNoHint)ippiNormDiff_L1_16s_C3R : @@ -3339,7 +3341,7 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m _result) #endif - CV_IPP_RUN(IPP_VERSION_MAJOR >= 7, ipp_norm(_src1, _src2, normType, _mask, _result), _result); + CV_IPP_RUN(IPP_VERSION_X100 >= 700, ipp_norm(_src1, _src2, normType, _mask, _result), _result); if( normType & CV_RELATIVE ) { diff --git a/modules/imgproc/perf/perf_houghLines.cpp b/modules/imgproc/perf/perf_houghLines.cpp index a6e7e7340..6dfaa56aa 100644 --- a/modules/imgproc/perf/perf_houghLines.cpp +++ b/modules/imgproc/perf/perf_houghLines.cpp @@ -37,7 +37,7 @@ PERF_TEST_P(Image_RhoStep_ThetaStep_Threshold, HoughLines, TEST_CYCLE() HoughLines(image, lines, rhoStep, thetaStep, threshold); transpose(lines, lines); -#if (0 && defined(HAVE_IPP) && !defined(HAVE_IPP_ICV_ONLY) && IPP_VERSION_X100 >= 801) +#if (0 && defined(HAVE_IPP) && !defined(HAVE_IPP_ICV_ONLY) && IPP_VERSION_X100 >= 810) SANITY_CHECK_NOTHING(); #else SANITY_CHECK(lines); diff --git a/modules/imgproc/src/canny.cpp b/modules/imgproc/src/canny.cpp index 77aeb1ef3..670d1486c 100644 --- a/modules/imgproc/src/canny.cpp +++ b/modules/imgproc/src/canny.cpp @@ -44,7 +44,7 @@ #include "opencl_kernels_imgproc.hpp" -#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) +#if defined (HAVE_IPP) && (IPP_VERSION_X100 >= 700) #define USE_IPP_CANNY 1 #else #define USE_IPP_CANNY 0 diff --git a/modules/imgproc/src/color.cpp b/modules/imgproc/src/color.cpp index 3c3e51255..6020eaf77 100644 --- a/modules/imgproc/src/color.cpp +++ b/modules/imgproc/src/color.cpp @@ -96,7 +96,7 @@ #define CV_DESCALE(x,n) (((x) + (1 << ((n)-1))) >> (n)) -#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) +#if defined (HAVE_IPP) && (IPP_VERSION_X100 >= 700) #define MAX_IPP8u 255 #define MAX_IPP16u 65535 #define MAX_IPP32f 1.0 @@ -200,7 +200,7 @@ void CvtColorLoop(const Mat& src, Mat& dst, const Cvt& cvt) parallel_for_(Range(0, src.rows), CvtColorLoop_Invoker(src, dst, cvt), src.total()/(double)(1<<16) ); } -#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) +#if defined (HAVE_IPP) && (IPP_VERSION_X100 >= 700) typedef IppStatus (CV_STDCALL* ippiReorderFunc)(const void *, int, void *, int, IppiSize, const int *); typedef IppStatus (CV_STDCALL* ippiGeneralFunc)(const void *, int, void *, int, IppiSize); @@ -305,7 +305,7 @@ static ippiReorderFunc ippiSwapChannelsC3RTab[] = 0, (ippiReorderFunc)ippiSwapChannels_32f_C3R, 0, 0 }; -#if IPP_VERSION_X100 >= 801 +#if IPP_VERSION_X100 >= 810 static ippiReorderFunc ippiSwapChannelsC4RTab[] = { (ippiReorderFunc)ippiSwapChannels_8u_C4R, 0, (ippiReorderFunc)ippiSwapChannels_16u_C4R, 0, @@ -379,7 +379,7 @@ static ippiGeneralFunc ippiHLS2RGBTab[] = 0, (ippiGeneralFunc)ippiHLSToRGB_32f_C3R, 0, 0 }; -#if !defined(HAVE_IPP_ICV_ONLY) && 0 +#if !defined(HAVE_IPP_ICV_ONLY) && IPP_DISABLE_BLOCK static ippiGeneralFunc ippiRGBToLUVTab[] = { (ippiGeneralFunc)ippiRGBToLUV_8u_C3R, 0, (ippiGeneralFunc)ippiRGBToLUV_16u_C3R, 0, @@ -7336,7 +7336,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) switch( code ) { -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 case CV_BGR2BGRA: case CV_RGB2BGRA: case CV_BGRA2BGR: case CV_RGBA2BGR: case CV_RGB2BGR: case CV_BGRA2RGBA: CV_Assert( scn == 3 || scn == 4 ); @@ -7369,7 +7369,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) if( CvtColorIPPLoopCopy(src, dst, IPPReorderFunctor(ippiSwapChannelsC3RTab[depth], 2, 1, 0)) ) return true; } -#if IPP_VERSION_X100 >= 801 +#if IPP_VERSION_X100 >= 810 else if( code == CV_RGBA2BGRA ) { if( CvtColorIPPLoopCopy(src, dst, IPPReorderFunctor(ippiSwapChannelsC4RTab[depth], 2, 1, 0)) ) @@ -7379,7 +7379,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) return false; #endif -#if 0 // breaks OCL accuracy tests +#if IPP_DISABLE_BLOCK // breaks OCL accuracy tests case CV_BGR2BGR565: case CV_BGR2BGR555: case CV_RGB2BGR565: case CV_RGB2BGR555: case CV_BGRA2BGR565: case CV_BGRA2BGR555: case CV_RGBA2BGR565: case CV_RGBA2BGR555: CV_Assert( (scn == 3 || scn == 4) && depth == CV_8U ); @@ -7450,7 +7450,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) CV_SUPPRESS_DEPRECATED_END return false; -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 case CV_BGR2GRAY: case CV_BGRA2GRAY: case CV_RGB2GRAY: case CV_RGBA2GRAY: CV_Assert( scn == 3 || scn == 4 ); _dst.create(sz, CV_MAKETYPE(depth, 1)); @@ -7497,7 +7497,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) return false; #endif -#if 0 +#if IPP_DISABLE_BLOCK case CV_BGR2YCrCb: case CV_RGB2YCrCb: case CV_BGR2YUV: case CV_RGB2YUV: { @@ -7537,7 +7537,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) } #endif -#if 0 +#if IPP_DISABLE_BLOCK case CV_YCrCb2BGR: case CV_YCrCb2RGB: case CV_YUV2BGR: case CV_YUV2RGB: { @@ -7578,7 +7578,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) } #endif -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 case CV_BGR2XYZ: case CV_RGB2XYZ: CV_Assert( scn == 3 || scn == 4 ); _dst.create(sz, CV_MAKETYPE(depth, 3)); @@ -7607,7 +7607,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) return false; #endif -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 case CV_XYZ2BGR: case CV_XYZ2RGB: if( dcn <= 0 ) dcn = 3; CV_Assert( scn == 3 && (dcn == 3 || dcn == 4) ); @@ -7638,7 +7638,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) return false; #endif -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 case CV_BGR2HSV: case CV_RGB2HSV: case CV_BGR2HSV_FULL: case CV_RGB2HSV_FULL: case CV_BGR2HLS: case CV_RGB2HLS: case CV_BGR2HLS_FULL: case CV_RGB2HLS_FULL: { @@ -7648,7 +7648,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) if( depth == CV_8U || depth == CV_16U ) { -#if 0 // breaks OCL accuracy tests +#if IPP_DISABLE_BLOCK // breaks OCL accuracy tests if( code == CV_BGR2HSV_FULL && scn == 3 ) { if( CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC3RTab[depth], ippiRGB2HSVTab[depth], 2, 1, 0, depth)) ) @@ -7695,7 +7695,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) } #endif -#if IPP_VERSION_MAJOR >= 7 +#if IPP_VERSION_X100 >= 700 case CV_HSV2BGR: case CV_HSV2RGB: case CV_HSV2BGR_FULL: case CV_HSV2RGB_FULL: case CV_HLS2BGR: case CV_HLS2RGB: case CV_HLS2BGR_FULL: case CV_HLS2RGB_FULL: { @@ -7751,7 +7751,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) } #endif -#if 0 +#if IPP_DISABLE_BLOCK case CV_BGR2Lab: case CV_RGB2Lab: case CV_LBGR2Lab: case CV_LRGB2Lab: case CV_BGR2Luv: case CV_RGB2Luv: case CV_LBGR2Luv: case CV_LRGB2Luv: { @@ -7813,7 +7813,7 @@ static bool ipp_cvtColor( Mat &src, OutputArray _dst, int code, int dcn ) } #endif -#if 0 +#if IPP_DISABLE_BLOCK case CV_Lab2BGR: case CV_Lab2RGB: case CV_Lab2LBGR: case CV_Lab2LRGB: case CV_Luv2BGR: case CV_Luv2RGB: case CV_Luv2LBGR: case CV_Luv2LRGB: { diff --git a/modules/imgproc/src/corner.cpp b/modules/imgproc/src/corner.cpp index 9dba9b4c6..f4b6854b7 100644 --- a/modules/imgproc/src/corner.cpp +++ b/modules/imgproc/src/corner.cpp @@ -528,7 +528,7 @@ namespace cv { static bool ipp_cornerMinEigenVal( InputArray _src, OutputArray _dst, int blockSize, int ksize, int borderType ) { -#if IPP_VERSION_MAJOR >= 8 +#if IPP_VERSION_X100 >= 800 Mat src = _src.getMat(); _dst.create( src.size(), CV_32FC1 ); Mat dst = _dst.getMat(); @@ -608,7 +608,7 @@ void cv::cornerMinEigenVal( InputArray _src, OutputArray _dst, int blockSize, in int borderTypeNI = borderType & ~BORDER_ISOLATED; #endif CV_IPP_RUN(((borderTypeNI == BORDER_REPLICATE && (!_src.isSubmatrix() || isolated)) && - (kerSize == 3 || kerSize == 5) && (blockSize == 3 || blockSize == 5)) && IPP_VERSION_MAJOR >= 8, + (kerSize == 3 || kerSize == 5) && (blockSize == 3 || blockSize == 5)) && IPP_VERSION_X100 >= 800, ipp_cornerMinEigenVal( _src, _dst, blockSize, ksize, borderType )); @@ -625,7 +625,7 @@ namespace cv { static bool ipp_cornerHarris( InputArray _src, OutputArray _dst, int blockSize, int ksize, double k, int borderType ) { -#if IPP_VERSION_X100 >= 801 && 0 +#if IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK Mat src = _src.getMat(); _dst.create( src.size(), CV_32FC1 ); Mat dst = _dst.getMat(); @@ -692,7 +692,7 @@ void cv::cornerHarris( InputArray _src, OutputArray _dst, int blockSize, int ksi #endif CV_IPP_RUN(((ksize == 3 || ksize == 5) && (_src.type() == CV_8UC1 || _src.type() == CV_32FC1) && (borderTypeNI == BORDER_CONSTANT || borderTypeNI == BORDER_REPLICATE) && CV_MAT_CN(_src.type()) == 1 && - (!_src.isSubmatrix() || isolated)) && IPP_VERSION_X100 >= 801 && 0, ipp_cornerHarris( _src, _dst, blockSize, ksize, k, borderType )); + (!_src.isSubmatrix() || isolated)) && IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK, ipp_cornerHarris( _src, _dst, blockSize, ksize, k, borderType )); Mat src = _src.getMat(); diff --git a/modules/imgproc/src/deriv.cpp b/modules/imgproc/src/deriv.cpp index 0807fe6d2..c263b6914 100644 --- a/modules/imgproc/src/deriv.cpp +++ b/modules/imgproc/src/deriv.cpp @@ -188,7 +188,7 @@ namespace cv { static bool IPPDerivScharr(InputArray _src, OutputArray _dst, int ddepth, int dx, int dy, double scale, double delta, int borderType) { -#if IPP_VERSION_X100 >= 801 +#if IPP_VERSION_X100 >= 810 if ((0 > dx) || (0 > dy) || (1 != dx + dy)) return false; if (fabs(delta) > FLT_EPSILON) @@ -382,7 +382,7 @@ static bool IPPDerivSobel(InputArray _src, OutputArray _dst, int ddepth, int dx, if (src.type() == CV_32F && dst.type() == CV_32F) { -#if 0 +#if IPP_DISABLE_BLOCK if ((dx == 1) && (dy == 0)) { if (0 > ippiFilterSobelNegVertGetBufferSize_32f_C1R(roi, kernel, &bufSize)) diff --git a/modules/imgproc/src/distransform.cpp b/modules/imgproc/src/distransform.cpp index a6491086e..cde6ec4eb 100644 --- a/modules/imgproc/src/distransform.cpp +++ b/modules/imgproc/src/distransform.cpp @@ -785,7 +785,7 @@ void cv::distanceTransform( InputArray _src, OutputArray _dst, OutputArray _labe { if( maskSize == CV_DIST_MASK_3 ) { -#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) +#if defined (HAVE_IPP) && (IPP_VERSION_X100 >= 700) CV_IPP_CHECK() { IppiSize roi = { src.cols, src.rows }; @@ -802,7 +802,7 @@ void cv::distanceTransform( InputArray _src, OutputArray _dst, OutputArray _labe } else { -#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) +#if defined (HAVE_IPP) && (IPP_VERSION_X100 >= 700) CV_IPP_CHECK() { IppiSize roi = { src.cols, src.rows }; diff --git a/modules/imgproc/src/filter.cpp b/modules/imgproc/src/filter.cpp index 10c8240a9..587c50ba3 100644 --- a/modules/imgproc/src/filter.cpp +++ b/modules/imgproc/src/filter.cpp @@ -47,7 +47,7 @@ Base Image Filter \****************************************************************************************/ -#if IPP_VERSION_X100 >= 701 +#if IPP_VERSION_X100 >= 710 #define USE_IPP_SEP_FILTERS 1 #else #undef USE_IPP_SEP_FILTERS @@ -1415,14 +1415,14 @@ struct RowVec_32f { kernel = _kernel; haveSSE = checkHardwareSupport(CV_CPU_SSE); -#if defined USE_IPP_SEP_FILTERS && 0 +#if defined USE_IPP_SEP_FILTERS && IPP_DISABLE_BLOCK bufsz = -1; #endif } int operator()(const uchar* _src, uchar* _dst, int width, int cn) const { -#if defined USE_IPP_SEP_FILTERS && 0 +#if defined USE_IPP_SEP_FILTERS && IPP_DISABLE_BLOCK CV_IPP_CHECK() { int ret = ippiOperator(_src, _dst, width, cn); @@ -1463,7 +1463,7 @@ struct RowVec_32f Mat kernel; bool haveSSE; -#if defined USE_IPP_SEP_FILTERS && 0 +#if defined USE_IPP_SEP_FILTERS && IPP_DISABLE_BLOCK private: mutable int bufsz; int ippiOperator(const uchar* _src, uchar* _dst, int width, int cn) const diff --git a/modules/imgproc/src/histogram.cpp b/modules/imgproc/src/histogram.cpp index 4ae4a4d9d..1bb9ec5e5 100644 --- a/modules/imgproc/src/histogram.cpp +++ b/modules/imgproc/src/histogram.cpp @@ -1176,7 +1176,6 @@ calcHist_8u( std::vector& _ptrs, const std::vector& _deltas, } #ifdef HAVE_IPP - class IPPCalcHistInvoker : public ParallelLoopBody { diff --git a/modules/imgproc/src/hough.cpp b/modules/imgproc/src/hough.cpp index c5bb2e20e..18a030841 100644 --- a/modules/imgproc/src/hough.cpp +++ b/modules/imgproc/src/hough.cpp @@ -96,7 +96,7 @@ HoughLinesStandard( const Mat& img, float rho, float theta, int numangle = cvRound((max_theta - min_theta) / theta); int numrho = cvRound(((width + height) * 2 + 1) / rho); -#if (0 && defined(HAVE_IPP) && !defined(HAVE_IPP_ICV_ONLY) && IPP_VERSION_X100 >= 801) +#if defined HAVE_IPP && !defined(HAVE_IPP_ICV_ONLY) && IPP_VERSION_X100 >= 810 && IPP_DISABLED_BLOCK CV_IPP_CHECK() { IppiSize srcSize = { width, height }; @@ -429,7 +429,7 @@ HoughLinesProbabilistic( Mat& image, int numangle = cvRound(CV_PI / theta); int numrho = cvRound(((width + height) * 2 + 1) / rho); -#if (0 && defined(HAVE_IPP) && !defined(HAVE_IPP_ICV_ONLY) && IPP_VERSION_X100 >= 801) +#if defined HAVE_IPP && !defined(HAVE_IPP_ICV_ONLY) && IPP_VERSION_X100 >= 810 && IPP_DISABLED_BLOCK CV_IPP_CHECK() { IppiSize srcSize = { width, height }; diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp index 433e38f70..9c16f91a2 100644 --- a/modules/imgproc/src/imgwarp.cpp +++ b/modules/imgproc/src/imgwarp.cpp @@ -56,13 +56,13 @@ static IppStatus sts = ippInit(); namespace cv { -#if IPP_VERSION_X100 >= 701 +#if IPP_VERSION_X100 >= 710 typedef IppStatus (CV_STDCALL* ippiResizeFunc)(const void*, int, const void*, int, IppiPoint, IppiSize, IppiBorderType, void*, void*, Ipp8u*); typedef IppStatus (CV_STDCALL* ippiResizeGetBufferSize)(void*, IppiSize, Ipp32u, int*); typedef IppStatus (CV_STDCALL* ippiResizeGetSrcOffset)(void*, IppiPoint, IppiPoint*); #endif -#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) && 0 +#if defined (HAVE_IPP) && (IPP_VERSION_X100 >= 700) && IPP_DISABLE_BLOCK typedef IppStatus (CV_STDCALL* ippiSetFunc)(const void*, void *, int, IppiSize); typedef IppStatus (CV_STDCALL* ippiWarpPerspectiveFunc)(const void*, IppiSize, int, IppiRect, void *, int, IppiRect, double [3][3], int); typedef IppStatus (CV_STDCALL* ippiWarpAffineBackFunc)(const void*, IppiSize, int, IppiRect, void *, int, IppiRect, double [2][3], int); @@ -2745,7 +2745,7 @@ static int computeResizeAreaTab( int ssize, int dsize, int cn, double scale, Dec getBufferSizeFunc = (ippiResizeGetBufferSize)ippiResizeGetBufferSize_##TYPE; \ getSrcOffsetFunc = (ippiResizeGetSrcOffset)ippiResizeGetSrcOffset_##TYPE; -#if IPP_VERSION_X100 >= 701 +#if IPP_VERSION_X100 >= 710 class IPPresizeInvoker : public ParallelLoopBody { @@ -2765,7 +2765,7 @@ public: switch (type) { -#if 0 // disabled since it breaks tests for CascadeClassifier +#if IPP_DISABLE_BLOCK // disabled since it breaks tests for CascadeClassifier case CV_8UC1: SET_IPP_RESIZE_PTR(8u,C1); break; case CV_8UC3: SET_IPP_RESIZE_PTR(8u,C3); break; case CV_8UC4: SET_IPP_RESIZE_PTR(8u,C4); break; @@ -3092,7 +3092,7 @@ static bool ocl_resize( InputArray _src, OutputArray _dst, Size dsize, #endif -#if IPP_VERSION_X100 >= 701 +#if IPP_VERSION_X100 >= 710 static bool ipp_resize_mt( Mat src, Mat dst, double inv_scale_x, double inv_scale_y, int interpolation) { @@ -3278,7 +3278,7 @@ void cv::resize( InputArray _src, OutputArray _dst, Size dsize, double ex = fabs((double)dsize.width / _src.cols() - inv_scale_x) / inv_scale_x; double ey = fabs((double)dsize.height / _src.rows() - inv_scale_y) / inv_scale_y; #endif - CV_IPP_RUN(IPP_VERSION_X100 >= 701 && ((ex < IPP_RESIZE_EPS && ey < IPP_RESIZE_EPS && depth != CV_64F) || (ex == 0 && ey == 0 && depth == CV_64F)) && + CV_IPP_RUN(IPP_VERSION_X100 >= 710 && ((ex < IPP_RESIZE_EPS && ey < IPP_RESIZE_EPS && depth != CV_64F) || (ex == 0 && ey == 0 && depth == CV_64F)) && (interpolation == INTER_LINEAR || interpolation == INTER_CUBIC) && !(interpolation == INTER_LINEAR && is_area_fast && iscale_x == 2 && iscale_y == 2 && depth == CV_8U) && mode >= 0 && (cn == 1 || cn == 3 || cn == 4) && (depth == CV_16U || depth == CV_16S || depth == CV_32F || @@ -4576,7 +4576,7 @@ static bool ocl_remap(InputArray _src, OutputArray _dst, InputArray _map1, Input #endif -#if IPP_VERSION_X100 >= 0 && !defined HAVE_IPP_ICV_ONLY && 0 +#if defined HAVE_IPP && !defined HAVE_IPP_ICV_ONLY && IPP_DISABLE_BLOCK typedef IppStatus (CV_STDCALL * ippiRemap)(const void * pSrc, IppiSize srcSize, int srcStep, IppiRect srcRoi, const Ipp32f* pxMap, int xMapStep, const Ipp32f* pyMap, int yMapStep, @@ -4684,7 +4684,7 @@ void cv::remap( InputArray _src, OutputArray _dst, int type = src.type(), depth = CV_MAT_DEPTH(type); -#if IPP_VERSION_X100 >= 0 && !defined HAVE_IPP_ICV_ONLY && 0 +#if defined HAVE_IPP && !defined HAVE_IPP_ICV_ONLY && IPP_DISABLE_BLOCK CV_IPP_CHECK() { if ((interpolation == INTER_LINEAR || interpolation == INTER_CUBIC || interpolation == INTER_NEAREST) && @@ -5410,7 +5410,7 @@ private: }; -#if defined (HAVE_IPP) && IPP_VERSION_MAJOR * 100 + IPP_VERSION_MINOR >= 801 && 0 +#if defined (HAVE_IPP) && IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK class IPPWarpAffineInvoker : public ParallelLoopBody { @@ -5615,7 +5615,7 @@ void cv::warpAffine( InputArray _src, OutputArray _dst, const int AB_BITS = MAX(10, (int)INTER_BITS); const int AB_SCALE = 1 << AB_BITS; -#if defined (HAVE_IPP) && IPP_VERSION_MAJOR * 100 + IPP_VERSION_MINOR >= 801 && 0 +#if defined (HAVE_IPP) && IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK CV_IPP_CHECK() { int type = src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); @@ -6039,7 +6039,7 @@ private: }; -#if defined (HAVE_IPP) && IPP_VERSION_MAJOR * 100 + IPP_VERSION_MINOR >= 801 && 0 +#if defined (HAVE_IPP) && IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK class IPPWarpPerspectiveInvoker : public ParallelLoopBody { @@ -6124,7 +6124,7 @@ void cv::warpPerspective( InputArray _src, OutputArray _dst, InputArray _M0, #endif -#if defined (HAVE_IPP) && IPP_VERSION_MAJOR * 100 + IPP_VERSION_MINOR >= 801 && 0 +#if defined (HAVE_IPP) && IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK CV_IPP_CHECK() { int type = src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); diff --git a/modules/imgproc/src/moments.cpp b/modules/imgproc/src/moments.cpp index 3b86be234..31da20110 100644 --- a/modules/imgproc/src/moments.cpp +++ b/modules/imgproc/src/moments.cpp @@ -577,7 +577,7 @@ cv::Moments cv::moments( InputArray _src, bool binary ) if( cn > 1 ) CV_Error( CV_StsBadArg, "Invalid image type (must be single-channel)" ); -#if IPP_VERSION_X100 >= 801 && 0 +#if IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK CV_IPP_CHECK() { if (!binary) diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index 822df8e47..dfb9d4755 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -1140,7 +1140,7 @@ private: static bool ipp_MorphReplicate(int op, const Mat &src, Mat &dst, const Mat &kernel, const Size& ksize, const Point &anchor, bool rectKernel) { -#if IPP_VERSION_X100 >= 801 +#if IPP_VERSION_X100 >= 810 int type = src.type(); const Mat* _src = &src; Mat temp; @@ -1715,7 +1715,7 @@ static void morphOp( int op, InputArray _src, OutputArray _dst, iterations = 1; } - CV_IPP_RUN(IPP_VERSION_X100 >= 801, ipp_MorphOp(op, _src, _dst, kernel, anchor, iterations, borderType, borderValue)) + CV_IPP_RUN(IPP_VERSION_X100 >= 810, ipp_MorphOp(op, _src, _dst, kernel, anchor, iterations, borderType, borderValue)) Mat src = _src.getMat(); _dst.create( src.size(), src.type() ); diff --git a/modules/imgproc/src/pyramids.cpp b/modules/imgproc/src/pyramids.cpp index a0d2d51c5..d9395e0b5 100644 --- a/modules/imgproc/src/pyramids.cpp +++ b/modules/imgproc/src/pyramids.cpp @@ -1171,7 +1171,7 @@ namespace cv { static bool ipp_pyrdown( InputArray _src, OutputArray _dst, const Size& _dsz, int borderType ) { -#if IPP_VERSION_X100 >= 801 && 0 +#if IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK Size dsz = _dsz.area() == 0 ? Size((_src.cols() + 1)/2, (_src.rows() + 1)/2) : _dsz; bool isolated = (borderType & BORDER_ISOLATED) != 0; int borderTypeNI = borderType & ~BORDER_ISOLATED; @@ -1276,7 +1276,7 @@ namespace cv { static bool ipp_pyrup( InputArray _src, OutputArray _dst, const Size& _dsz, int borderType ) { -#if IPP_VERSION_X100 >= 801 && 0 +#if IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK Size sz = _src.dims() <= 2 ? _src.size() : Size(); Size dsz = _dsz.area() == 0 ? Size(_src.cols()*2, _src.rows()*2) : _dsz; @@ -1380,7 +1380,7 @@ namespace cv { static bool ipp_buildpyramid( InputArray _src, OutputArrayOfArrays _dst, int maxlevel, int borderType ) { -#if IPP_VERSION_X100 >= 801 && 0 +#if IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK Mat src = _src.getMat(); _dst.create( maxlevel + 1, 1, 0 ); _dst.getMatRef(0) = src; @@ -1508,7 +1508,7 @@ void cv::buildPyramid( InputArray _src, OutputArrayOfArrays _dst, int maxlevel, int i=1; - CV_IPP_RUN(((IPP_VERSION_X100 >= 801 && 0) && ((borderType & ~BORDER_ISOLATED) == BORDER_DEFAULT && (!_src.isSubmatrix() || ((borderType & BORDER_ISOLATED) != 0)))), + CV_IPP_RUN(((IPP_VERSION_X100 >= 810 && IPP_DISABLE_BLOCK) && ((borderType & ~BORDER_ISOLATED) == BORDER_DEFAULT && (!_src.isSubmatrix() || ((borderType & BORDER_ISOLATED) != 0)))), ipp_buildpyramid( _src, _dst, maxlevel, borderType)); for( ; i <= maxlevel; i++ ) diff --git a/modules/imgproc/src/samplers.cpp b/modules/imgproc/src/samplers.cpp index c592138ea..c89bd32e0 100644 --- a/modules/imgproc/src/samplers.cpp +++ b/modules/imgproc/src/samplers.cpp @@ -374,7 +374,7 @@ void cv::getRectSubPix( InputArray _image, Size patchSize, Point2f center, _patch.create(patchSize, CV_MAKETYPE(ddepth, cn)); Mat patch = _patch.getMat(); -#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) +#if defined (HAVE_IPP) && (IPP_VERSION_X100 >= 700) CV_IPP_CHECK() { typedef IppStatus (CV_STDCALL *ippiGetRectSubPixFunc)( const void* src, int src_step, diff --git a/modules/imgproc/src/smooth.cpp b/modules/imgproc/src/smooth.cpp index 104228b47..19b0bf2d2 100644 --- a/modules/imgproc/src/smooth.cpp +++ b/modules/imgproc/src/smooth.cpp @@ -1668,7 +1668,7 @@ static bool ipp_GaussianBlur( InputArray _src, OutputArray _dst, Size ksize, double sigma1, double sigma2, int borderType ) { -#if IPP_VERSION_X100 >= 801 +#if IPP_VERSION_X100 >= 810 int type = _src.type(); Size size = _src.size(); @@ -2707,7 +2707,7 @@ namespace cv { static bool ipp_medianFilter( InputArray _src0, OutputArray _dst, int ksize ) { -#if IPP_VERSION_X100 >= 801 +#if IPP_VERSION_X100 >= 810 Mat src0 = _src0.getMat(); _dst.create( src0.size(), src0.type() ); Mat dst = _dst.getMat(); @@ -2778,7 +2778,7 @@ void cv::medianBlur( InputArray _src0, OutputArray _dst, int ksize ) _dst.create( src0.size(), src0.type() ); Mat dst = _dst.getMat(); - CV_IPP_RUN(IPP_VERSION_X100 >= 801 && ksize <= 5, ipp_medianFilter(_src0,_dst, ksize)); + CV_IPP_RUN(IPP_VERSION_X100 >= 810 && ksize <= 5, ipp_medianFilter(_src0,_dst, ksize)); #ifdef HAVE_TEGRA_OPTIMIZATION if (tegra::useTegra() && tegra::medianBlur(src0, dst, ksize)) @@ -2996,7 +2996,7 @@ private: float *space_weight, *color_weight; }; -#if defined (HAVE_IPP) && !defined(HAVE_IPP_ICV_ONLY) && 0 +#if defined (HAVE_IPP) && !defined(HAVE_IPP_ICV_ONLY) && IPP_DISABLE_BLOCK class IPPBilateralFilter_8u_Invoker : public ParallelLoopBody { @@ -3166,7 +3166,7 @@ bilateralFilter_8u( const Mat& src, Mat& dst, int d, Mat temp; copyMakeBorder( src, temp, radius, radius, radius, radius, borderType ); -#if defined HAVE_IPP && (IPP_VERSION_MAJOR >= 7) && 0 +#if defined HAVE_IPP && (IPP_VERSION_X100 >= 700) && IPP_DISABLE_BLOCK CV_IPP_CHECK() { if( cn == 1 ) diff --git a/modules/imgproc/src/thresh.cpp b/modules/imgproc/src/thresh.cpp index 66665f978..3aaf38bd1 100644 --- a/modules/imgproc/src/thresh.cpp +++ b/modules/imgproc/src/thresh.cpp @@ -907,7 +907,7 @@ thresh_32f( const Mat& _src, Mat& _dst, float thresh, float maxval, int type ) #ifdef HAVE_IPP static bool ipp_getThreshVal_Otsu_8u( const unsigned char* _src, int step, Size size, unsigned char &thresh) { -#if IPP_VERSION_X100 >= 801 && !HAVE_ICV +#if IPP_VERSION_X100 >= 810 && !HAVE_ICV int ippStatus = -1; IppiSize srcSize = { size.width, size.height }; CV_SUPPRESS_DEPRECATED_START @@ -937,7 +937,7 @@ getThreshVal_Otsu_8u( const Mat& _src ) #ifdef HAVE_IPP unsigned char thresh; - CV_IPP_RUN(IPP_VERSION_X100 >= 801 && !HAVE_ICV, ipp_getThreshVal_Otsu_8u(_src.ptr(), step, size, thresh), thresh); + CV_IPP_RUN(IPP_VERSION_X100 >= 810 && !HAVE_ICV, ipp_getThreshVal_Otsu_8u(_src.ptr(), step, size, thresh), thresh); #endif const int N = 256; diff --git a/modules/imgproc/test/ocl/test_color.cpp b/modules/imgproc/test/ocl/test_color.cpp index 6e117cdd5..160c03534 100644 --- a/modules/imgproc/test/ocl/test_color.cpp +++ b/modules/imgproc/test/ocl/test_color.cpp @@ -155,7 +155,7 @@ OCL_TEST_P(CvtColor, YCrCb2BGRA) { performTest(3, 4, CVTCODE(YCrCb2BGR)); } // RGB <-> XYZ -#if IPP_VERSION_X100 > 0 +#ifdef HAVE_IPP #define IPP_EPS depth <= CV_32S ? 1 : 5e-5 #else #define IPP_EPS 1e-3 @@ -175,7 +175,7 @@ OCL_TEST_P(CvtColor, XYZ2BGRA) { performTest(3, 4, CVTCODE(XYZ2BGR), IPP_EPS); } // RGB <-> HSV -#if IPP_VERSION_X100 > 0 +#ifdef HAVE_IPP #define IPP_EPS depth <= CV_32S ? 1 : 4e-5 #else #define IPP_EPS 1e-3 @@ -207,7 +207,7 @@ OCL_TEST_P(CvtColor8u32f, HSV2BGRA_FULL) { performTest(3, 4, CVTCODE(HSV2BGR_FUL // RGB <-> HLS -#if IPP_VERSION_X100 > 0 +#ifdef HAVE_IPP #define IPP_EPS depth == CV_8U ? 2 : 1e-3 #else #define IPP_EPS depth == CV_8U ? 1 : 1e-3 @@ -269,7 +269,7 @@ OCL_TEST_P(CvtColor8u, GRAY2BGR555) { performTest(1, 2, CVTCODE(GRAY2BGR555)); } // RGBA <-> mRGBA -#if IPP_VERSION_X100 > 0 +#ifdef HAVE_IPP #define IPP_EPS depth <= CV_32S ? 1 : 1e-3 #else #define IPP_EPS 1e-3 diff --git a/modules/imgproc/test/test_houghLines.cpp b/modules/imgproc/test/test_houghLines.cpp index fd9783b31..cf6dc87d9 100644 --- a/modules/imgproc/test/test_houghLines.cpp +++ b/modules/imgproc/test/test_houghLines.cpp @@ -189,7 +189,7 @@ void BaseHoughLineTest::run_test(int type) else if (type == PROBABILISTIC) count = countMatIntersection(exp_lines, lines, 1e-4f, 0.f); -#if (0 && defined(HAVE_IPP) && !defined(HAVE_IPP_ICV_ONLY) && IPP_VERSION_X100 >= 801) +#if defined HAVE_IPP && !defined(HAVE_IPP_ICV_ONLY) && IPP_VERSION_X100 >= 810 && IPP_DISABLED_BLOCK EXPECT_GE( count, (int) (exp_lines.total() * 0.8) ); #else EXPECT_EQ( count, (int) exp_lines.total()); From 75c7917643b31e6ce10d22a3fa84299247c4e735 Mon Sep 17 00:00:00 2001 From: Pavel Vlasov Date: Tue, 29 Sep 2015 17:24:18 +0300 Subject: [PATCH 2/2] IPP_VERSION_X100 was changed to: IPP_VERSION_MAJOR * 100 + IPP_VERSION_MINOR*10 + IPP_VERSION_UPDATE to manage changes between updates more easily. IPP_DISABLE_BLOCK was added to ease tracking of disabled IPP functions; --- modules/core/src/stat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/src/stat.cpp b/modules/core/src/stat.cpp index 999640d94..a1ceb5702 100644 --- a/modules/core/src/stat.cpp +++ b/modules/core/src/stat.cpp @@ -2701,7 +2701,7 @@ static bool ipp_norm(Mat &src, int normType, Mat &mask, double &result) return true; } } -#if IPP_DISABLED_BLOCK +#if IPP_DISABLE_BLOCK typedef IppStatus (CV_STDCALL* ippiMaskNormFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *); ippiMaskNormFuncC3 ippFuncC3 = normType == NORM_INF ?