diff --git a/CMakeLists.txt b/CMakeLists.txt index ea5dd5b..8260bc0 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ FILE( GLOB RESOURCES_FILES ${RSC_DIR}/*.qrc ) ###################################################################################### # Variables ###################################################################################### -ADD_OPTION(CMAKE_BUILD_TYPE "Build type" "Release" ) +# ADD_OPTION(CMAKE_BUILD_TYPE "Build type" "Release" ) ADD_OPTION(USE_WERROR "Warnings as errors" OFF ) ADD_OPTION(USE_QT4 "Build with QT4" OFF ) ADD_OPTION(USE_OPENCV "Add OpenCV support" OFF ) diff --git a/cmake/LibFFmpeg.cmake b/cmake/LibFFmpeg.cmake index 2f6841c..a72f267 100644 --- a/cmake/LibFFmpeg.cmake +++ b/cmake/LibFFmpeg.cmake @@ -8,110 +8,114 @@ # FFMPEG_SWSCALE_FOUND - FFMPEG also has SWSCALE # -SET( FFMPEG_HEADERS avformat.h avcodec.h avutil.h avdevice.h ) -SET( FFMPEG_PATH_SUFFIXES libavformat libavcodec libavutil libavdevice libffmpeg ) -SET( FFMPEG_SWS_HEADERS swscale.h ) -SET( FFMPEG_SWS_PATH_SUFFIXES libswscale ) - - -SET( FFMPEG_LIBRARIES avformat avcodec avutil avdevice ) -SET( FFMPEG_SWS_LIBRARIES swscale ) -INCLUDE(FindPkgConfig) -if ( PKG_CONFIG_FOUND ) - pkg_check_modules( AVFORMAT libavformat ) - pkg_check_modules( AVCODEC libavcodec ) - pkg_check_modules( AVUTIL libavutil ) - pkg_check_modules( AVDEVICE libavdevice ) - pkg_check_modules( SWSCALE libswscale ) -endif ( PKG_CONFIG_FOUND ) - -SET( FFMPEG_LIBRARY_DIR ${AVFORMAT_LIBRARY_DIRS} - ${AVCODEC_LIBRARY_DIRS} - ${AVUTIL_LIBRARY_DIRS} - ${AVDEVICE_LIBRARY_DIRS} ) -SET( FFMPEG_INCLUDE_PATHS ${AVFORMAT_INCLUDE_DIRS} - ${AVCODEC_INCLUDE_DIRS} - ${AVUTIL_INCLUDE_DIRS} - ${AVDEVICE_INCLUDE_DIRS} ) - - -# add in swscale if found -IF ( SWSCALE_FOUND ) - SET( FFMPEG_LIBRARY_DIR ${FFMPEG_LIBRARY_DIR} - ${SWSCALE_LIBRARY_DIRS} ) - SET( FFMPEG_INCLUDE_PATHS ${FFMPEG_INCLUDE_PATHS} - ${SWSCALE_INCLUDE_DIRS} ) - SET( FFMPEG_HEADERS ${FFMPEG_HEADERS} - ${FFMPEG_SWS_HEADERS} ) - SET( FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} - ${FFMPEG_SWS_PATH_SUFFIXES} ) - SET( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} - ${FFMPEG_SWS_LIBRARIES} ) -ENDIF ( SWSCALE_FOUND ) - -# find includes -SET( INC_SUCCESS 0 ) -SET( TMP_ TMP-NOTFOUND ) -SET( FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_PATHS} ) -FOREACH( INC_ ${FFMPEG_HEADERS} ) - message( "checking: " ${INC_} ) - - FIND_PATH( TMP_ ${INC_} - PATHS ${FFMPEG_INCLUDE_PATHS} - PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} ) - IF ( TMP_ ) - message( "found: " ${TMP_} ) - MATH( EXPR INC_SUCCESS ${INC_SUCCESS}+1 ) - SET( FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR} ${TMP_} ) - ENDIF ( TMP_ ) - SET( TMP_ TMP-NOTFOUND ) -ENDFOREACH( INC_ ) - -# clear out duplicates -if(NOT "${FFMPEG_INCLUDE_DIR}" MATCHES "") - LIST( REMOVE_DUPLICATES FFMPEG_INCLUDE_DIR ) -endif(NOT "${FFMPEG_INCLUDE_DIR}" MATCHES "") -if(NOT "${FFMPEG_LIBRARY_DIR}" MATCHES "") - LIST( REMOVE_DUPLICATES FFMPEG_LIBRARY_DIR ) -endif(NOT "${FFMPEG_LIBRARY_DIR}" MATCHES "") - -# find the full paths of the libraries -SET( TMP_ TMP-NOTFOUND ) -IF ( NOT WIN32 ) - FOREACH( LIB_ ${FFMPEG_LIBRARIES} ) - FIND_LIBRARY( TMP_ NAMES ${LIB_} PATHS ${FFMPEG_LIBRARY_DIR} ) - IF ( TMP_ ) - SET( FFMPEG_LIBRARIES_FULL ${FFMPEG_LIBRARIES_FULL} ${TMP_} ) - ENDIF ( TMP_ ) - SET( TMP_ TMP-NOTFOUND ) - ENDFOREACH( LIB_ ) - SET ( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES_FULL} ) -ENDIF( NOT WIN32 ) - -LIST( LENGTH FFMPEG_HEADERS LIST_SIZE_ ) - -SET( FFMPEG_FOUND FALSE ) -SET( FFMPEG_SWSCALE_FOUND FALSE ) -IF ( ${INC_SUCCESS} EQUAL ${LIST_SIZE_} ) - SET( FFMPEG_FOUND TRUE ) - SET( FFMPEG_SWSCALE_FOUND ${SWSCALE_FOUND} ) -ENDIF ( ${INC_SUCCESS} EQUAL ${LIST_SIZE_} ) - - IF( USE_FFMPEG ) - IF( NOT WIN32 ) - IF( NOT FFMPEG_FOUND ) - SET( USE_FFMPEG FALSE ) - ELSE() - INCLUDE_DIRECTORIES( ${LIB_DIR}/ffmpeg ) - #SET( CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS ) - INCLUDE_DIRECTORIES(${FFMPEG_INCLUDE_DIR} ${FFMPEG_INCLUDE_DIRS}) - ADD_LIBRARY( FFmpeg ${LIB_DIR}/ffmpeg/LibAvContextHandle.cpp ) - TARGET_LINK_LIBRARIES( FFmpeg ${FFMPEG_LIBRARIES} ) - SET( LINKER_LIBS ${LINKER_LIBS} FFmpeg ) - ENDIF() - ELSE() - SET( USE_FFMPEG FALSE ) - ENDIF() + + SET( FFMPEG_HEADERS avformat.h avcodec.h avutil.h avdevice.h ) + SET( FFMPEG_PATH_SUFFIXES libavformat libavcodec libavutil libavdevice libffmpeg ) + SET( FFMPEG_SWS_HEADERS swscale.h ) + SET( FFMPEG_SWS_PATH_SUFFIXES libswscale ) + + + SET( FFMPEG_LIBRARIES avformat avcodec avutil avdevice ) + SET( FFMPEG_SWS_LIBRARIES swscale ) + INCLUDE(FindPkgConfig) + if ( PKG_CONFIG_FOUND ) + pkg_check_modules( AVFORMAT libavformat ) + pkg_check_modules( AVCODEC libavcodec ) + pkg_check_modules( AVUTIL libavutil ) + pkg_check_modules( AVDEVICE libavdevice ) + pkg_check_modules( SWSCALE libswscale ) + endif ( PKG_CONFIG_FOUND ) + + SET( FFMPEG_LIBRARY_DIR ${AVFORMAT_LIBRARY_DIRS} + ${AVCODEC_LIBRARY_DIRS} + ${AVUTIL_LIBRARY_DIRS} + ${AVDEVICE_LIBRARY_DIRS} ) + SET( FFMPEG_INCLUDE_PATHS ${AVFORMAT_INCLUDE_DIRS} + ${AVCODEC_INCLUDE_DIRS} + ${AVUTIL_INCLUDE_DIRS} + ${AVDEVICE_INCLUDE_DIRS} ) + + + # add in swscale if found + IF ( SWSCALE_FOUND ) + SET( FFMPEG_LIBRARY_DIR ${FFMPEG_LIBRARY_DIR} + ${SWSCALE_LIBRARY_DIRS} ) + SET( FFMPEG_INCLUDE_PATHS ${FFMPEG_INCLUDE_PATHS} + ${SWSCALE_INCLUDE_DIRS} ) + SET( FFMPEG_HEADERS ${FFMPEG_HEADERS} + ${FFMPEG_SWS_HEADERS} ) + SET( FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} + ${FFMPEG_SWS_PATH_SUFFIXES} ) + SET( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} + ${FFMPEG_SWS_LIBRARIES} ) + ENDIF ( SWSCALE_FOUND ) + + # find includes + SET( INC_SUCCESS 0 ) + SET( TMP_ TMP-NOTFOUND ) + SET( FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_PATHS} ) + FOREACH( INC_ ${FFMPEG_HEADERS} ) + message( "checking: " ${INC_} ) + + FIND_PATH( TMP_ ${INC_} + PATHS ${FFMPEG_INCLUDE_PATHS} + PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} ) + IF ( TMP_ ) + message( "found: " ${TMP_} ) + MATH( EXPR INC_SUCCESS ${INC_SUCCESS}+1 ) + SET( FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR} ${TMP_} ) + ENDIF ( TMP_ ) + SET( TMP_ TMP-NOTFOUND ) + ENDFOREACH( INC_ ) + + # clear out duplicates + if(NOT "${FFMPEG_INCLUDE_DIR}" MATCHES "") + LIST( REMOVE_DUPLICATES FFMPEG_INCLUDE_DIR ) + endif(NOT "${FFMPEG_INCLUDE_DIR}" MATCHES "") + if(NOT "${FFMPEG_LIBRARY_DIR}" MATCHES "") + LIST( REMOVE_DUPLICATES FFMPEG_LIBRARY_DIR ) + endif(NOT "${FFMPEG_LIBRARY_DIR}" MATCHES "") + + # find the full paths of the libraries + SET( TMP_ TMP-NOTFOUND ) + IF ( NOT WIN32 ) + FOREACH( LIB_ ${FFMPEG_LIBRARIES} ) + FIND_LIBRARY( TMP_ NAMES ${LIB_} PATHS ${FFMPEG_LIBRARY_DIR} ) + IF ( TMP_ ) + SET( FFMPEG_LIBRARIES_FULL ${FFMPEG_LIBRARIES_FULL} ${TMP_} ) + ENDIF ( TMP_ ) + SET( TMP_ TMP-NOTFOUND ) + ENDFOREACH( LIB_ ) + SET ( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES_FULL} ) + ENDIF( NOT WIN32 ) + + UNSET( TMP_ ) + + LIST( LENGTH FFMPEG_HEADERS LIST_SIZE_ ) + + SET( FFMPEG_FOUND FALSE ) + SET( FFMPEG_SWSCALE_FOUND FALSE ) + IF ( ${INC_SUCCESS} EQUAL ${LIST_SIZE_} ) + SET( FFMPEG_FOUND TRUE ) + SET( FFMPEG_SWSCALE_FOUND ${SWSCALE_FOUND} ) + ENDIF ( ${INC_SUCCESS} EQUAL ${LIST_SIZE_} ) + + + + IF( NOT WIN32 ) + IF( NOT FFMPEG_FOUND ) + SET( USE_FFMPEG FALSE ) + ELSE() + INCLUDE_DIRECTORIES( ${LIB_DIR}/ffmpeg ) + #SET( CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS ) + INCLUDE_DIRECTORIES(${FFMPEG_INCLUDE_DIR} ${FFMPEG_INCLUDE_DIRS}) + ADD_LIBRARY( FFmpeg ${LIB_DIR}/ffmpeg/LibAvContextHandle.cpp ) + TARGET_LINK_LIBRARIES( FFmpeg ${FFMPEG_LIBRARIES} ) + SET( LINKER_LIBS ${LINKER_LIBS} FFmpeg ) + ENDIF() + ELSE() + SET( USE_FFMPEG FALSE ) + ENDIF() ENDIF()