summaryrefslogtreecommitdiffstats
path: root/cmake/FindFFmpeg.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/FindFFmpeg.cmake')
-rw-r--r--cmake/FindFFmpeg.cmake78
1 files changed, 78 insertions, 0 deletions
diff --git a/cmake/FindFFmpeg.cmake b/cmake/FindFFmpeg.cmake
new file mode 100644
index 0000000..ef65af4
--- /dev/null
+++ b/cmake/FindFFmpeg.cmake
@@ -0,0 +1,78 @@
+# - Try to find FFmpeg
+# Using Pkg-config if available for path
+#
+# FFMPEG_FOUND - all required ffmpeg components found on system
+# FFMPEG_INCLUDE_DIRS - combined include directories
+# FFMPEG_LIBRARIES - combined libraries to link
+
+set(REQUIRED_AVCODEC_VERSION 0.8)
+set(REQUIRED_AVCODEC_API_VERSION 53.25.0)
+
+find_package(PkgConfig)
+
+if (PKG_CONFIG_FOUND)
+ pkg_check_modules(AVCODEC libavcodec)
+ pkg_check_modules(AVUTIL libavutil)
+ pkg_check_modules(AVRESAMPLE libavresample)
+ pkg_check_modules(SWRESAMPLE libswresample)
+endif(PKG_CONFIG_FOUND)
+
+# avcodec
+find_path(AVCODEC_INCLUDE_DIR libavcodec/avcodec.h PATHS ${AVCODEC_INCLUDE_DIRS})
+find_library(AVCODEC_LIBRARY avcodec PATHS ${AVCODEC_LIBRARY_DIRS})
+
+# avutil
+find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h PATHS ${AVUTIL_INCLUDE_DIRS})
+find_library(AVUTIL_LIBRARY avutil PATHS ${AVUTIL_LIBRARY_DIRS})
+
+# swresample
+find_path(SWRESAMPLE_INCLUDE_DIR libswresample/swresample.h PATHS ${SWRESAMPLE_INCLUDE_DIRS})
+find_library(SWRESAMPLE_LIBRARY NAMES swresample swresample-3 PATHS ${SWRESAMPLE_LIBRARY_DIRS})
+
+if (SWRESAMPLE_INCLUDE_DIR AND SWRESAMPLE_LIBRARY)
+ set(SWRESAMPLE_FOUND ON)
+endif()
+
+# avresample
+find_path(AVRESAMPLE_INCLUDE_DIR libavresample/avresample.h PATHS ${AVRESAMPLE_INCLUDE_DIRS})
+find_library(AVRESAMPLE_LIBRARY avresample PATHS ${AVRESAMPLE_LIBRARY_DIRS})
+
+if (AVRESAMPLE_INCLUDE_DIR AND AVRESAMPLE_LIBRARY)
+ set(AVRESAMPLE_FOUND ON)
+endif()
+
+if (AVCODEC_INCLUDE_DIR AND AVCODEC_LIBRARY)
+ set(AVCODEC_FOUND TRUE)
+endif(AVCODEC_INCLUDE_DIR AND AVCODEC_LIBRARY)
+
+if (AVUTIL_INCLUDE_DIR AND AVUTIL_LIBRARY)
+ set(AVUTIL_FOUND TRUE)
+endif(AVUTIL_INCLUDE_DIR AND AVUTIL_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+if (SWRESAMPLE_FOUND)
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFmpeg DEFAULT_MSG AVUTIL_FOUND AVCODEC_FOUND SWRESAMPLE_FOUND)
+else()
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFmpeg DEFAULT_MSG AVUTIL_FOUND AVCODEC_FOUND AVRESAMPLE_FOUND)
+endif()
+
+if (AVCODEC_VERSION)
+ if (${AVCODEC_VERSION} VERSION_LESS ${REQUIRED_AVCODEC_API_VERSION})
+ message(FATAL_ERROR
+ "libavcodec version >= ${REQUIRED_AVCODEC_VERSION} (API >= ${REQUIRED_AVCODEC_API_VERSION}) is required")
+ endif()
+else(AVCODEC_VERSION)
+ message("Note: To build libavcodec version >= ${REQUIRED_AVCODEC_VERSION} (API >= ${REQUIRED_AVCODEC_API_VERSION}) is required")
+endif(AVCODEC_VERSION)
+
+if (FFMPEG_FOUND)
+ if (SWRESAMPLE_FOUND)
+ set(FFMPEG_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIR} ${AVUTIL_INCLUDE_DIR} ${SWRESAMPLE_INCLUDE_DIR})
+ set(FFMPEG_LIBRARIES ${AVCODEC_LIBRARY} ${AVUTIL_LIBRARY} ${SWRESAMPLE_LIBRARY})
+ elseif (AVRESAMPLE_FOUND)
+ set(FFMPEG_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIR} ${AVUTIL_INCLUDE_DIR} ${AVRESAMPLE_INCLUDE_DIR})
+ set(FFMPEG_LIBRARIES ${AVCODEC_LIBRARY} ${AVUTIL_LIBRARY} ${AVRESAMPLE_LIBRARY})
+ endif()
+endif(FFMPEG_FOUND)
+
+mark_as_advanced(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES)