diff --git a/cmake/Modules/FindLibswscale.cmake b/cmake/Modules/FindLibswscale.cmake new file mode 100644 index 000000000..6bdabce0d --- /dev/null +++ b/cmake/Modules/FindLibswscale.cmake @@ -0,0 +1,40 @@ +# Once done these will be defined: +# +# Libswscale_FOUND +# Libswscale_INCLUDE_DIR +# Libswscale_LIBRARIES +# + +if(Libswscale_INCLUDE_DIR AND Libswscale_LIBRARIES) + set(Libswscale_FOUND TRUE) +else() + find_package(PkgConfig QUIET) + if (PKG_CONFIG_FOUND) + pkg_check_modules(_SWSCALE QUIET libswscale) + endif() + + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(_lib_suffix 64) + else() + set(_lib_suffix 32) + endif() + + find_path(FFMPEG_INCLUDE_DIR + NAMES libswscale/swscale.h + HINTS + ENV FFmpegPath + ${_SWSCALE_INCLUDE_DIRS} + /usr/include /usr/local/include /opt/local/include /sw/include + PATH_SUFFIXES ffmpeg libav) + + find_library(SWSCALE_LIB + NAMES swscale + HINTS ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} ${_SWSCALE_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib) + + set(Libswscale_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR} CACHE PATH "Libswscale include dir") + set(Libswscale_LIBRARIES ${SWSCALE_LIB} CACHE STRING "Libswscale libraries") + + find_package_handle_standard_args(Libswscale DEFAULT_MSG SWSCALE_LIB FFMPEG_INCLUDE_DIR) + mark_as_advanced(FFMPEG_INCLUDE_DIR SWSCALE_LIB) +endif() + diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index cb0521fcd..fc87e6dff 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -4,5 +4,5 @@ if(WIN32) add_subdirectory(dshow) endif() -#add_subdirectory(obs-ffmpeg) +add_subdirectory(obs-ffmpeg) add_subdirectory(obs-outputs) diff --git a/plugins/obs-ffmpeg/CMakeLists.txt b/plugins/obs-ffmpeg/CMakeLists.txt index ce58dd6f1..16466b675 100644 --- a/plugins/obs-ffmpeg/CMakeLists.txt +++ b/plugins/obs-ffmpeg/CMakeLists.txt @@ -1,5 +1,13 @@ project(obs-ffmpeg) +find_package(Libavcodec REQUIRED) +include_directories(${Libavcodec_INCLUDE_DIR}) +add_definitions(${Libavcodec_DEFINITIONS}) + +find_package(Libswscale REQUIRED) +include_directories(${Libswscale_INCLUDE_DIR}) +add_definitions(${Libswscale_DEFINITIONS}) + find_package(Libavformat REQUIRED) include_directories(${Libavformat_INCLUDE_DIR}) add_definitions(${Libavformat_DEFINITIONS}) @@ -20,10 +28,14 @@ add_library(obs-ffmpeg MODULE ${obs-ffmpeg_HEADERS}) target_link_libraries(obs-ffmpeg libobs + ${Libavcodec_LIBRARIES} + ${Libswscale_LIBRARIES} ${Libavformat_LIBRARIES} ${Libswresample_LIBRARIES}) install_obs_plugin(obs-ffmpeg) +obs_fixup_install_target(obs-ffmpeg PATH ${Libavcodec_LIBRARIES}) +obs_fixup_install_target(obs-ffmpeg PATH ${Libswscale_LIBRARIES}) obs_fixup_install_target(obs-ffmpeg PATH ${Libavformat_LIBRARIES}) obs_fixup_install_target(obs-ffmpeg PATH ${Libswresample_LIBRARIES}) diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-output.c b/plugins/obs-ffmpeg/obs-ffmpeg-output.c index 0139b1c28..d3183c809 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-output.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-output.c @@ -44,7 +44,7 @@ static inline enum AVPixelFormat obs_to_ffmpeg_video_format( } static bool new_stream(struct ffmpeg_data *data, AVStream **stream, - AVCodec **codec, enum AVCoecID id) + AVCodec **codec, enum AVCodecID id) { *codec = avcodec_find_encoder(id); if (!*codec) {