123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- # --- FFMPEG ---
- if(NOT HAVE_FFMPEG AND OPENCV_FFMPEG_USE_FIND_PACKAGE)
- if(OPENCV_FFMPEG_USE_FIND_PACKAGE STREQUAL "1" OR OPENCV_FFMPEG_USE_FIND_PACKAGE STREQUAL "ON")
- set(OPENCV_FFMPEG_USE_FIND_PACKAGE "FFMPEG")
- endif()
- find_package(${OPENCV_FFMPEG_USE_FIND_PACKAGE}) # Required components: AVCODEC AVFORMAT AVUTIL SWSCALE
- if(FFMPEG_FOUND OR FFmpeg_FOUND)
- set(HAVE_FFMPEG TRUE)
- endif()
- endif()
- if(NOT HAVE_FFMPEG AND WIN32 AND NOT ARM AND NOT OPENCV_FFMPEG_SKIP_DOWNLOAD)
- include("${OpenCV_SOURCE_DIR}/3rdparty/ffmpeg/ffmpeg.cmake")
- download_win_ffmpeg(FFMPEG_CMAKE_SCRIPT)
- if(FFMPEG_CMAKE_SCRIPT)
- include("${FFMPEG_CMAKE_SCRIPT}")
- set(HAVE_FFMPEG TRUE)
- set(HAVE_FFMPEG_WRAPPER TRUE)
- endif()
- endif()
- set(_required_ffmpeg_libraries libavcodec libavformat libavutil libswscale)
- set(_used_ffmpeg_libraries ${_required_ffmpeg_libraries})
- if(NOT HAVE_FFMPEG AND PKG_CONFIG_FOUND)
- ocv_check_modules(FFMPEG libavcodec libavformat libavutil libswscale)
- if(FFMPEG_FOUND)
- ocv_check_modules(FFMPEG_libavresample libavresample) # optional
- if(FFMPEG_libavresample_FOUND)
- list(APPEND FFMPEG_LIBRARIES ${FFMPEG_libavresample_LIBRARIES})
- list(APPEND _used_ffmpeg_libraries libavresample)
- endif()
- set(HAVE_FFMPEG TRUE)
- else()
- set(_missing_ffmpeg_libraries "")
- foreach (ffmpeg_lib ${_required_ffmpeg_libraries})
- if (NOT FFMPEG_${ffmpeg_lib}_FOUND)
- list(APPEND _missing_ffmpeg_libraries ${ffmpeg_lib})
- endif()
- endforeach ()
- message(STATUS "FFMPEG is disabled. Required libraries: ${_required_ffmpeg_libraries}."
- " Missing libraries: ${_missing_ffmpeg_libraries}")
- unset(_missing_ffmpeg_libraries)
- endif()
- endif()
- #=================================
- # Versions check.
- if(HAVE_FFMPEG AND NOT HAVE_FFMPEG_WRAPPER)
- set(_min_libavcodec_version 54.35.0)
- set(_min_libavformat_version 54.20.4)
- set(_min_libavutil_version 52.3.0)
- set(_min_libswscale_version 2.1.1)
- set(_min_libavresample_version 1.0.1)
- foreach(ffmpeg_lib ${_used_ffmpeg_libraries})
- if(FFMPEG_${ffmpeg_lib}_VERSION VERSION_LESS _min_${ffmpeg_lib}_version)
- message(STATUS "FFMPEG is disabled. Can't find suitable ${ffmpeg_lib} library"
- " (minimal ${_min_${ffmpeg_lib}_version}, found ${FFMPEG_${ffmpeg_lib}_VERSION}).")
- set(HAVE_FFMPEG FALSE)
- endif()
- endforeach()
- if(NOT HAVE_FFMPEG)
- message(STATUS "FFMPEG libraries version check failed "
- "(minimal libav release 9.20, minimal FFMPEG release 1.1.16).")
- endif()
- unset(_min_libavcodec_version)
- unset(_min_libavformat_version)
- unset(_min_libavutil_version)
- unset(_min_libswscale_version)
- unset(_min_libavresample_version)
- endif()
- #==================================
- if(HAVE_FFMPEG AND NOT HAVE_FFMPEG_WRAPPER AND NOT OPENCV_FFMPEG_SKIP_BUILD_CHECK)
- try_compile(__VALID_FFMPEG
- "${OpenCV_BINARY_DIR}"
- "${OpenCV_SOURCE_DIR}/cmake/checks/ffmpeg_test.cpp"
- CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${FFMPEG_INCLUDE_DIRS}"
- "-DLINK_LIBRARIES:STRING=${FFMPEG_LIBRARIES}"
- OUTPUT_VARIABLE TRY_OUT
- )
- if(NOT __VALID_FFMPEG)
- # message(FATAL_ERROR "FFMPEG: test check build log:\n${TRY_OUT}")
- message(STATUS "WARNING: Can't build ffmpeg test code")
- set(HAVE_FFMPEG FALSE)
- endif()
- endif()
- #==================================
- unset(_required_ffmpeg_libraries)
- unset(_used_ffmpeg_libraries)
- if(HAVE_FFMPEG_WRAPPER)
- ocv_add_external_target(ffmpeg "" "" "HAVE_FFMPEG_WRAPPER")
- elseif(HAVE_FFMPEG)
- ocv_add_external_target(ffmpeg "${FFMPEG_INCLUDE_DIRS}" "${FFMPEG_LIBRARIES}" "HAVE_FFMPEG")
- set(__builtin_defines "")
- set(__builtin_include_dirs "")
- set(__builtin_libs "")
- set(__plugin_defines "")
- set(__plugin_include_dirs "")
- set(__plugin_libs "")
- if(HAVE_OPENCL)
- set(__opencl_dirs "")
- if(OPENCL_INCLUDE_DIRS)
- set(__opencl_dirs "${OPENCL_INCLUDE_DIRS}")
- elseif(OPENCL_INCLUDE_DIR)
- set(__opencl_dirs "${OPENCL_INCLUDE_DIR}")
- else()
- set(__opencl_dirs "${OpenCV_SOURCE_DIR}/3rdparty/include/opencl/1.2")
- endif()
- # extra dependencies for buildin code (OpenCL dir is required for extensions like cl_d3d11.h)
- # buildin HAVE_OPENCL is already defined through cvconfig.h
- list(APPEND __builtin_include_dirs "${__opencl_dirs}")
- # extra dependencies for
- list(APPEND __plugin_defines "HAVE_OPENCL")
- list(APPEND __plugin_include_dirs "${__opencl_dirs}")
- endif()
- # TODO: libva, d3d11
- if(__builtin_include_dirs OR __builtin_include_defines OR __builtin_include_libs)
- ocv_add_external_target(ffmpeg.builtin_deps "${__builtin_include_dirs}" "${__builtin_include_libs}" "${__builtin_defines}")
- endif()
- if(VIDEOIO_ENABLE_PLUGINS AND __plugin_include_dirs OR __plugin_include_defines OR __plugin_include_libs)
- ocv_add_external_target(ffmpeg.plugin_deps "${__plugin_include_dirs}" "${__plugin_include_libs}" "${__plugin_defines}")
- endif()
- endif()
|