diff --git a/3rdparty/ippicv/.gitignore b/3rdparty/ippicv/.gitignore index c7decd2419932338e4482d7ccce1622ae1545f16..ea720dd57d65bf62eca332a353ad5a64b2d1f50e 100644 --- a/3rdparty/ippicv/.gitignore +++ b/3rdparty/ippicv/.gitignore @@ -1,4 +1,2 @@ downloads/ -macosx/ -linux/ -windows/ +unpack/ diff --git a/3rdparty/ippicv/downloader.cmake b/3rdparty/ippicv/downloader.cmake index 849c03881c5e6828a7d99fa13edfe00138ab3e75..3e830fe7ef0c36a929f2167b9c2677cc12d7123c 100644 --- a/3rdparty/ippicv/downloader.cmake +++ b/3rdparty/ippicv/downloader.cmake @@ -8,22 +8,26 @@ function(_icv_downloader) # Define actual ICV versions if(APPLE) - set(OPENCV_ICV_PACKAGE_NAME "ippicv_macosx.tar.gz") - set(OPENCV_ICV_PACKAGE_HASH "d489e447906de7808a9a9d7e3f225f7a") + set(OPENCV_ICV_PACKAGE_NAME "ippicv_macosx_20140429.tgz") + set(OPENCV_ICV_PACKAGE_HASH "f2195a60829899983acd4a45794e1717") set(OPENCV_ICV_PLATFORM "macosx") + set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_osx") elseif(UNIX AND NOT ANDROID) - set(OPENCV_ICV_PACKAGE_NAME "ippicv_linux.tar.gz") - set(OPENCV_ICV_PACKAGE_HASH "42798c6cd6348bd40e74c425dc23338a") + set(OPENCV_ICV_PACKAGE_NAME "ippicv_linux_20140429.tgz") + set(OPENCV_ICV_PACKAGE_HASH "f6481b8695a56ad27a84db1e44ea0f00") set(OPENCV_ICV_PLATFORM "linux") + set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_lnx") elseif(WIN32 AND NOT ARM) - set(OPENCV_ICV_PACKAGE_NAME "ippicv_windows.zip") - set(OPENCV_ICV_PACKAGE_HASH "2715f39ae65dc09bae3648bffe538706") + set(OPENCV_ICV_PACKAGE_NAME "ippicv_windows_20140429.zip") + set(OPENCV_ICV_PACKAGE_HASH "b5028a92224ec1fbc554010c52eb3ec8") set(OPENCV_ICV_PLATFORM "windows") + set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_win") else() return() # Not supported endif() - set(OPENCV_ICV_PATH "${CMAKE_CURRENT_LIST_DIR}/${OPENCV_ICV_PLATFORM}") + set(OPENCV_ICV_UNPACK_PATH "${CMAKE_CURRENT_LIST_DIR}/unpack") + set(OPENCV_ICV_PATH "${OPENCV_ICV_UNPACK_PATH}${OPENCV_ICV_PACKAGE_SUBDIR}") if(DEFINED OPENCV_ICV_PACKAGE_DOWNLOADED AND OPENCV_ICV_PACKAGE_DOWNLOADED STREQUAL OPENCV_ICV_PACKAGE_HASH @@ -32,9 +36,9 @@ function(_icv_downloader) set(OPENCV_ICV_PATH "${OPENCV_ICV_PATH}" PARENT_SCOPE) return() else() - if(EXISTS ${OPENCV_ICV_PATH}) - message(STATUS "ICV: Removing previous unpacked package: ${OPENCV_ICV_PATH}") - file(REMOVE_RECURSE ${OPENCV_ICV_PATH}) + if(EXISTS ${OPENCV_ICV_UNPACK_PATH}) + message(STATUS "ICV: Removing previous unpacked package: ${OPENCV_ICV_UNPACK_PATH}") + file(REMOVE_RECURSE ${OPENCV_ICV_UNPACK_PATH}) endif() endif() unset(OPENCV_ICV_PACKAGE_DOWNLOADED CACHE) @@ -78,19 +82,21 @@ function(_icv_downloader) endif() ocv_assert(EXISTS "${OPENCV_ICV_PACKAGE_ARCHIVE}") - ocv_assert(NOT EXISTS "${OPENCV_ICV_PATH}") - file(MAKE_DIRECTORY ${OPENCV_ICV_PATH}) - ocv_assert(EXISTS "${OPENCV_ICV_PATH}") + ocv_assert(NOT EXISTS "${OPENCV_ICV_UNPACK_PATH}") + file(MAKE_DIRECTORY ${OPENCV_ICV_UNPACK_PATH}) + ocv_assert(EXISTS "${OPENCV_ICV_UNPACK_PATH}") - message(STATUS "ICV: Unpacking ${OPENCV_ICV_PACKAGE_NAME} to ${OPENCV_ICV_PATH}...") + message(STATUS "ICV: Unpacking ${OPENCV_ICV_PACKAGE_NAME} to ${OPENCV_ICV_UNPACK_PATH}...") execute_process(COMMAND ${CMAKE_COMMAND} -E tar xz "${OPENCV_ICV_PACKAGE_ARCHIVE}" - WORKING_DIRECTORY "${OPENCV_ICV_PATH}" + WORKING_DIRECTORY "${OPENCV_ICV_UNPACK_PATH}" RESULT_VARIABLE __result) if(NOT __result EQUAL 0) - message(FATAL_ERROR "ICV: Failed to unpack ICV package from ${OPENCV_ICV_PACKAGE_ARCHIVE} to ${OPENCV_ICV_PATH} with error ${__result}") + message(FATAL_ERROR "ICV: Failed to unpack ICV package from ${OPENCV_ICV_PACKAGE_ARCHIVE} to ${OPENCV_ICV_UNPACK_PATH} with error ${__result}") endif() + ocv_assert(EXISTS "${OPENCV_ICV_PATH}") + set(OPENCV_ICV_PACKAGE_DOWNLOADED "${OPENCV_ICV_PACKAGE_HASH}" CACHE INTERNAL "ICV package hash") message(STATUS "ICV: Package successfully downloaded") diff --git a/cmake/OpenCVFindIPP.cmake b/cmake/OpenCVFindIPP.cmake index 6ad6c28618aa736ec89dc9eef29e720be66559e7..31d64abe56d99f6b7e5fcf355ef0a2044779435c 100644 --- a/cmake/OpenCVFindIPP.cmake +++ b/cmake/OpenCVFindIPP.cmake @@ -35,7 +35,7 @@ unset(IPP_VERSION_MINOR) unset(IPP_VERSION_BUILD) set(IPP_LIB_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX}) -set(IPP_LIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX}) +set(IPP_LIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX}) set(IPP_X64 0) if(CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8) @@ -88,23 +88,18 @@ macro(ipp_detect_version) set(IPP_INCLUDE_DIRS ${IPP_ROOT_DIR}/include) set(__msg) - if(EXISTS ${IPP_ROOT_DIR}/ippicv.h) + if(EXISTS ${IPP_ROOT_DIR}/include/ippicv_redefs.h) set(__msg " (ICV version)") set(HAVE_IPP_ICV_ONLY 1) - if(EXISTS ${IPP_ROOT_DIR}/ippversion.h) - _ipp_not_supported("Can't resolve IPP directory: ${IPP_ROOT_DIR}") - else() - ipp_get_version(${IPP_ROOT_DIR}/ippicv.h) - endif() - ocv_assert(IPP_VERSION_STR VERSION_GREATER "8.0") - set(IPP_INCLUDE_DIRS ${IPP_ROOT_DIR}/) elseif(EXISTS ${IPP_ROOT_DIR}/include/ipp.h) - ipp_get_version(${IPP_ROOT_DIR}/include/ippversion.h) - ocv_assert(IPP_VERSION_STR VERSION_GREATER "1.0") + # nothing else() _ipp_not_supported("Can't resolve IPP directory: ${IPP_ROOT_DIR}") endif() + ipp_get_version(${IPP_INCLUDE_DIRS}/ippversion.h) + ocv_assert(IPP_VERSION_STR VERSION_GREATER "1.0") + message(STATUS "found IPP${__msg}: ${_MAJOR}.${_MINOR}.${_BUILD} [${IPP_VERSION_STR}]") message(STATUS "at: ${IPP_ROOT_DIR}") @@ -113,11 +108,6 @@ macro(ipp_detect_version) endif() set(HAVE_IPP 1) - if(EXISTS ${IPP_INCLUDE_DIRS}/ipp_redefine.h) - set(HAVE_IPP_REDEFINE 1) - else() - unset(HAVE_IPP_REDEFINE) - endif() macro(_ipp_set_library_dir DIR) if(NOT EXISTS ${DIR}) @@ -126,32 +116,19 @@ macro(ipp_detect_version) set(IPP_LIBRARY_DIR ${DIR}) endmacro() - if(NOT HAVE_IPP_ICV_ONLY) - if(APPLE) - _ipp_set_library_dir(${IPP_ROOT_DIR}/lib) - elseif(IPP_X64) - _ipp_set_library_dir(${IPP_ROOT_DIR}/lib/intel64) - else() - _ipp_set_library_dir(${IPP_ROOT_DIR}/lib/ia32) - endif() + if(APPLE) + _ipp_set_library_dir(${IPP_ROOT_DIR}/lib) + elseif(IPP_X64) + _ipp_set_library_dir(${IPP_ROOT_DIR}/lib/intel64) else() - if(EXISTS ${IPP_ROOT_DIR}/lib) - set(IPP_LIBRARY_DIR ${IPP_ROOT_DIR}/lib) - else() - _ipp_not_supported("IPP ${IPP_VERSION_STR} at ${IPP_ROOT_DIR} is not supported") - endif() - if(IPP_X64) - _ipp_set_library_dir(${IPP_LIBRARY_DIR}/intel64) - else() - _ipp_set_library_dir(${IPP_LIBRARY_DIR}/ia32) - endif() + _ipp_set_library_dir(${IPP_ROOT_DIR}/lib/ia32) endif() macro(_ipp_add_library name) if (EXISTS ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX}) list(APPEND IPP_LIBRARIES ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX}) else() - message(STATUS "Can't find IPP library: ${name}") + message(STATUS "Can't find IPP library: ${name} at ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX}") endif() endmacro() diff --git a/modules/core/include/opencv2/core/private.hpp b/modules/core/include/opencv2/core/private.hpp index eea2281dc2cdec3ca7d885a8535f4ee1ea689cbb..6678716405b32740476440f0b01cadb0615167a4 100644 --- a/modules/core/include/opencv2/core/private.hpp +++ b/modules/core/include/opencv2/core/private.hpp @@ -210,12 +210,8 @@ CV_EXPORTS void scalarToRawData(const cv::Scalar& s, void* buf, int type, int un \****************************************************************************************/ #ifdef HAVE_IPP -# ifdef HAVE_IPP_ICV_ONLY -# include "ipp_redefine.h" -# include "ippicv.h" -# else -# include "ipp.h" -# endif +# include "ipp.h" + # define IPP_VERSION_X100 (IPP_VERSION_MAJOR * 100 + IPP_VERSION_MINOR) #define IPP_ALIGN 32 // required for AVX optimization diff --git a/modules/core/src/dxt.cpp b/modules/core/src/dxt.cpp index e3525b98aab422c658363222878be036ec8f2cb1..fd263aaaf234f09ca47c5c9a03b500b10cae7d83 100644 --- a/modules/core/src/dxt.cpp +++ b/modules/core/src/dxt.cpp @@ -53,7 +53,7 @@ namespace cv # pragma warning(disable: 4748) #endif -#if IPP_VERSION_X100 >= 701 +#if IPP_VERSION_X100 >= 701 && !defined(HAVE_IPP_ICV_ONLY) #define USE_IPP_DFT 1 #else #undef USE_IPP_DFT diff --git a/modules/imgproc/src/deriv.cpp b/modules/imgproc/src/deriv.cpp index f232eb5d9c6406eb458b8c2a55571fa32f486aea..51f017b62870797fce0b454563cdb6114f9f6192 100644 --- a/modules/imgproc/src/deriv.cpp +++ b/modules/imgproc/src/deriv.cpp @@ -193,7 +193,7 @@ namespace cv static bool IPPDerivScharr(InputArray _src, OutputArray _dst, int ddepth, int dx, int dy, double scale, double delta, int borderType) { #if defined(HAVE_IPP_ICV_ONLY) - _src; _dst; ddepth; dx; dy; scale; delta; borderType; + (void)_src; (void)_dst; (void)ddepth; (void)dx; (void)dy; (void)scale; (void)delta; (void)borderType; return false; #else if ((0 > dx) || (0 > dy) || (1 != dx + dy)) @@ -460,6 +460,9 @@ static bool IPPDerivSobel(InputArray _src, OutputArray _dst, int ddepth, int dx, return true; } +#if defined(HAVE_IPP_ICV_ONLY) + return false; +#else if ((dx == 2) && (dy == 0)) { if (0 > ippiFilterSobelVertSecondGetBufferSize_8u16s_C1R(ippiSize(src.cols, src.rows), (IppiMaskSize)(ksize*10+ksize),&bufSize)) @@ -485,6 +488,7 @@ static bool IPPDerivSobel(InputArray _src, OutputArray _dst, int ddepth, int dx, IPP_RETURN_ERROR return true; } +#endif } if (src.type() == CV_32F && dst.type() == CV_32F) diff --git a/modules/imgproc/src/smooth.cpp b/modules/imgproc/src/smooth.cpp index 50d1250322e4c3734ac4d10a4ad8293117103b9a..58075be65b709d2102c3bd476c5c4e5b998e4c85 100644 --- a/modules/imgproc/src/smooth.cpp +++ b/modules/imgproc/src/smooth.cpp @@ -2274,7 +2274,7 @@ private: float *space_weight, *color_weight; }; -#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) +#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) && !defined(HAVE_IPP_ICV_ONLY) class IPPBilateralFilter_8u_Invoker : public ParallelLoopBody {