1 # ----------------------------------------------------------------------------
2 # Detect 3rd-party video IO libraries
3 # ----------------------------------------------------------------------------
5 ocv_clear_vars(HAVE_VFW)
9 "${OpenCV_SOURCE_DIR}/cmake/checks/vfwtest.cpp"
10 CMAKE_FLAGS "-DLINK_LIBRARIES:STRING=vfw32")
14 ocv_clear_vars(HAVE_GSTREAMER)
15 # try to find gstreamer 1.x first
16 if(WITH_GSTREAMER AND NOT WITH_GSTREAMER_0_10)
17 CHECK_MODULE(gstreamer-base-1.0 HAVE_GSTREAMER_BASE)
18 CHECK_MODULE(gstreamer-video-1.0 HAVE_GSTREAMER_VIDEO)
19 CHECK_MODULE(gstreamer-app-1.0 HAVE_GSTREAMER_APP)
20 CHECK_MODULE(gstreamer-riff-1.0 HAVE_GSTREAMER_RIFF)
21 CHECK_MODULE(gstreamer-pbutils-1.0 HAVE_GSTREAMER_PBUTILS)
23 if(HAVE_GSTREAMER_BASE AND HAVE_GSTREAMER_VIDEO AND HAVE_GSTREAMER_APP AND HAVE_GSTREAMER_RIFF AND HAVE_GSTREAMER_PBUTILS)
24 set(HAVE_GSTREAMER TRUE)
25 set(GSTREAMER_BASE_VERSION ${ALIASOF_gstreamer-base-1.0_VERSION})
26 set(GSTREAMER_VIDEO_VERSION ${ALIASOF_gstreamer-video-1.0_VERSION})
27 set(GSTREAMER_APP_VERSION ${ALIASOF_gstreamer-app-1.0_VERSION})
28 set(GSTREAMER_RIFF_VERSION ${ALIASOF_gstreamer-riff-1.0_VERSION})
29 set(GSTREAMER_PBUTILS_VERSION ${ALIASOF_gstreamer-pbutils-1.0_VERSION})
32 endif(WITH_GSTREAMER AND NOT WITH_GSTREAMER_0_10)
34 # if gstreamer 1.x was not found, or we specified we wanted 0.10, try to find it
35 if(WITH_GSTREAMER_0_10 OR NOT HAVE_GSTREAMER)
36 CHECK_MODULE(gstreamer-base-0.10 HAVE_GSTREAMER_BASE)
37 CHECK_MODULE(gstreamer-video-0.10 HAVE_GSTREAMER_VIDEO)
38 CHECK_MODULE(gstreamer-app-0.10 HAVE_GSTREAMER_APP)
39 CHECK_MODULE(gstreamer-riff-0.10 HAVE_GSTREAMER_RIFF)
40 CHECK_MODULE(gstreamer-pbutils-0.10 HAVE_GSTREAMER_PBUTILS)
42 if(HAVE_GSTREAMER_BASE AND HAVE_GSTREAMER_VIDEO AND HAVE_GSTREAMER_APP AND HAVE_GSTREAMER_RIFF AND HAVE_GSTREAMER_PBUTILS)
43 set(HAVE_GSTREAMER TRUE)
44 set(GSTREAMER_BASE_VERSION ${ALIASOF_gstreamer-base-0.10_VERSION})
45 set(GSTREAMER_VIDEO_VERSION ${ALIASOF_gstreamer-video-0.10_VERSION})
46 set(GSTREAMER_APP_VERSION ${ALIASOF_gstreamer-app-0.10_VERSION})
47 set(GSTREAMER_RIFF_VERSION ${ALIASOF_gstreamer-riff-0.10_VERSION})
48 set(GSTREAMER_PBUTILS_VERSION ${ALIASOF_gstreamer-pbutils-0.10_VERSION})
50 endif(WITH_GSTREAMER_0_10 OR NOT HAVE_GSTREAMER)
53 ocv_clear_vars(HAVE_UNICAP)
55 CHECK_MODULE(libunicap HAVE_UNICAP_)
56 CHECK_MODULE(libucil HAVE_UNICAP_UCIL)
57 if(HAVE_UNICAP_ AND HAVE_UNICAP_UCIL)
63 ocv_clear_vars(HAVE_PVAPI)
65 find_path(PVAPI_INCLUDE_PATH "PvApi.h"
66 PATHS /usr/local /opt /usr ENV ProgramFiles ENV ProgramW6432
67 PATH_SUFFIXES include "Allied Vision Technologies/GigESDK/inc-pc" "AVT GigE SDK/inc-pc" "GigESDK/inc-pc"
68 DOC "The path to PvAPI header")
70 if(PVAPI_INCLUDE_PATH)
72 set(PVAPI_SDK_SUBDIR x86)
74 set(PVAPI_SDK_SUBDIR x64)
76 set(PVAPI_SDK_SUBDIR arm)
79 get_filename_component(_PVAPI_LIBRARY "${PVAPI_INCLUDE_PATH}/../lib-pc" ABSOLUTE)
81 set(_PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${PVAPI_SDK_SUBDIR}")
83 if(NOT WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
84 set(_PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${CMAKE_OPENCV_GCC_VERSION_MAJOR}.${CMAKE_OPENCV_GCC_VERSION_MINOR}")
89 set(PVAPI_DEFINITIONS "-DPVDECL=__stdcall")
91 set(PVAPI_LIBRARY "${_PVAPI_LIBRARY}/PvAPI.lib" CACHE PATH "The PvAPI library")
93 set(PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${CMAKE_STATIC_LIBRARY_PREFIX}PvAPI${CMAKE_STATIC_LIBRARY_SUFFIX}" CACHE PATH "The PvAPI library")
95 if(EXISTS "${PVAPI_LIBRARY}")
98 endif(PVAPI_INCLUDE_PATH)
101 # --- GigEVisionSDK ---
102 ocv_clear_vars(HAVE_GIGE_API)
104 find_path(GIGEAPI_INCLUDE_PATH "GigEVisionSDK.h"
105 PATHS /usr/local /var /opt /usr ENV ProgramFiles ENV ProgramW6432
106 PATH_SUFFIXES include "Smartek Vision Technologies/GigEVisionSDK/gige_cpp" "GigEVisionSDK/gige_cpp" "GigEVisionSDK/gige_c"
107 DOC "The path to Smartek GigEVisionSDK header")
108 FIND_LIBRARY(GIGEAPI_LIBRARIES NAMES GigEVisionSDK)
109 if(GIGEAPI_LIBRARIES AND GIGEAPI_INCLUDE_PATH)
110 set(HAVE_GIGE_API TRUE)
115 ocv_clear_vars(HAVE_DC1394 HAVE_DC1394_2)
118 find_path(CMU1394_INCLUDE_PATH "/1394common.h"
119 PATH_SUFFIXES include
120 DOC "The path to cmu1394 headers")
121 find_path(DC1394_2_INCLUDE_PATH "/dc1394/dc1394.h"
122 PATH_SUFFIXES include
123 DOC "The path to DC1394 2.x headers")
124 if(CMU1394_INCLUDE_PATH AND DC1394_2_INCLUDE_PATH)
125 set(CMU1394_LIB_DIR "${CMU1394_INCLUDE_PATH}/../lib" CACHE PATH "Full path of CMU1394 library directory")
126 set(DC1394_2_LIB_DIR "${DC1394_2_INCLUDE_PATH}/../lib" CACHE PATH "Full path of DC1394 2.x library directory")
127 if(EXISTS "${CMU1394_LIB_DIR}/lib1394camera.a" AND EXISTS "${DC1394_2_LIB_DIR}/libdc1394.a")
128 set(HAVE_DC1394_2 TRUE)
132 ocv_parse_pkg("libdc1394-2" "${DC1394_2_LIB_DIR}/pkgconfig" "")
133 ocv_include_directories(${DC1394_2_INCLUDE_PATH})
134 set(VIDEOIO_LIBRARIES ${VIDEOIO_LIBRARIES}
135 "${DC1394_2_LIB_DIR}/libdc1394.a"
136 "${CMU1394_LIB_DIR}/lib1394camera.a")
138 else(WIN32 AND MINGW)
139 CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)
140 if(NOT HAVE_DC1394_2)
141 CHECK_MODULE(libdc1394 HAVE_DC1394)
143 endif(WIN32 AND MINGW)
147 ocv_clear_vars(HAVE_XINE)
149 CHECK_MODULE(libxine HAVE_XINE)
153 ocv_clear_vars(HAVE_LIBV4L HAVE_CAMV4L HAVE_CAMV4L2 HAVE_VIDEOIO)
156 CHECK_MODULE(libv4l1 HAVE_LIBV4L)
158 CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
159 CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
160 CHECK_INCLUDE_FILE(sys/videoio.h HAVE_VIDEOIO)
164 ocv_clear_vars(HAVE_OPENNI HAVE_OPENNI_PRIME_SENSOR_MODULE)
166 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenNI.cmake")
169 ocv_clear_vars(HAVE_OPENNI2)
171 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenNI2.cmake")
175 ocv_clear_vars(HAVE_XIMEA)
177 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindXimea.cmake")
184 ocv_clear_vars(HAVE_FFMPEG HAVE_FFMPEG_CODEC HAVE_FFMPEG_FORMAT HAVE_FFMPEG_UTIL HAVE_FFMPEG_SWSCALE HAVE_GENTOO_FFMPEG HAVE_FFMPEG_FFMPEG)
186 if(WIN32 AND NOT ARM)
187 include("${OpenCV_SOURCE_DIR}/3rdparty/ffmpeg/ffmpeg_version.cmake")
189 CHECK_MODULE(libavcodec HAVE_FFMPEG_CODEC)
190 CHECK_MODULE(libavformat HAVE_FFMPEG_FORMAT)
191 CHECK_MODULE(libavutil HAVE_FFMPEG_UTIL)
192 CHECK_MODULE(libswscale HAVE_FFMPEG_SWSCALE)
194 CHECK_INCLUDE_FILE(libavformat/avformat.h HAVE_GENTOO_FFMPEG)
195 CHECK_INCLUDE_FILE(ffmpeg/avformat.h HAVE_FFMPEG_FFMPEG)
196 if(NOT HAVE_GENTOO_FFMPEG AND NOT HAVE_FFMPEG_FFMPEG)
197 if(EXISTS /usr/include/ffmpeg/libavformat/avformat.h OR HAVE_FFMPEG_SWSCALE)
198 set(HAVE_GENTOO_FFMPEG TRUE)
201 if(HAVE_FFMPEG_CODEC AND HAVE_FFMPEG_FORMAT AND HAVE_FFMPEG_UTIL AND HAVE_FFMPEG_SWSCALE)
202 set(HAVE_FFMPEG TRUE)
206 # Find the bzip2 library because it is required on some systems
207 FIND_LIBRARY(BZIP2_LIBRARIES NAMES bz2 bzip2)
208 if(NOT BZIP2_LIBRARIES)
210 FIND_FILE(BZIP2_LIBRARIES NAMES libbz2.so.1 PATHS /lib)
216 find_path(FFMPEG_INCLUDE_DIR "libavformat/avformat.h"
217 PATHS /usr/local /usr /opt
218 PATH_SUFFIXES include
219 DOC "The path to FFMPEG headers")
220 if(FFMPEG_INCLUDE_DIR)
221 set(HAVE_GENTOO_FFMPEG TRUE)
222 set(FFMPEG_LIB_DIR "${FFMPEG_INCLUDE_DIR}/../lib" CACHE PATH "Full path of FFMPEG library directory")
223 if(EXISTS "${FFMPEG_LIB_DIR}/libavcodec.a")
224 set(HAVE_FFMPEG_CODEC 1)
225 set(ALIASOF_libavcodec_VERSION "Unknown")
226 if(EXISTS "${FFMPEG_LIB_DIR}/libavformat.a")
227 set(HAVE_FFMPEG_FORMAT 1)
228 set(ALIASOF_libavformat_VERSION "Unknown")
229 if(EXISTS "${FFMPEG_LIB_DIR}/libavutil.a")
230 set(HAVE_FFMPEG_UTIL 1)
231 set(ALIASOF_libavutil_VERSION "Unknown")
232 if(EXISTS "${FFMPEG_LIB_DIR}/libswscale.a")
233 set(HAVE_FFMPEG_SWSCALE 1)
234 set(ALIASOF_libswscale_VERSION "Unknown")
240 endif(FFMPEG_INCLUDE_DIR)
242 set(VIDEOIO_LIBRARIES ${VIDEOIO_LIBRARIES} "${FFMPEG_LIB_DIR}/libavcodec.a"
243 "${FFMPEG_LIB_DIR}/libavformat.a" "${FFMPEG_LIB_DIR}/libavutil.a"
244 "${FFMPEG_LIB_DIR}/libswscale.a")
245 ocv_include_directories(${FFMPEG_INCLUDE_DIR})
250 # --- VideoInput/DirectShow ---
252 # always have VideoInput on Windows
256 # --- VideoInput/Microsoft Media Foundation ---
257 ocv_clear_vars(HAVE_MSMF)
259 check_include_file(Mfapi.h HAVE_MSMF)
262 # --- Extra HighGUI and VideoIO libs on Windows ---
264 list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32 setupapi ws2_32)
265 list(APPEND VIDEOIO_LIBRARIES vfw32)
267 list(APPEND VIDEOIO_LIBRARIES avifil32 avicap32 winmm msvfw32)
268 list(REMOVE_ITEM VIDEOIO_LIBRARIES vfw32)
270 list(APPEND VIDEOIO_LIBRARIES winmm)
274 # --- Apple AV Foundation ---
275 if(WITH_AVFOUNDATION)
276 set(HAVE_AVFOUNDATION YES)
282 set(HAVE_QUICKTIME YES)
283 elseif(APPLE AND CMAKE_COMPILER_IS_CLANGCXX)
288 # --- Intel Perceptual Computing SDK ---
290 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIntelPerCSDK.cmake")
291 endif(WITH_INTELPERC)