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 if 0.10 was not requested
16 if(WITH_GSTREAMER AND NOT WITH_GSTREAMER_0_10)
18 SET(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_LIST_DIR}")
19 FIND_PACKAGE(GstreamerWindows)
20 IF(GSTREAMER_gstbase_LIBRARY AND GSTREAMER_gstvideo_LIBRARY AND GSTREAMER_gstapp_LIBRARY AND GSTREAMER_gstpbutils_LIBRARY AND GSTREAMER_gstriff_LIBRARY)
21 set(HAVE_GSTREAMER TRUE)
22 set(GSTREAMER_BASE_VERSION 1.0)
23 set(GSTREAMER_VIDEO_VERSION 1.0)
24 set(GSTREAMER_APP_VERSION 1.0)
25 set(GSTREAMER_RIFF_VERSION 1.0)
26 set(GSTREAMER_PBUTILS_VERSION 1.0)
27 ENDIF(GSTREAMER_gstbase_LIBRARY AND GSTREAMER_gstvideo_LIBRARY AND GSTREAMER_gstapp_LIBRARY AND GSTREAMER_gstpbutils_LIBRARY AND GSTREAMER_gstriff_LIBRARY)
30 ocv_check_modules(GSTREAMER-1.0 gstreamer-base-1.0 gstreamer-video-1.0 gstreamer-app-1.0 gstreamer-riff-1.0 gstreamer-pbutils-1.0)
31 if(HAVE_GSTREAMER-1.0)
32 set(HAVE_GSTREAMER TRUE)
33 ocv_append_build_options(VIDEOIO GSTREAMER-1.0)
34 set(GSTREAMER_BASE_VERSION ${GSTREAMER-1.0_gstreamer-base-1.0_VERSION})
35 set(GSTREAMER_VIDEO_VERSION ${GSTREAMER-1.0_gstreamer-video-1.0_VERSION})
36 set(GSTREAMER_APP_VERSION ${GSTREAMER-1.0_gstreamer-app-1.0_VERSION})
37 set(GSTREAMER_RIFF_VERSION ${GSTREAMER-1.0_gstreamer-riff-1.0_VERSION})
38 set(GSTREAMER_PBUTILS_VERSION ${GSTREAMER-1.0_gstreamer-pbutils-1.0_VERSION})
43 # if gstreamer 1.x was not found, or we specified we wanted 0.10, try to find it
44 if(WITH_GSTREAMER AND NOT HAVE_GSTREAMER OR WITH_GSTREAMER_0_10)
45 ocv_check_modules(GSTREAMER-0.10 gstreamer-base-0.10 gstreamer-video-0.10 gstreamer-app-0.10 gstreamer-riff-0.10 gstreamer-pbutils-0.10)
46 if(HAVE_GSTREAMER-0.10)
47 set(HAVE_GSTREAMER TRUE)
48 ocv_append_build_options(VIDEOIO GSTREAMER-0.10)
49 set(GSTREAMER_BASE_VERSION ${GSTREAMER-0.10_gstreamer-base-0.10_VERSION})
50 set(GSTREAMER_VIDEO_VERSION ${GSTREAMER-0.10_gstreamer-video-0.10_VERSION})
51 set(GSTREAMER_APP_VERSION ${GSTREAMER-0.10_gstreamer-app-0.10_VERSION})
52 set(GSTREAMER_RIFF_VERSION ${GSTREAMER-0.10_gstreamer-riff-0.10_VERSION})
53 set(GSTREAMER_PBUTILS_VERSION ${GSTREAMER-0.10_gstreamer-pbutils-0.10_VERSION})
58 ocv_clear_vars(HAVE_UNICAP)
60 ocv_check_modules(HAVE_UNICAP libunicap libucil)
62 ocv_append_build_options(VIDEOIO UNICAP)
67 ocv_clear_vars(HAVE_PVAPI)
69 find_path(PVAPI_INCLUDE_PATH "PvApi.h"
70 PATHS /usr/local /opt /usr ENV ProgramFiles ENV ProgramW6432
71 PATH_SUFFIXES include "Allied Vision Technologies/GigESDK/inc-pc" "AVT GigE SDK/inc-pc" "GigESDK/inc-pc"
72 DOC "The path to PvAPI header")
74 if(PVAPI_INCLUDE_PATH)
76 set(PVAPI_SDK_SUBDIR x86)
78 set(PVAPI_SDK_SUBDIR x64)
80 set(PVAPI_SDK_SUBDIR arm)
83 get_filename_component(_PVAPI_LIBRARY_HINT "${PVAPI_INCLUDE_PATH}/../lib-pc" ABSOLUTE)
85 find_library(PVAPI_LIBRARY NAMES "PvAPI" PATHS "${_PVAPI_LIBRARY_HINT}")
90 set(PVAPI_DEFINITIONS "-DPVDECL=__stdcall")
95 endif(PVAPI_INCLUDE_PATH)
98 # --- GigEVisionSDK ---
99 ocv_clear_vars(HAVE_GIGE_API)
101 find_path(GIGEAPI_INCLUDE_PATH "GigEVisionSDK.h"
102 PATHS /usr/local /var /opt /usr ENV ProgramFiles ENV ProgramW6432
103 PATH_SUFFIXES include "Smartek Vision Technologies/GigEVisionSDK/gige_cpp" "GigEVisionSDK/gige_cpp" "GigEVisionSDK/gige_c"
104 DOC "The path to Smartek GigEVisionSDK header")
105 FIND_LIBRARY(GIGEAPI_LIBRARIES NAMES GigEVisionSDK)
106 if(GIGEAPI_LIBRARIES AND GIGEAPI_INCLUDE_PATH)
107 set(HAVE_GIGE_API TRUE)
112 ocv_clear_vars(HAVE_ARAVIS_API)
114 ocv_check_modules(ARAVIS_GLIB glib-2.0)
116 find_path(ARAVIS_INCLUDE_PATH "arv.h"
117 PATHS /usr/local /var /opt /usr ENV ProgramFiles ENV ProgramW6432
118 PATH_SUFFIXES include "aravis-0.6" "aravis-0.4"
119 DOC "The path to Aravis SDK headers")
120 find_library(ARAVIS_LIBRARIES NAMES "aravis-0.6" "aravis-0.4" )
121 if(ARAVIS_LIBRARIES AND ARAVIS_INCLUDE_PATH)
122 ocv_append_build_options(VIDEOIO ARAVIS_GLIB)
123 set(HAVE_ARAVIS_API TRUE)
126 message("Can not build Aravis support without glib2")
131 ocv_clear_vars(HAVE_DC1394 HAVE_DC1394_2)
134 # TODO remove this, use pkgconfig from MinGW instead
135 find_path(CMU1394_INCLUDE_PATH "/1394common.h"
136 PATH_SUFFIXES include
137 DOC "The path to cmu1394 headers")
138 find_path(DC1394_2_INCLUDE_PATH "/dc1394/dc1394.h"
139 PATH_SUFFIXES include
140 DOC "The path to DC1394 2.x headers")
141 if(CMU1394_INCLUDE_PATH AND DC1394_2_INCLUDE_PATH)
142 set(CMU1394_LIB_DIR "${CMU1394_INCLUDE_PATH}/../lib" CACHE PATH "Full path of CMU1394 library directory")
143 set(DC1394_2_LIB_DIR "${DC1394_2_INCLUDE_PATH}/../lib" CACHE PATH "Full path of DC1394 2.x library directory")
144 if(EXISTS "${CMU1394_LIB_DIR}/lib1394camera.a" AND EXISTS "${DC1394_2_LIB_DIR}/libdc1394.a")
145 set(HAVE_DC1394_2 TRUE)
149 ocv_parse_pkg(DC1394_2_VERSION "libdc1394-2" "${DC1394_2_LIB_DIR}/pkgconfig")
150 ocv_include_directories(${DC1394_2_INCLUDE_PATH})
151 set(VIDEOIO_LIBRARIES ${VIDEOIO_LIBRARIES}
152 "${DC1394_2_LIB_DIR}/libdc1394.a"
153 "${CMU1394_LIB_DIR}/lib1394camera.a")
156 if(NOT HAVE_DC1394_2)
157 ocv_check_modules(DC1394_2 libdc1394-2)
159 ocv_append_build_options(VIDEOIO DC1394_2)
161 ocv_check_modules(DC1394 libdc1394)
163 ocv_append_build_options(VIDEOIO DC1394)
170 ocv_clear_vars(HAVE_XINE)
172 ocv_check_modules(XINE libxine)
174 ocv_append_build_options(VIDEOIO XINE)
179 ocv_clear_vars(HAVE_LIBV4L HAVE_CAMV4L HAVE_CAMV4L2 HAVE_VIDEOIO)
182 ocv_check_modules(LIBV4L libv4l1 libv4l2)
184 ocv_append_build_options(VIDEOIO LIBV4L)
187 CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
188 CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
189 CHECK_INCLUDE_FILE(sys/videoio.h HAVE_VIDEOIO)
193 ocv_clear_vars(HAVE_OPENNI HAVE_OPENNI_PRIME_SENSOR_MODULE)
195 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenNI.cmake")
198 ocv_clear_vars(HAVE_OPENNI2)
200 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenNI2.cmake")
204 ocv_clear_vars(HAVE_XIMEA)
206 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindXimea.cmake")
213 ocv_clear_vars(HAVE_FFMPEG)
214 if(WITH_FFMPEG) # try FFmpeg autodetection
215 if(OPENCV_FFMPEG_USE_FIND_PACKAGE)
216 if(OPENCV_FFMPEG_USE_FIND_PACKAGE STREQUAL "1" OR OPENCV_FFMPEG_USE_FIND_PACKAGE STREQUAL "ON")
217 set(OPENCV_FFMPEG_USE_FIND_PACKAGE "FFMPEG")
219 find_package(${OPENCV_FFMPEG_USE_FIND_PACKAGE}) # Required components: AVCODEC AVFORMAT AVUTIL SWSCALE
220 if(FFMPEG_FOUND OR FFmpeg_FOUND)
221 set(HAVE_FFMPEG TRUE)
223 message(STATUS "Can't find FFmpeg via find_package(${OPENCV_FFMPEG_USE_FIND_PACKAGE})")
225 elseif(WIN32 AND NOT ARM AND NOT OPENCV_FFMPEG_SKIP_DOWNLOAD)
226 include("${OpenCV_SOURCE_DIR}/3rdparty/ffmpeg/ffmpeg.cmake")
227 download_win_ffmpeg(FFMPEG_CMAKE_SCRIPT)
228 if(FFMPEG_CMAKE_SCRIPT)
229 set(HAVE_FFMPEG TRUE)
230 set(HAVE_FFMPEG_WRAPPER 1)
231 include("${FFMPEG_CMAKE_SCRIPT}")
233 elseif(PKG_CONFIG_FOUND)
234 ocv_check_modules(FFMPEG libavcodec libavformat libavutil libswscale)
235 ocv_check_modules(FFMPEG_libavresample libavresample)
236 if(FFMPEG_libavresample_FOUND)
237 ocv_append_build_options(FFMPEG FFMPEG_libavresample)
240 message(STATUS "Can't find ffmpeg - 'pkg-config' utility is missing")
244 AND NOT HAVE_FFMPEG_WRAPPER
246 try_compile(__VALID_FFMPEG
247 "${OpenCV_BINARY_DIR}"
248 "${OpenCV_SOURCE_DIR}/cmake/checks/ffmpeg_test.cpp"
249 CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${FFMPEG_INCLUDE_DIRS}"
250 "-DLINK_DIRECTORIES:STRING=${FFMPEG_LIBRARY_DIRS}"
251 "-DLINK_LIBRARIES:STRING=${FFMPEG_LIBRARIES}"
252 OUTPUT_VARIABLE TRY_OUT
254 if(NOT __VALID_FFMPEG)
255 #message(FATAL_ERROR "FFMPEG: test check build log:\n${TRY_OUT}")
256 message(STATUS "WARNING: Can't build ffmpeg test code")
257 set(HAVE_FFMPEG FALSE)
259 ocv_append_build_options(VIDEOIO FFMPEG)
263 # --- VideoInput/DirectShow ---
265 if(MSVC_VERSION GREATER 1499)
267 elseif(NOT HAVE_DSHOW)
268 check_include_file(DShow.h HAVE_DSHOW)
272 # --- VideoInput/Microsoft Media Foundation ---
273 ocv_clear_vars(HAVE_MSMF)
275 check_include_file(Mfapi.h HAVE_MSMF)
276 set(HAVE_MSMF_DXVA "")
278 check_include_file(D3D11.h D3D11_found)
279 check_include_file(D3d11_4.h D3D11_4_found)
280 if(D3D11_found AND D3D11_4_found)
281 set(HAVE_MSMF_DXVA YES)
286 # --- Extra HighGUI and VideoIO libs on Windows ---
288 list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32 setupapi ws2_32)
290 list(APPEND VIDEOIO_LIBRARIES vfw32)
292 if(MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 8)
293 list(APPEND VIDEOIO_LIBRARIES avifil32 avicap32 winmm msvfw32)
294 list(REMOVE_ITEM VIDEOIO_LIBRARIES vfw32)
296 list(APPEND VIDEOIO_LIBRARIES winmm)
301 if(WITH_AVFOUNDATION)
302 set(HAVE_AVFOUNDATION YES)
306 set(HAVE_QUICKTIME YES)
313 # --- Intel Perceptual Computing SDK ---
315 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIntelPerCSDK.cmake")
316 endif(WITH_INTELPERC)
319 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectMediaSDK.cmake")
323 ocv_clear_vars(HAVE_GPHOTO2)
325 ocv_check_modules(GPHOTO2 libgphoto2)
327 ocv_append_build_options(VIDEOIO GPHOTO2)
331 # --- VA & VA_INTEL ---
333 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindVA_INTEL.cmake")
334 if(VA_INTEL_IOCL_INCLUDE_DIR)
335 ocv_include_directories(${VA_INTEL_IOCL_INCLUDE_DIR})
341 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindVA.cmake")
343 ocv_include_directories(${VA_INCLUDE_DIR})