diff --git a/projects/rocdecode/CMakeLists.txt b/projects/rocdecode/CMakeLists.txt index bc3ae81bdb..a986ac1654 100644 --- a/projects/rocdecode/CMakeLists.txt +++ b/projects/rocdecode/CMakeLists.txt @@ -102,21 +102,25 @@ endif() set(AMDGPU_TARGETS "${DEFAULT_AMDGPU_TARGETS}" CACHE STRING "List of specific machine types for library to target") find_package(HIP QUIET) -find_package(FFmpeg QUIET) +find_package(Libdrm QUIET) find_package(Libva QUIET) +find_package(FFmpeg QUIET) -if(HIP_FOUND AND FFMPEG_FOUND AND Libva_FOUND) +if(HIP_FOUND AND FFMPEG_FOUND AND Libva_FOUND AND Libdrm_FOUND) - # FFMPEG - include_directories(${AVUTIL_INCLUDE_DIR} ${AVCODEC_INCLUDE_DIR} - ${SWSCALE_INCLUDE_DIR} ${AVFORMAT_INCLUDE_DIR}) - set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${FFMPEG_LIBRARIES}) + # HIP + set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} hip::device) + # LibDRM + include_directories(${LIBDRM_INCLUDE_DIR}) + set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${LIBDRM_LIBRARY}) # LibVA include_directories(${LIBVA_INCLUDE_DIR}) set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${LIBVA_LIBRARY}) set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${LIBVA_DRM_LIBRARY}) - # HIP - set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} hip::device) + # FFMPEG + include_directories(${AVUTIL_INCLUDE_DIR} ${AVCODEC_INCLUDE_DIR} + ${SWSCALE_INCLUDE_DIR} ${AVFORMAT_INCLUDE_DIR}) + set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${FFMPEG_LIBRARIES}) # local include files include_directories(api src/rocdecode src/parser src/rocdecode/vaapi) @@ -201,9 +205,9 @@ if(HIP_FOUND AND FFMPEG_FOUND AND Libva_FOUND) # Set the dependent packages set(rocDecode_DEBIAN_PACKAGE_LIST - "vainfo, libva-dev, ffmpeg, libavcodec-dev, libavformat-dev, libswscale-dev") + "vainfo, libva-dev, libdrm-dev, ffmpeg, libavcodec-dev, libavformat-dev, libswscale-dev") set(rocDecode_RPM_PACKAGE_LIST - "libva-devel,ffmpeg, libavcodec-devel, libavformat-devel, libswscale-devel") + "libva-devel, libdrm-devel, ffmpeg, libavcodec-devel, libavformat-devel, libswscale-devel") # set dependency to ROCm if set to TRUE, default to OFF set(ROCM_DEP_ROCMCORE OFF CACHE BOOL "Set rocm-core dependency") if(ROCM_DEP_ROCMCORE) @@ -243,11 +247,11 @@ if(HIP_FOUND AND FFMPEG_FOUND AND Libva_FOUND) endif() if(EXISTS ${RPMBUILD_EXE}) list(APPEND CPACK_GENERATOR "RPM") - message("-- ${White}rocDecode -- CPACK_RPM_PACKAGE_REQUIRES:${CPACK_RPM_PACKAGE_REQUIRES}${ColourReset}") + message("-- ${White}AMD ROCm rocDecode -- CPACK_RPM_PACKAGE_REQUIRES: ${CPACK_RPM_PACKAGE_REQUIRES}${ColourReset}") endif() if(EXISTS ${DPKG_EXE}) list(APPEND CPACK_GENERATOR "DEB") - message("-- ${White}rocDecode -- CPACK_DEBIAN_PACKAGE_DEPENDS:${CPACK_DEBIAN_PACKAGE_DEPENDS}${ColourReset}") + message("-- ${White}AMD ROCm rocDecode -- CPACK_DEBIAN_PACKAGE_DEPENDS: ${CPACK_DEBIAN_PACKAGE_DEPENDS}${ColourReset}") endif() include(CPack) @@ -256,9 +260,12 @@ else() message(FATAL_ERROR "-- ERROR!: HIP Not Found! - please install ROCm and HIP!") endif() if(NOT FFMPEG_FOUND) - message(FATAL_ERROR "-- ERROR!: FFMPEG Not Found! - please insatll FFMPEG!") + message(FATAL_ERROR "-- ERROR!: FFMPEG Not Found! - please install FFMPEG!") endif() if(NOT Libva_FOUND) message(FATAL_ERROR "-- ERROR!: libva-dev Not Found - please install libva-dev!") endif() + if(NOT Libdrm_FOUND) + message(FATAL_ERROR "-- ERROR!: libdrm-dev Not Found - please install libdrm-dev!") + endif() endif() diff --git a/projects/rocdecode/README.md b/projects/rocdecode/README.md index 34b04779ad..f7d67864c1 100644 --- a/projects/rocdecode/README.md +++ b/projects/rocdecode/README.md @@ -18,6 +18,11 @@ rocDecode is a high performance video decode SDK for AMD hardware sudo apt install libva-dev ``` +* libdrm-dev `2.4` or later + ``` + sudo apt install libdrm-dev + ``` + * [FFMPEG](https://ffmpeg.org/about.html) ``` sudo apt install ffmpeg libavcodec-dev libavformat-dev libswscale-dev @@ -71,4 +76,5 @@ doxygen .Doxyfile + amdgpu-core - `1:5.6.50601-1649308` * FFMPEG - `4.2.7` / `4.4.2-0` * libva-dev - `2.7.0-2` / `2.14.0-1` -* rocDecode Setup Script - `V1.1` \ No newline at end of file +* libdrm-dev - `2.4.107` / `2.4.113` +* rocDecode Setup Script - `V1.2` \ No newline at end of file diff --git a/projects/rocdecode/cmake/FindFFmpeg.cmake b/projects/rocdecode/cmake/FindFFmpeg.cmake index 68714b700b..2b8e2dcbf6 100644 --- a/projects/rocdecode/cmake/FindFFmpeg.cmake +++ b/projects/rocdecode/cmake/FindFFmpeg.cmake @@ -172,11 +172,9 @@ else() endif() if(FFMPEG_FOUND) - if(NOT FFMPEG_FIND_QUIETLY) - message("-- ${White}Using FFMPEG -- \n\tLibraries:${FFMPEG_LIBRARIES} \n\tIncludes:${FFMPEG_INCLUDE_DIR}${ColourReset}") - endif() + message("-- ${White}Using FFMPEG -- \n\tLibraries:${FFMPEG_LIBRARIES} \n\tIncludes:${FFMPEG_INCLUDE_DIR}${ColourReset}") else() - if(FFMPEG_FIND_REQUIRED) + if(FFmpeg_FIND_REQUIRED) message(FATAL_ERROR "{Red}FindFFmpeg -- libavcodec or libavformat or libavutil NOT FOUND${ColourReset}") endif() endif() diff --git a/projects/rocdecode/cmake/FindLibdrm.cmake b/projects/rocdecode/cmake/FindLibdrm.cmake index 64337c6071..d7d9365761 100644 --- a/projects/rocdecode/cmake/FindLibdrm.cmake +++ b/projects/rocdecode/cmake/FindLibdrm.cmake @@ -21,12 +21,22 @@ # ################################################################################ -find_package(PkgConfig) -pkg_check_modules(Libdrm libdrm) +find_library(LIBDRM_LIBRARY NAMES drm) +find_path(LIBDRM_INCLUDE_DIR NAMES drm.h PATHS /usr/include/libdrm /usr/include/drm) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Libdrm DEFAULT_MSG LIBDRM_INCLUDE_DIR LIBDRM_LIBRARY) +mark_as_advanced(LIBDRM_INCLUDE_DIR LIBDRM_LIBRARY) + if(Libdrm_FOUND) if(NOT TARGET Libdrm::drm) add_library(Libdrm::drm UNKNOWN IMPORTED) - set_target_properties(Libdrm::drm PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${Libdrm_INCLUDE_DIRS}" - IMPORTED_LOCATION "${Libdrm_LINK_LIBRARIES}") + set_target_properties(Libdrm::drm PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBDRM_INCLUDE_DIR}" + IMPORTED_LOCATION "${LIBDRM_LIBRARY}") + endif() + message("-- ${White}Using Libdrm -- \n\tLibraries:${LIBDRM_LIBRARY} \n\tIncludes:${LIBDRM_INCLUDE_DIR}${ColourReset}") +else() + if(Libdrm_FIND_REQUIRED) + message(FATAL_ERROR "{Red}FindLibdrm -- Libdrm NOT FOUND${ColourReset}") endif() endif() \ No newline at end of file diff --git a/projects/rocdecode/cmake/FindLibva.cmake b/projects/rocdecode/cmake/FindLibva.cmake index f1a95c7dfb..b8a29a5fa2 100644 --- a/projects/rocdecode/cmake/FindLibva.cmake +++ b/projects/rocdecode/cmake/FindLibva.cmake @@ -21,13 +21,12 @@ # ################################################################################ -find_package(Libdrm REQUIRED) find_library(LIBVA_LIBRARY NAMES va) find_library(LIBVA_DRM_LIBRARY NAMES va-drm) find_path(LIBVA_INCLUDE_DIR NAMES va/va.h) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Libva DEFAULT_MSG LIBVA_INCLUDE_DIR LIBVA_LIBRARY LIBVA_DRM_LIBRARY) +find_package_handle_standard_args(Libva DEFAULT_MSG LIBVA_INCLUDE_DIR LIBVA_LIBRARY) mark_as_advanced(LIBVA_INCLUDE_DIR LIBVA_LIBRARY LIBVA_DRM_LIBRARY) if(Libva_FOUND) @@ -38,15 +37,13 @@ if(Libva_FOUND) endif() if(NOT TARGET Libva::va_drm) add_library(Libva::va_drm UNKNOWN IMPORTED) - target_link_libraries(Libva::va_drm INTERFACE Libdrm::drm) set_target_properties(Libva::va_drm PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBVA_INCLUDE_DIR}" - IMPORTED_LOCATION "${LIBVA_DRM_LIBRARY}") - endif() - if(NOT Libva_FIND_QUIETLY) - message("-- ${White}Using Libva -- \n\tLibraries:${LIBVA_LIBRARY} \n\tIncludes:${LIBVA_INCLUDE_DIR}${ColourReset}") + IMPORTED_LOCATION "${LIBVA_DRM_LIBRARY}") endif() + message("-- ${White}Using Libva -- \n\tLibraries:${LIBVA_LIBRARY} \n\tIncludes:${LIBVA_INCLUDE_DIR}${ColourReset}") + message("-- ${White}Using Libva-drm -- \n\tLibraries:${LIBVA_DRM_LIBRARY}${ColourReset}") else() if(Libva_FIND_REQUIRED) message(FATAL_ERROR "{Red}FindLibva -- Libva NOT FOUND${ColourReset}") endif() -endif() +endif() \ No newline at end of file diff --git a/projects/rocdecode/rocDecode-setup.py b/projects/rocdecode/rocDecode-setup.py index 8c4fc191aa..d173c40c1e 100644 --- a/projects/rocdecode/rocDecode-setup.py +++ b/projects/rocdecode/rocDecode-setup.py @@ -28,7 +28,7 @@ else: import subprocess __copyright__ = "Copyright 2023, AMD ROCm rocDecode" -__version__ = "1.1" +__version__ = "1.2" __email__ = "mivisionx.support@amd.com" __status__ = "Shipping" @@ -115,12 +115,12 @@ os.system('sudo '+linuxFlag+' '+linuxSystemInstall+' ' + if "Ubuntu" in platfromInfo: os.system('sudo -v') os.system('sudo '+linuxFlag+' '+linuxSystemInstall+' '+linuxSystemInstall_check + - ' install vainfo libva-dev ffmpeg libavcodec-dev libavformat-dev libswscale-dev') + ' install vainfo libva-dev libdrm-dev ffmpeg libavcodec-dev libavformat-dev libswscale-dev') else: os.system('sudo '+linuxFlag+' '+linuxSystemInstall+' '+linuxSystemInstall_check + ' install autoconf automake bzip2 bzip2-devel freetype-devel') os.system('sudo '+linuxFlag+' '+linuxSystemInstall+' '+linuxSystemInstall_check + - ' install gcc-c++ libtool make pkgconfig zlib-devel libva-devel') + ' install gcc-c++ libtool make pkgconfig zlib-devel libva-devel libdrm-devel') # Nasm os.system('sudo '+linuxFlag+' '+linuxSystemInstall+' '+linuxSystemInstall_check + ' install nasm') diff --git a/projects/rocdecode/samples/CMakeLists.txt b/projects/rocdecode/samples/CMakeLists.txt index f1ceb7b1ef..d48c216168 100644 --- a/projects/rocdecode/samples/CMakeLists.txt +++ b/projects/rocdecode/samples/CMakeLists.txt @@ -26,7 +26,7 @@ set(ROC_VIDEO_DEC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../utils/rocvideodecode) # videoDecode add_test( NAME - video_decode + video_decode-H264 COMMAND "${CMAKE_CTEST_COMMAND}" --build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/videoDecode" diff --git a/projects/rocdecode/samples/videoDecode/videodecode.cpp b/projects/rocdecode/samples/videoDecode/videodecode.cpp index 2c8f1562cf..1d86951b5e 100644 --- a/projects/rocdecode/samples/videoDecode/videodecode.cpp +++ b/projects/rocdecode/samples/videoDecode/videodecode.cpp @@ -27,7 +27,11 @@ THE SOFTWARE. #include #include #include -#include +#if __cplusplus >= 201703L && __has_include() + #include +#else + #include +#endif #include "video_demuxer.hpp" #include "rocdecode.h"