diff --git a/samples/videoDecode/CMakeLists.txt b/samples/videoDecode/CMakeLists.txt index e777d67ea7..66263160d4 100644 --- a/samples/videoDecode/CMakeLists.txt +++ b/samples/videoDecode/CMakeLists.txt @@ -61,7 +61,6 @@ find_package(FFmpeg QUIET) # find rocDecode find_library(ROCDECODE_LIBRARY NAMES rocdecode HINTS ${ROCM_PATH}/lib) find_path(ROCDECODE_INCLUDE_DIR NAMES rocdecode.h PATHS /opt/rocm/include/rocdecode ${ROCM_PATH}/include/rocdecode) - if(ROCDECODE_LIBRARY AND ROCDECODE_INCLUDE_DIR) set(ROCDECODE_FOUND TRUE) message("-- ${White}${PROJECT_NAME}: Using rocDecode -- \n\tLibraries:${ROCDECODE_LIBRARY} \n\tIncludes:${ROCDECODE_INCLUDE_DIR}${ColourReset}") @@ -77,11 +76,17 @@ if(HIP_FOUND AND FFMPEG_FOUND AND ROCDECODE_FOUND) # rocDecode include_directories (${ROCDECODE_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/..) set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${ROCDECODE_LIBRARY}) - + # sample app exe list(APPEND SOURCES ${PROJECT_SOURCE_DIR} videodecode.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../utils/rocvideodecode/roc_video_dec.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17") target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARY_LIST}) + # FFMPEG multi-version support + if(_FFMPEG_AVCODEC_VERSION VERSION_LESS_EQUAL 58.134.100) + target_compile_definitions(${PROJECT_NAME} PUBLIC USE_AVCODEC_GREATER_THAN_58_134=0) + else() + target_compile_definitions(${PROJECT_NAME} PUBLIC USE_AVCODEC_GREATER_THAN_58_134=1) + endif() else() message("-- ERROR!: ${PROJECT_NAME} excluded! please install all the dependencies and try again!") if (NOT HIP_FOUND) diff --git a/samples/videoDecodeMem/CMakeLists.txt b/samples/videoDecodeMem/CMakeLists.txt index 32f48a1905..64d0bf5f32 100644 --- a/samples/videoDecodeMem/CMakeLists.txt +++ b/samples/videoDecodeMem/CMakeLists.txt @@ -61,7 +61,6 @@ find_package(FFmpeg QUIET) # find rocDecode find_library(ROCDECODE_LIBRARY NAMES rocdecode HINTS ${ROCM_PATH}/lib) find_path(ROCDECODE_INCLUDE_DIR NAMES rocdecode.h PATHS /opt/rocm/include/rocdecode ${ROCM_PATH}/include/rocdecode) - if(ROCDECODE_LIBRARY AND ROCDECODE_INCLUDE_DIR) set(ROCDECODE_FOUND TRUE) message("-- ${White}${PROJECT_NAME}: Using rocDecode -- \n\tLibraries:${ROCDECODE_LIBRARY} \n\tIncludes:${ROCDECODE_INCLUDE_DIR}${ColourReset}") @@ -77,11 +76,17 @@ if(HIP_FOUND AND FFMPEG_FOUND AND ROCDECODE_FOUND) # rocDecode include_directories (${ROCDECODE_INCLUDE_DIR}) set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${ROCDECODE_LIBRARY}) - + # sample app exe list(APPEND SOURCES ${PROJECT_SOURCE_DIR} videodecodemem.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../utils/rocvideodecode/roc_video_dec.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17") target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARY_LIST}) + # FFMPEG multi-version support + if(_FFMPEG_AVCODEC_VERSION VERSION_LESS_EQUAL 58.134.100) + target_compile_definitions(${PROJECT_NAME} PUBLIC USE_AVCODEC_GREATER_THAN_58_134=0) + else() + target_compile_definitions(${PROJECT_NAME} PUBLIC USE_AVCODEC_GREATER_THAN_58_134=1) + endif() else() message("-- ERROR!: ${PROJECT_NAME} excluded! please install all the dependencies and try again!") if (NOT HIP_FOUND) diff --git a/samples/videoDecodeMultiFiles/CMakeLists.txt b/samples/videoDecodeMultiFiles/CMakeLists.txt index 8eba0e9fd3..ff94d39a95 100644 --- a/samples/videoDecodeMultiFiles/CMakeLists.txt +++ b/samples/videoDecodeMultiFiles/CMakeLists.txt @@ -61,7 +61,6 @@ find_package(FFmpeg QUIET) # find rocDecode find_library(ROCDECODE_LIBRARY NAMES rocdecode HINTS ${ROCM_PATH}/lib) find_path(ROCDECODE_INCLUDE_DIR NAMES rocdecode.h PATHS /opt/rocm/include/rocdecode ${ROCM_PATH}/include/rocdecode) - if(ROCDECODE_LIBRARY AND ROCDECODE_INCLUDE_DIR) set(ROCDECODE_FOUND TRUE) message("-- ${White}${PROJECT_NAME}: Using rocDecode -- \n\tLibraries:${ROCDECODE_LIBRARY} \n\tIncludes:${ROCDECODE_INCLUDE_DIR}${ColourReset}") @@ -77,11 +76,17 @@ if(HIP_FOUND AND FFMPEG_FOUND AND ROCDECODE_FOUND) # rocDecode include_directories (${ROCDECODE_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/..) set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${ROCDECODE_LIBRARY}) - + # sample app exe list(APPEND SOURCES ${PROJECT_SOURCE_DIR} videodecodemultifiles.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../utils/rocvideodecode/roc_video_dec.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17") target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARY_LIST}) + # FFMPEG multi-version support + if(_FFMPEG_AVCODEC_VERSION VERSION_LESS_EQUAL 58.134.100) + target_compile_definitions(${PROJECT_NAME} PUBLIC USE_AVCODEC_GREATER_THAN_58_134=0) + else() + target_compile_definitions(${PROJECT_NAME} PUBLIC USE_AVCODEC_GREATER_THAN_58_134=1) + endif() else() message("-- ERROR!: ${PROJECT_NAME} excluded! please install all the dependencies and try again!") if (NOT HIP_FOUND) diff --git a/samples/videoDecodePerf/CMakeLists.txt b/samples/videoDecodePerf/CMakeLists.txt index f0f4bd8c9f..ade2c6fdcf 100644 --- a/samples/videoDecodePerf/CMakeLists.txt +++ b/samples/videoDecodePerf/CMakeLists.txt @@ -61,7 +61,6 @@ find_package(FFmpeg QUIET) # find rocDecode find_library(ROCDECODE_LIBRARY NAMES rocdecode HINTS ${ROCM_PATH}/lib) find_path(ROCDECODE_INCLUDE_DIR NAMES rocdecode.h PATHS /opt/rocm/include/rocdecode ${ROCM_PATH}/include/rocdecode) - if(ROCDECODE_LIBRARY AND ROCDECODE_INCLUDE_DIR) set(ROCDECODE_FOUND TRUE) message("-- ${White}${PROJECT_NAME}: Using rocDecode -- \n\tLibraries:${ROCDECODE_LIBRARY} \n\tIncludes:${ROCDECODE_INCLUDE_DIR}${ColourReset}") @@ -77,13 +76,21 @@ if(HIP_FOUND AND FFMPEG_FOUND AND ROCDECODE_FOUND AND Threads_FOUND) # rocDecode include_directories (${ROCDECODE_INCLUDE_DIR}) set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${ROCDECODE_LIBRARY}) - #threads + # threads + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} Threads::Threads) - + # sample app exe list(APPEND SOURCES ${PROJECT_SOURCE_DIR} videodecodeperf.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../utils/rocvideodecode/roc_video_dec.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17") target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARY_LIST}) + # FFMPEG multi-version support + if(_FFMPEG_AVCODEC_VERSION VERSION_LESS_EQUAL 58.134.100) + target_compile_definitions(${PROJECT_NAME} PUBLIC USE_AVCODEC_GREATER_THAN_58_134=0) + else() + target_compile_definitions(${PROJECT_NAME} PUBLIC USE_AVCODEC_GREATER_THAN_58_134=1) + endif() else() message("-- ERROR!: ${PROJECT_NAME} excluded! please install all the dependencies and try again!") if (NOT HIP_FOUND) diff --git a/samples/videoDecodeRGB/CMakeLists.txt b/samples/videoDecodeRGB/CMakeLists.txt index a25d053cf5..27da19fb51 100644 --- a/samples/videoDecodeRGB/CMakeLists.txt +++ b/samples/videoDecodeRGB/CMakeLists.txt @@ -65,17 +65,12 @@ find_package(FFmpeg QUIET) # find rocDecode find_library(ROCDECODE_LIBRARY NAMES rocdecode HINTS ${ROCM_PATH}/lib) find_path(ROCDECODE_INCLUDE_DIR NAMES rocdecode.h PATHS /opt/rocm/include/rocdecode ${ROCM_PATH}/include/rocdecode) - if(ROCDECODE_LIBRARY AND ROCDECODE_INCLUDE_DIR) set(ROCDECODE_FOUND TRUE) message("-- ${White}${PROJECT_NAME}: Using rocDecode -- \n\tLibraries:${ROCDECODE_LIBRARY} \n\tIncludes:${ROCDECODE_INCLUDE_DIR}${ColourReset}") endif() if(HIP_FOUND AND FFMPEG_FOUND AND ROCDECODE_FOUND) - # Threads - set(THREADS_PREFER_PTHREAD_FLAG ON) - find_package(Threads REQUIRED) - set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} Threads::Threads) # HIP set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} hip::device) # FFMPEG @@ -84,14 +79,24 @@ if(HIP_FOUND AND FFMPEG_FOUND AND ROCDECODE_FOUND) # rocDecode and utils include_directories (${CMAKE_CURRENT_SOURCE_DIR}/../../utils ${ROCDECODE_INCLUDE_DIR}) set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${ROCDECODE_LIBRARY}) + # threads + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) + set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} Threads::Threads) + # sample app exe list(APPEND SOURCES ${PROJECT_SOURCE_DIR} videodecrgb.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../utils/rocvideodecode/roc_video_dec.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../utils/colorspace_kernels.cpp) - add_executable(${PROJECT_NAME} ${SOURCES}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17") target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARY_LIST}) + # FFMPEG multi-version support + if(_FFMPEG_AVCODEC_VERSION VERSION_LESS_EQUAL 58.134.100) + target_compile_definitions(${PROJECT_NAME} PUBLIC USE_AVCODEC_GREATER_THAN_58_134=0) + else() + target_compile_definitions(${PROJECT_NAME} PUBLIC USE_AVCODEC_GREATER_THAN_58_134=1) + endif() else() message("-- ERROR!: ${PROJECT_NAME} excluded! please install all the dependencies and try again!") if (NOT HIP_FOUND) diff --git a/utils/video_demuxer.h b/utils/video_demuxer.h index a7c60e05d5..58a14a675a 100644 --- a/utils/video_demuxer.h +++ b/utils/video_demuxer.h @@ -26,6 +26,9 @@ THE SOFTWARE. extern "C" { #include #include + #if USE_AVCODEC_GREATER_THAN_58_134 + #include + #endif } #include "rocdecode.h"