icv: update package
authorAlexander Alekhin <alexander.alekhin@itseez.com>
Mon, 28 Apr 2014 14:36:58 +0000 (18:36 +0400)
committerAlexander Alekhin <alexander.alekhin@itseez.com>
Tue, 29 Apr 2014 11:35:27 +0000 (15:35 +0400)
3rdparty/ippicv/.gitignore
3rdparty/ippicv/downloader.cmake
cmake/OpenCVFindIPP.cmake
modules/core/include/opencv2/core/private.hpp
modules/core/src/dxt.cpp
modules/imgproc/src/deriv.cpp
modules/imgproc/src/smooth.cpp

index c7decd2..ea720dd 100644 (file)
@@ -1,4 +1,2 @@
 downloads/
-macosx/
-linux/
-windows/
+unpack/
index 849c038..3e830fe 100644 (file)
@@ -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")
index 6ad6c28..31d64ab 100644 (file)
@@ -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()
 
index eea2281..6678716 100644 (file)
@@ -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
index e3525b9..fd263aa 100644 (file)
@@ -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
index f232eb5..51f017b 100644 (file)
@@ -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)
index 50d1250..58075be 100644 (file)
@@ -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
 {