Skip to content

Commit 9c14a2f

Browse files
committed
Merge pull request opencv#9395 from lupustr3:pvlasov/icv2017u3_update
2 parents e80766a + a57718e commit 9c14a2f

30 files changed

+721
-578
lines changed

3rdparty/ippicv/CMakeLists.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ project(${IPP_IW_LIBRARY})
66

77
ocv_include_directories(${IPP_INCLUDE_DIRS} ${IPP_IW_PATH}/include)
88
add_definitions(-DIW_BUILD)
9-
if(HAVE_IPP_ICV_ONLY)
9+
if(HAVE_IPP_ICV)
1010
add_definitions(-DICV_BASE)
1111
endif()
1212

@@ -21,7 +21,10 @@ add_library(${IPP_IW_LIBRARY} STATIC ${lib_srcs} ${lib_hdrs})
2121

2222
if(UNIX)
2323
if(CMAKE_COMPILER_IS_GNUCXX OR CV_ICC)
24-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wno-unused-function")
24+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wno-unused-function -Wno-missing-braces -Wno-missing-field-initializers")
25+
endif()
26+
if (CMAKE_C_COMPILER_ID MATCHES "Clang")
27+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-self-assign")
2528
endif()
2629
endif()
2730

3rdparty/ippicv/ippicv.cmake

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,37 @@ function(download_ippicv root_var)
22
set(${root_var} "" PARENT_SCOPE)
33

44
# Commit SHA in the opencv_3rdparty repo
5-
set(IPPICV_COMMIT "a62e20676a60ee0ad6581e217fe7e4bada3b95db")
5+
set(IPPICV_COMMIT "dfe3162c237af211e98b8960018b564bc209261d")
66
# Define actual ICV versions
77
if(APPLE)
88
set(OPENCV_ICV_PLATFORM "macosx")
99
set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_mac")
1010
if(X86_64)
11-
set(OPENCV_ICV_NAME "ippicv_2017u2_mac_intel64_20170418.tgz")
12-
set(OPENCV_ICV_HASH "0c25953c99dbb499ff502485a9356d8d")
11+
set(OPENCV_ICV_NAME "ippicv_2017u3_mac_intel64_general_20170822.tgz")
12+
set(OPENCV_ICV_HASH "c1ebb5dfa5b7f54b0c44e1917805a463")
1313
else()
14-
set(OPENCV_ICV_NAME "ippicv_2017u2_mac_ia32_20170418.tgz")
15-
set(OPENCV_ICV_HASH "5f225948f3f64067c681293c098d50d8")
14+
set(OPENCV_ICV_NAME "ippicv_2017u3_mac_ia32_general_20170822.tgz")
15+
set(OPENCV_ICV_HASH "49b05a669042753ae75895a445ebd612")
1616
endif()
1717
elseif((UNIX AND NOT ANDROID) OR (UNIX AND ANDROID_ABI MATCHES "x86"))
1818
set(OPENCV_ICV_PLATFORM "linux")
1919
set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_lnx")
2020
if(X86_64)
21-
set(OPENCV_ICV_NAME "ippicv_2017u2_lnx_intel64_20170418.tgz")
22-
set(OPENCV_ICV_HASH "87cbdeb627415d8e4bc811156289fa3a")
21+
set(OPENCV_ICV_NAME "ippicv_2017u3_lnx_intel64_general_20170822.tgz")
22+
set(OPENCV_ICV_HASH "4e0352ce96473837b1d671ce87f17359")
2323
else()
24-
set(OPENCV_ICV_NAME "ippicv_2017u2_lnx_ia32_20170418.tgz")
25-
set(OPENCV_ICV_HASH "f2cece00d802d4dea86df52ed095257e")
24+
set(OPENCV_ICV_NAME "ippicv_2017u3_lnx_ia32_general_20170822.tgz")
25+
set(OPENCV_ICV_HASH "dcdb0ba4b123f240596db1840cd59a76")
2626
endif()
2727
elseif(WIN32 AND NOT ARM)
2828
set(OPENCV_ICV_PLATFORM "windows")
2929
set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_win")
3030
if(X86_64)
31-
set(OPENCV_ICV_NAME "ippicv_2017u2_win_intel64_20170418.zip")
32-
set(OPENCV_ICV_HASH "75060a0c662c0800f48995b7e9b085f6")
31+
set(OPENCV_ICV_NAME "ippicv_2017u3_win_intel64_general_20170822.zip")
32+
set(OPENCV_ICV_HASH "0421e642bc7ad741a2236d3ec4190bdd")
3333
else()
34-
set(OPENCV_ICV_NAME "ippicv_2017u2_win_ia32_20170418.zip")
35-
set(OPENCV_ICV_HASH "60fcf3ccd9a2ebc9e432ffb5cb91638b")
34+
set(OPENCV_ICV_NAME "ippicv_2017u3_win_ia32_general_20170822.zip")
35+
set(OPENCV_ICV_HASH "8a7680ae352c192de2e2e34936164bd0")
3636
endif()
3737
else()
3838
return()

