Merge pull request #1263 from abidrahmank:pyCLAHE_24
[profile/ivi/opencv.git] / cmake / OpenCVFindLibsVideo.cmake
1 # ----------------------------------------------------------------------------
2 #  Detect 3rd-party video IO libraries
3 # ----------------------------------------------------------------------------
4
5 ocv_clear_vars(HAVE_VFW)
6 if (WITH_VFW)
7   TRY_COMPILE(HAVE_VFW
8     "${OPENCV_BINARY_DIR}/CMakeFiles/CMakeTmp"
9     "${OpenCV_SOURCE_DIR}/cmake/checks/vfwtest.cpp"
10     CMAKE_FLAGS "-DLINK_LIBRARIES:STRING=vfw32"
11     OUTPUT_VARIABLE OUTPUT)
12  endif(WITH_VFW)
13
14 # --- GStreamer ---
15 ocv_clear_vars(HAVE_GSTREAMER)
16 if(WITH_GSTREAMER)
17   CHECK_MODULE(gstreamer-base-0.10 HAVE_GSTREAMER)
18   if(HAVE_GSTREAMER)
19     CHECK_MODULE(gstreamer-app-0.10 HAVE_GSTREAMER)
20   endif()
21   if(HAVE_GSTREAMER)
22     CHECK_MODULE(gstreamer-video-0.10 HAVE_GSTREAMER)
23   endif()
24 endif(WITH_GSTREAMER)
25
26 # --- unicap ---
27 ocv_clear_vars(HAVE_UNICAP)
28 if(WITH_UNICAP)
29   CHECK_MODULE(libunicap HAVE_UNICAP_)
30   CHECK_MODULE(libucil HAVE_UNICAP_UCIL)
31   if(HAVE_UNICAP_ AND HAVE_UNICAP_UCIL)
32     set(HAVE_UNICAP TRUE)
33   endif()
34 endif(WITH_UNICAP)
35
36 # --- PvApi ---
37 ocv_clear_vars(HAVE_PVAPI)
38 if(WITH_PVAPI)
39   find_path(PVAPI_INCLUDE_PATH "PvApi.h"
40             PATHS /usr/local /opt /usr ENV ProgramFiles ENV ProgramW6432
41             PATH_SUFFIXES include "Allied Vision Technologies/GigESDK/inc-pc" "AVT GigE SDK/inc-pc" "GigESDK/inc-pc"
42             DOC "The path to PvAPI header")
43
44   if(PVAPI_INCLUDE_PATH)
45     if(X86 AND NOT WIN32)
46       set(PVAPI_SDK_SUBDIR x86)
47     elseif(X86_64)
48       set(PVAPI_SDK_SUBDIR x64)
49     elseif(ARM)
50       set(PVAPI_SDK_SUBDIR arm)
51     endif()
52
53     get_filename_component(_PVAPI_LIBRARY "${PVAPI_INCLUDE_PATH}/../lib-pc" ABSOLUTE)
54     if(PVAPI_SDK_SUBDIR)
55       set(_PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${PVAPI_SDK_SUBDIR}")
56     endif()
57     if(NOT WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
58       set(_PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${CMAKE_OPENCV_GCC_VERSION_MAJOR}.${CMAKE_OPENCV_GCC_VERSION_MINOR}")
59     endif()
60
61     if(WIN32)
62       if(MINGW)
63         set(PVAPI_DEFINITIONS "-DPVDECL=__stdcall")
64       endif(MINGW)
65       set(PVAPI_LIBRARY "${_PVAPI_LIBRARY}/PvAPI.lib" CACHE PATH "The PvAPI library")
66     else(WIN32)
67       set(PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${CMAKE_STATIC_LIBRARY_PREFIX}PvAPI${CMAKE_STATIC_LIBRARY_SUFFIX}" CACHE PATH "The PvAPI library")
68     endif(WIN32)
69     if(EXISTS "${PVAPI_LIBRARY}")
70       set(HAVE_PVAPI TRUE)
71     endif()
72   endif(PVAPI_INCLUDE_PATH)
73 endif(WITH_PVAPI)
74
75 # --- GigEVisionSDK ---
76 ocv_clear_vars(HAVE_GIGE_API)
77 if(WITH_GIGEAPI)
78   find_path(GIGEAPI_INCLUDE_PATH "GigEVisionSDK.h"
79             PATHS /usr/local /var /opt /usr ENV ProgramFiles ENV ProgramW6432
80             PATH_SUFFIXES include "Smartek Vision Technologies/GigEVisionSDK/gige_cpp" "GigEVisionSDK/gige_cpp" "GigEVisionSDK/gige_c"
81             DOC "The path to Smartek GigEVisionSDK header")
82   FIND_LIBRARY(GIGEAPI_LIBRARIES NAMES GigEVisionSDK)
83   if(GIGEAPI_LIBRARIES AND GIGEAPI_INCLUDE_PATH)
84     set(HAVE_GIGE_API TRUE)
85   endif()
86 endif(WITH_GIGEAPI)
87
88 # --- Dc1394 ---
89 ocv_clear_vars(HAVE_DC1394 HAVE_DC1394_2)
90 if(WITH_1394)
91   if(WIN32 AND MINGW)
92       find_path(CMU1394_INCLUDE_PATH "/1394common.h"
93                 PATH_SUFFIXES include
94                 DOC "The path to cmu1394 headers")
95       find_path(DC1394_2_INCLUDE_PATH "/dc1394/dc1394.h"
96                 PATH_SUFFIXES include
97                 DOC "The path to DC1394 2.x headers")
98       if(CMU1394_INCLUDE_PATH AND DC1394_2_INCLUDE_PATH)
99         set(CMU1394_LIB_DIR  "${CMU1394_INCLUDE_PATH}/../lib"  CACHE PATH "Full path of CMU1394 library directory")
100         set(DC1394_2_LIB_DIR "${DC1394_2_INCLUDE_PATH}/../lib" CACHE PATH "Full path of DC1394 2.x library directory")
101         if(EXISTS "${CMU1394_LIB_DIR}/lib1394camera.a" AND EXISTS "${DC1394_2_LIB_DIR}/libdc1394.a")
102           set(HAVE_DC1394_2 TRUE)
103         endif()
104       endif()
105       if(HAVE_DC1394_2)
106         ocv_parse_pkg("libdc1394-2" "${DC1394_2_LIB_DIR}/pkgconfig" "")
107         ocv_include_directories(${DC1394_2_INCLUDE_PATH})
108         set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES}
109             "${DC1394_2_LIB_DIR}/libdc1394.a"
110             "${CMU1394_LIB_DIR}/lib1394camera.a")
111       endif(HAVE_DC1394_2)
112   else(WIN32 AND MINGW)
113     CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)
114     if(NOT HAVE_DC1394_2)
115       CHECK_MODULE(libdc1394 HAVE_DC1394)
116     endif()
117   endif(WIN32 AND MINGW)
118 endif(WITH_1394)
119
120 # --- xine ---
121 ocv_clear_vars(HAVE_XINE)
122 if(WITH_XINE)
123   CHECK_MODULE(libxine HAVE_XINE)
124 endif(WITH_XINE)
125
126 # --- V4L ---
127 ocv_clear_vars(HAVE_LIBV4L HAVE_CAMV4L HAVE_CAMV4L2 HAVE_VIDEOIO)
128 if(WITH_V4L)
129   CHECK_MODULE(libv4l1 HAVE_LIBV4L)
130   CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
131   CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
132   CHECK_INCLUDE_FILE(sys/videoio.h HAVE_VIDEOIO)
133 endif(WITH_V4L)
134
135 # --- OpenNI ---
136 ocv_clear_vars(HAVE_OPENNI HAVE_OPENNI_PRIME_SENSOR_MODULE)
137 if(WITH_OPENNI)
138   include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenNI.cmake")
139 endif(WITH_OPENNI)
140
141 # --- XIMEA ---
142 ocv_clear_vars(HAVE_XIMEA)
143 if(WITH_XIMEA)
144   include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindXimea.cmake")
145   if(XIMEA_FOUND)
146     set(HAVE_XIMEA TRUE)
147   endif()
148 endif(WITH_XIMEA)
149
150 # --- FFMPEG ---
151 ocv_clear_vars(HAVE_FFMPEG HAVE_FFMPEG_CODEC HAVE_FFMPEG_FORMAT HAVE_FFMPEG_UTIL HAVE_FFMPEG_SWSCALE HAVE_GENTOO_FFMPEG HAVE_FFMPEG_FFMPEG)
152 if(WITH_FFMPEG)
153   if(WIN32 AND NOT ARM)
154     include("${OpenCV_SOURCE_DIR}/3rdparty/ffmpeg/ffmpeg_version.cmake")
155   elseif(UNIX)
156     CHECK_MODULE(libavcodec HAVE_FFMPEG_CODEC)
157     CHECK_MODULE(libavformat HAVE_FFMPEG_FORMAT)
158     CHECK_MODULE(libavutil HAVE_FFMPEG_UTIL)
159     CHECK_MODULE(libswscale HAVE_FFMPEG_SWSCALE)
160
161     CHECK_INCLUDE_FILE(libavformat/avformat.h HAVE_GENTOO_FFMPEG)
162     CHECK_INCLUDE_FILE(ffmpeg/avformat.h HAVE_FFMPEG_FFMPEG)
163     if(NOT HAVE_GENTOO_FFMPEG AND NOT HAVE_FFMPEG_FFMPEG)
164       if(EXISTS /usr/include/ffmpeg/libavformat/avformat.h OR HAVE_FFMPEG_SWSCALE)
165         set(HAVE_GENTOO_FFMPEG TRUE)
166       endif()
167     endif()
168     if(HAVE_FFMPEG_CODEC AND HAVE_FFMPEG_FORMAT AND HAVE_FFMPEG_UTIL AND HAVE_FFMPEG_SWSCALE)
169       set(HAVE_FFMPEG TRUE)
170     endif()
171
172     if(HAVE_FFMPEG)
173       # Find the bzip2 library because it is required on some systems
174       FIND_LIBRARY(BZIP2_LIBRARIES NAMES bz2 bzip2)
175       if(NOT BZIP2_LIBRARIES)
176         # Do an other trial
177         FIND_FILE(BZIP2_LIBRARIES NAMES libbz2.so.1 PATHS /lib)
178       endif()
179     endif(HAVE_FFMPEG)
180   endif()
181
182   if(APPLE)
183     find_path(FFMPEG_INCLUDE_DIR "libavformat/avformat.h"
184               PATHS /usr/local /usr /opt
185               PATH_SUFFIXES include
186               DOC "The path to FFMPEG headers")
187     if(FFMPEG_INCLUDE_DIR)
188       set(HAVE_GENTOO_FFMPEG TRUE)
189       set(FFMPEG_LIB_DIR "${FFMPEG_INCLUDE_DIR}/../lib" CACHE PATH "Full path of FFMPEG library directory")
190       if(EXISTS "${FFMPEG_LIB_DIR}/libavcodec.a")
191         set(HAVE_FFMPEG_CODEC 1)
192         set(ALIASOF_libavcodec_VERSION "Unknown")
193         if(EXISTS "${FFMPEG_LIB_DIR}/libavformat.a")
194           set(HAVE_FFMPEG_FORMAT 1)
195           set(ALIASOF_libavformat_VERSION "Unknown")
196           if(EXISTS "${FFMPEG_LIB_DIR}/libavutil.a")
197             set(HAVE_FFMPEG_UTIL 1)
198             set(ALIASOF_libavutil_VERSION "Unknown")
199             if(EXISTS "${FFMPEG_LIB_DIR}/libswscale.a")
200               set(HAVE_FFMPEG_SWSCALE 1)
201               set(ALIASOF_libswscale_VERSION "Unknown")
202               set(HAVE_FFMPEG 1)
203             endif()
204           endif()
205         endif()
206       endif()
207     endif(FFMPEG_INCLUDE_DIR)
208     if(HAVE_FFMPEG)
209       set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} "${FFMPEG_LIB_DIR}/libavcodec.a"
210           "${FFMPEG_LIB_DIR}/libavformat.a" "${FFMPEG_LIB_DIR}/libavutil.a"
211           "${FFMPEG_LIB_DIR}/libswscale.a")
212       ocv_include_directories(${FFMPEG_INCLUDE_DIR})
213     endif()
214   endif(APPLE)
215 endif(WITH_FFMPEG)
216
217 # --- VideoInput/DirectShow ---
218 if(WITH_DSHOW)
219   # always have VideoInput on Windows
220   set(HAVE_DSHOW 1)
221 endif(WITH_DSHOW)
222
223 # --- VideoInput/Microsoft Media Foundation ---
224 if(WITH_MSMF)
225   check_include_file(Mfapi.h HAVE_MSMF)
226 endif(WITH_MSMF)
227
228 # --- Extra HighGUI libs on Windows ---
229 if(WIN32)
230   list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32 setupapi ws2_32 vfw32)
231   if(MINGW64)
232     list(APPEND HIGHGUI_LIBRARIES avifil32 avicap32 winmm msvfw32)
233     list(REMOVE_ITEM HIGHGUI_LIBRARIES vfw32)
234   elseif(MINGW)
235     list(APPEND HIGHGUI_LIBRARIES winmm)
236   endif()
237 endif(WIN32)
238
239 # --- Apple AV Foundation ---
240 if(WITH_AVFOUNDATION)
241   set(HAVE_AVFOUNDATION YES)
242 endif()
243
244 # --- QuickTime ---
245 if(WITH_QUICKTIME)
246   set(HAVE_QUICKTIME YES)
247 endif()