FindFFMPEG.cmake 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # - Try to find ffmpeg libraries (libavcodec, libavformat, libavutil and libswscale)
  2. # Once done this will define
  3. #
  4. # FFMPEG_FOUND - system has ffmpeg or libav
  5. # FFMPEG_INCLUDE_DIR - the ffmpeg include directory
  6. # FFMPEG_LIBRARIES - Link these to use ffmpeg
  7. # FFMPEG_LIBAVCODEC
  8. # FFMPEG_LIBAVFORMAT
  9. # FFMPEG_LIBAVUTIL
  10. # FFMPEG_LIBSWSCALE
  11. #
  12. # Copyright (c) 2008 Andreas Schneider <mail@cynapses.org>
  13. # Modified for other libraries by Lasse Kärkkäinen <tronic>
  14. # Modified for Hedgewars by Stepik777
  15. # Modified for FFmpeg-example Tuukka Pasanen 2018
  16. #
  17. # Redistribution and use is allowed according to the terms of the New
  18. # BSD license.
  19. #
  20. include(FindPackageHandleStandardArgs)
  21. find_package_handle_standard_args(FFMPEG
  22. FOUND_VAR FFMPEG_FOUND
  23. VERSION_VAR FFMPEG_VERSION
  24. HANDLE_COMPONENTS
  25. REQUIRED_VARS
  26. )
  27. if(FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
  28. # in cache already
  29. set(FFMPEG_FOUND TRUE)
  30. else()
  31. # use pkg-config to get the directories and then use these values
  32. # in the FIND_PATH() and FIND_LIBRARY() calls
  33. find_package(PkgConfig)
  34. if(PKG_CONFIG_FOUND)
  35. pkg_check_modules(_FFMPEG_AVCODEC libavcodec)
  36. pkg_check_modules(_FFMPEG_AVFORMAT libavformat)
  37. pkg_check_modules(_FFMPEG_AVUTIL libavutil)
  38. pkg_check_modules(_FFMPEG_SWSCALE libswscale)
  39. endif()
  40. find_path(FFMPEG_AVCODEC_INCLUDE_DIR
  41. NAMES libavcodec/avcodec.h
  42. PATHS ${_FFMPEG_AVCODEC_INCLUDE_DIRS}
  43. /usr/include
  44. /usr/local/include
  45. /opt/local/include
  46. /sw/include
  47. PATH_SUFFIXES ffmpeg libav)
  48. find_library(FFMPEG_LIBAVCODEC
  49. NAMES avcodec
  50. PATHS ${_FFMPEG_AVCODEC_LIBRARY_DIRS}
  51. /usr/lib
  52. /usr/local/lib
  53. /opt/local/lib
  54. /sw/lib)
  55. find_library(FFMPEG_LIBAVFORMAT
  56. NAMES avformat
  57. PATHS ${_FFMPEG_AVFORMAT_LIBRARY_DIRS}
  58. /usr/lib
  59. /usr/local/lib
  60. /opt/local/lib
  61. /sw/lib)
  62. find_library(FFMPEG_LIBAVUTIL
  63. NAMES avutil
  64. PATHS ${_FFMPEG_AVUTIL_LIBRARY_DIRS}
  65. /usr/lib
  66. /usr/local/lib
  67. /opt/local/lib
  68. /sw/lib)
  69. find_library(FFMPEG_LIBSWSCALE
  70. NAMES swscale
  71. PATHS ${_FFMPEG_SWSCALE_LIBRARY_DIRS}
  72. /usr/lib
  73. /usr/local/lib
  74. /opt/local/lib
  75. /sw/lib)
  76. find_library(FFMPEG_LIBSWRESAMPLE
  77. NAMES swresample
  78. PATHS ${_FFMPEG_SWRESAMPLE_LIBRARY_DIRS}
  79. /usr/lib
  80. /usr/local/lib
  81. /opt/local/lib
  82. /sw/lib)
  83. if(FFMPEG_LIBAVCODEC AND FFMPEG_LIBAVFORMAT)
  84. set(FFMPEG_FOUND TRUE)
  85. endif()
  86. if(FFMPEG_FOUND)
  87. set(FFMPEG_INCLUDE_DIR ${FFMPEG_AVCODEC_INCLUDE_DIR})
  88. set(FFMPEG_LIBRARIES
  89. ${FFMPEG_LIBAVCODEC}
  90. ${FFMPEG_LIBAVFORMAT}
  91. ${FFMPEG_LIBAVUTIL}
  92. ${FFMPEG_LIBSWSCALE}
  93. ${FFMPEG_LIBSWRESAMPLE})
  94. endif()
  95. if(FFMPEG_FOUND)
  96. if(NOT FFMPEG_FIND_QUIETLY)
  97. message(STATUS
  98. "Found FFMPEG or Libav: ${FFMPEG_LIBRARIES}, ${FFMPEG_INCLUDE_DIR}")
  99. endif()
  100. else()
  101. if(FFMPEG_FIND_REQUIRED)
  102. message(FATAL_ERROR
  103. "Could not find libavcodec or libavformat or libavutil or libswscale")
  104. endif()
  105. endif()
  106. endif()