CMakeLists.txt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,6 @@ OCV_OPTION(WITH_OPENCLAMDFFT "Include AMD OpenCL FFT library support" ON
242242
OCV_OPTION(WITH_OPENCLAMDBLAS "Include AMD OpenCL BLAS library support" ON IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
243243
OCV_OPTION(WITH_DIRECTX "Include DirectX support" ON IF (WIN32 AND NOT WINRT) )
244244
OCV_OPTION(WITH_INTELPERC "Include Intel Perceptual Computing support" OFF IF (WIN32 AND NOT WINRT) )
245-
OCV_OPTION(WITH_IPP_A "Include Intel IPP_A support" OFF IF (MSVC OR X86 OR X86_64) )
246245
OCV_OPTION(WITH_MATLAB "Include Matlab support" ON IF (NOT ANDROID AND NOT IOS AND NOT WINRT))
247246
OCV_OPTION(WITH_VA "Include VA support" OFF IF (UNIX AND NOT ANDROID) )
248247
OCV_OPTION(WITH_VA_INTEL "Include Intel VA-API/OpenCL support" OFF IF (UNIX AND NOT ANDROID) )
@@ -1294,15 +1293,16 @@ status(" Other third-party libraries:")
12941293
if(WITH_IPP AND HAVE_IPP)
12951294
status(" Use Intel IPP:" "${IPP_VERSION_STR} [${IPP_VERSION_MAJOR}.${IPP_VERSION_MINOR}.${IPP_VERSION_BUILD}]")
12961295
status(" at:" "${IPP_ROOT_DIR}")
1297-
if(NOT HAVE_IPP_ICV_ONLY)
1296+
if(NOT HAVE_IPP_ICV)
12981297
status(" linked:" BUILD_WITH_DYNAMIC_IPP THEN "dynamic" ELSE "static")
12991298
endif()
13001299
if(HAVE_IPP_IW)
13011300
if(BUILD_IPP_IW)
1302-
status(" Use Intel IPP IW:" "build (${IW_VERSION_MAJOR}.${IW_VERSION_MINOR}.${IW_VERSION_UPDATE})")
1301+
status(" Use Intel IPP IW:" "sources (${IW_VERSION_MAJOR}.${IW_VERSION_MINOR}.${IW_VERSION_UPDATE})")
13031302
else()
1304-
status(" Use Intel IPP IW:" "prebuilt binaries (${IW_VERSION_MAJOR}.${IW_VERSION_MINOR}.${IW_VERSION_UPDATE})")
1303+
status(" Use Intel IPP IW:" "binaries (${IW_VERSION_MAJOR}.${IW_VERSION_MINOR}.${IW_VERSION_UPDATE})")
13051304
endif()
1305+
status(" at:" "${IPP_IW_PATH}")
13061306
else()
13071307
status(" Use Intel IPP IW:" NO)
13081308
endif()
@@ -1311,10 +1311,6 @@ else()
13111311
status(" Use Intel IPP IW:" WITH_IPP AND NOT HAVE_IPP AND HAVE_IPP_IW THEN "IPP not found or implicitly disabled" ELSE NO)
13121312
endif()
13131313

1314-
if(DEFINED WITH_IPP_A)
1315-
status(" Use Intel IPP Async:" HAVE_IPP_A THEN "YES" ELSE NO)
1316-
endif(DEFINED WITH_IPP_A)
1317-
13181314
if(DEFINED WITH_VA)
13191315
status(" Use VA:" HAVE_VA THEN "YES" ELSE NO)
13201316
endif(DEFINED WITH_VA)

cmake/OpenCVFindIPP.cmake

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@
1111
#
1212
# On return this will define:
1313
#
14-
# HAVE_IPP - True if Intel IPP found
15-
# HAVE_IPP_ICV_ONLY - True if Intel IPP ICV version is available
16-
# IPP_ROOT_DIR - root of IPP installation
17-
# IPP_INCLUDE_DIRS - IPP include folder
18-
# IPP_LIBRARIES - IPP libraries that are used by OpenCV
19-
# IPP_VERSION_STR - string with the newest detected IPP version
20-
# IPP_VERSION_MAJOR - numbers of IPP version (MAJOR.MINOR.BUILD)
14+
# HAVE_IPP - True if Intel IPP found
15+
# HAVE_IPP_ICV - True if Intel IPP ICV version is available
16+
# IPP_ROOT_DIR - root of IPP installation
17+
# IPP_INCLUDE_DIRS - IPP include folder
18+
# IPP_LIBRARIES - IPP libraries that are used by OpenCV
19+
# IPP_VERSION_STR - string with the newest detected IPP version
20+
# IPP_VERSION_MAJOR - numbers of IPP version (MAJOR.MINOR.BUILD)
2121
# IPP_VERSION_MINOR
2222
# IPP_VERSION_BUILD
2323
#
2424
# Created: 30 Dec 2010 by Vladimir Dudnik (vladimir.dudnik@intel.com)
2525
#
2626

2727
unset(HAVE_IPP CACHE)
28-
unset(HAVE_IPP_ICV_ONLY)
28+
unset(HAVE_IPP_ICV)
2929
unset(IPP_ROOT_DIR)
3030
unset(IPP_INCLUDE_DIRS)
3131
unset(IPP_LIBRARIES)
@@ -79,7 +79,7 @@ endmacro()
7979
macro(_ipp_not_supported)
8080
message(STATUS ${ARGN})
8181
unset(HAVE_IPP)
82-
unset(HAVE_IPP_ICV_ONLY)
82+
unset(HAVE_IPP_ICV)
8383
unset(IPP_VERSION_STR)
8484
return()
8585
endmacro()
@@ -92,7 +92,7 @@ macro(ipp_detect_version)
9292
set(__msg)
9393
if(EXISTS ${IPP_ROOT_DIR}/include/ippicv_redefs.h)
9494
set(__msg " (ICV version)")
95-
set(HAVE_IPP_ICV_ONLY 1)
95+
set(HAVE_IPP_ICV 1)
9696
elseif(EXISTS ${IPP_ROOT_DIR}/include/ipp.h)
9797
# nothing
9898
else()
@@ -118,7 +118,7 @@ macro(ipp_detect_version)
118118
set(IPP_LIBRARY_DIR ${DIR})
119119
endmacro()
120120

121-
if(APPLE AND NOT HAVE_IPP_ICV_ONLY)
121+
if(APPLE AND NOT HAVE_IPP_ICV)
122122
_ipp_set_library_dir(${IPP_ROOT_DIR}/lib)
123123
elseif(IPP_X64)
124124
_ipp_set_library_dir(${IPP_ROOT_DIR}/lib/intel64)
@@ -128,7 +128,7 @@ macro(ipp_detect_version)
128128

129129
macro(_ipp_add_library name)
130130
# dynamic linking is only supported for standalone version of Intel IPP
131-
if (BUILD_WITH_DYNAMIC_IPP AND NOT HAVE_IPP_ICV_ONLY)
131+
if (BUILD_WITH_DYNAMIC_IPP AND NOT HAVE_IPP_ICV)
132132
if (WIN32)
133133
set(IPP_LIB_PREFIX ${CMAKE_IMPORT_LIBRARY_PREFIX})
134134
set(IPP_LIB_SUFFIX ${CMAKE_IMPORT_LIBRARY_SUFFIX})
@@ -141,7 +141,7 @@ macro(ipp_detect_version)
141141
set(IPP_LIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
142142
endif ()
143143
if (EXISTS ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX})
144-
if (BUILD_WITH_DYNAMIC_IPP AND NOT HAVE_IPP_ICV_ONLY)
144+
if (BUILD_WITH_DYNAMIC_IPP AND NOT HAVE_IPP_ICV)
145145
# When using dynamic libraries from standalone Intel IPP it is your responsibility to install those on the target system
146146
list(APPEND IPP_LIBRARIES ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX})
147147
else ()
@@ -167,14 +167,14 @@ macro(ipp_detect_version)
167167

168168
set(IPP_PREFIX "ipp")
169169
if(${IPP_VERSION_STR} VERSION_LESS "8.0")
170-
if (BUILD_WITH_DYNAMIC_IPP AND NOT HAVE_IPP_ICV_ONLY)
170+
if (BUILD_WITH_DYNAMIC_IPP AND NOT HAVE_IPP_ICV)
171171
set(IPP_SUFFIX "") # dynamic not threaded libs suffix Intel IPP 7.x
172172
else ()
173173
set(IPP_SUFFIX "_l") # static not threaded libs suffix Intel IPP 7.x
174174
endif ()
175175
else ()
176176
if(WIN32)
177-
if (BUILD_WITH_DYNAMIC_IPP AND NOT HAVE_IPP_ICV_ONLY)
177+
if (BUILD_WITH_DYNAMIC_IPP AND NOT HAVE_IPP_ICV)
178178
set(IPP_SUFFIX "") # dynamic not threaded libs suffix Intel IPP 8.x for Windows
179179
else ()
180180
set(IPP_SUFFIX "mt") # static not threaded libs suffix Intel IPP 8.x for Windows
@@ -184,7 +184,7 @@ macro(ipp_detect_version)
184184
endif()
185185
endif()
186186

187-
if(HAVE_IPP_ICV_ONLY)
187+
if(HAVE_IPP_ICV)
188188
_ipp_add_library(icv)
189189
else()
190190
_ipp_add_library(cv)

cmake/OpenCVFindIPPIW.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ macro(ippiw_debugmsg MESSAGE)
2727
message(STATUS "${MESSAGE}")
2828
endif()
2929
endmacro()
30+
file(TO_CMAKE_PATH "${IPPROOT}" IPPROOT)
3031

3132
# This function detects Intel IPP IW version by analyzing .h file
3233
macro(ippiw_setup PATH BUILD)
@@ -153,7 +154,7 @@ ippiw_setup("${IPPROOT}/../${IW_PACKAGE_SUBDIR}/" 0)
153154

154155

155156
# take Intel IPP IW from ICV package
156-
if(NOT HAVE_IPP_ICV_ONLY AND BUILD_IPP_IW)
157+
if(NOT HAVE_IPP_ICV AND BUILD_IPP_IW)
157158
message(STATUS "Cannot find Intel IPP IW. Checking \"Intel IPP for OpenCV\" package")
158159
set(TEMP_ROOT 0)
159160
include("${OpenCV_SOURCE_DIR}/3rdparty/ippicv/ippicv.cmake")

cmake/templates/cvconfig.h.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103

104104
/* Intel Integrated Performance Primitives */
105105
#cmakedefine HAVE_IPP
106-
#cmakedefine HAVE_IPP_ICV_ONLY
106+
#cmakedefine HAVE_IPP_ICV
107107
#cmakedefine HAVE_IPP_IW
108108

109109
/* Intel IPP Async */

modules/core/include/opencv2/core/base.hpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -693,8 +693,14 @@ CV_EXPORTS void setIppStatus(int status, const char * const funcname = NULL, c
693693
int line = 0);
694694
CV_EXPORTS int getIppStatus();
695695
CV_EXPORTS String getIppErrorLocation();
696-
CV_EXPORTS_W bool useIPP();
697-
CV_EXPORTS_W void setUseIPP(bool flag);
696+
CV_EXPORTS_W bool useIPP();
697+
CV_EXPORTS_W void setUseIPP(bool flag);
698+
CV_EXPORTS_W String getIppVersion();
699+
700+
// IPP Not-Exact mode. This function may force use of IPP then both IPP and OpenCV provide proper results
701+
// but have internal accuracy differences which have to much direct or indirect impact on accuracy tests.
702+
CV_EXPORTS_W bool useIPP_NE();
703+
CV_EXPORTS_W void setUseIPP_NE(bool flag);
698704

699705
} // ipp
700706

0 commit comments

Comments
 (0)