Skip to content

Commit

Permalink
added nvutils api support. nvbuf_utils compatible. jocover#125 jocove…
Browse files Browse the repository at this point in the history
  • Loading branch information
Keylost committed Mar 14, 2023
2 parents fd4e81f + 8354a64 commit db39c6b
Show file tree
Hide file tree
Showing 4 changed files with 234 additions and 122 deletions.
45 changes: 17 additions & 28 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,15 @@ project(nvmpi VERSION 1.0.0 DESCRIPTION "nvidia multimedia api")

set(CMAKE_C_FLAGS“$ {CMAKE_C_FLAGS} -fPIC”)
set(CMAKE_CXX_FLAGS“$ {CMAKE_CXX_FLAGS} -fPIC”)
#set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath-link=/lib")
#set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath-link=/usr/lib/aarch64-linux-gnu")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath-link=/usr/lib/aarch64-linux-gnu/tegra")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath-link=/usr/local/cuda/lib64")

find_library(LIB_NVBUF nvbuf_utils PATHS /usr/lib/aarch64-linux-gnu/tegra)
find_library(LIB_V4L2 nvv4l2 PATHS /usr/lib/aarch64-linux-gnu/tegra)
find_library(LIB_NVJPEG nvjpeg PATHS /usr/lib/aarch64-linux-gnu/tegra)
find_package (Threads)
#find_library(LIB_DRM drm PATHS /usr/lib/aarch64-linux-gnu/tegra)
#find_library(LIB_EGL EGL PATHS /usr/lib/aarch64-linux-gnu/tegra)

add_library(nvmpi SHARED
set(NVMPI_SRC
nvmpi_dec.cpp
nvmpi_enc.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvBuffer.cpp
Expand All @@ -25,36 +21,29 @@ add_library(nvmpi SHARED
/usr/src/jetson_multimedia_api/samples/common/classes/NvV4l2Element.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvV4l2ElementPlane.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvVideoDecoder.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvVideoEncoder.cpp
#common/NvVideoConverter.cpp
#common/NvApplicationProfiler.cpp
#common/NvEglRenderer.cpp
#common/NvUtils.cpp
)
/usr/src/jetson_multimedia_api/samples/common/classes/NvVideoEncoder.cpp)

set(NVMPI_DEP_LIBS ${CMAKE_THREAD_LIBS_INIT} ${LIB_NVBUF} ${LIB_V4L2} ${LIB_NVJPEG})

add_library(nvmpi_static STATIC
nvmpi_dec.cpp
nvmpi_enc.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvBuffer.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvElement.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvElementProfiler.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvLogging.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvV4l2Element.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvV4l2ElementPlane.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvVideoDecoder.cpp
/usr/src/jetson_multimedia_api/samples/common/classes/NvVideoEncoder.cpp
#common/NvVideoConverter.cpp
#common/NvApplicationProfiler.cpp
#common/NvEglRenderer.cpp
#common/NvUtils.cpp
)
#if NvUtils API is present prefer it to nvbuf_utils
if(EXISTS "/usr/src/jetson_multimedia_api/include/nvbufsurface.h")
add_definitions(-DWITH_NVUTILS)
find_library(LIB_NVBUFSURFACE nvbufsurface PATHS /usr/lib/aarch64-linux-gnu/tegra)
find_library(LIB_NVBUFSURFTRANSFORM nvbufsurftransform PATHS /usr/lib/aarch64-linux-gnu/tegra)
set(NVMPI_SRC ${NVMPI_SRC}
/usr/src/jetson_multimedia_api/samples/common/classes/NvBufSurface.cpp)
set(NVMPI_DEP_LIBS ${NVMPI_DEP_LIBS} ${LIB_NVBUFSURFACE} ${LIB_NVBUFSURFTRANSFORM})
endif()

add_library(nvmpi SHARED ${NVMPI_SRC})
add_library(nvmpi_static STATIC ${NVMPI_SRC})

set_target_properties(nvmpi_static PROPERTIES OUTPUT_NAME nvmpi)
set_target_properties(nvmpi PROPERTIES VERSION ${PROJECT_VERSION})
set_target_properties(nvmpi PROPERTIES SOVERSION 1)
set_target_properties(nvmpi nvmpi_static PROPERTIES PUBLIC_HEADER nvmpi.h)
set_target_properties(nvmpi PROPERTIES LINK_FLAGS "-Wl,--no-as-needed")
target_link_libraries(nvmpi PRIVATE ${CMAKE_THREAD_LIBS_INIT} ${LIB_NVBUF} ${LIB_V4L2} ${LIB_NVJPEG})
target_link_libraries(nvmpi PRIVATE ${NVMPI_DEP_LIBS})
target_include_directories(nvmpi PRIVATE /usr/src/jetson_multimedia_api/include)
target_include_directories(nvmpi PRIVATE /usr/local/cuda/include)
target_include_directories(nvmpi_static PRIVATE /usr/src/jetson_multimedia_api/include)
Expand Down
27 changes: 27 additions & 0 deletions nvUtils2NvBuf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#if defined(WITH_NVUTILS)
#include "nvbufsurface.h"
#include "nvbufsurftransform.h"
#include "NvBufSurface.h"
#define MAX_NUM_PLANES NVBUF_MAX_PLANES
#define NvBufferDestroy NvBufSurf::NvDestroy
#define NvBufferCreateParams NvBufSurf::NvCommonAllocateParams
#define NvBufferColorFormat_NV12 NVBUF_COLOR_FORMAT_NV12
#define NvBufferColorFormat_NV12_ER NVBUF_COLOR_FORMAT_NV12_ER
#define NvBufferColorFormat_NV12_709 NVBUF_COLOR_FORMAT_NV12_709
#define NvBufferColorFormat_NV12_709_ER NVBUF_COLOR_FORMAT_NV12_709_ER
#define NvBufferColorFormat_NV12_2020 NVBUF_COLOR_FORMAT_NV12_2020
#define NvBufferColorFormat_YUV420 NVBUF_COLOR_FORMAT_YUV420
#define NvBufferLayout_Pitch NVBUF_LAYOUT_PITCH
#define NvBufferLayout_BlockLinear NVBUF_LAYOUT_BLOCK_LINEAR
#define NvBufferTransformParams NvBufSurfTransformParams
#define NvBufferRect NvBufSurfTransformRect
#define NVBUFFER_TRANSFORM_FILTER NVBUFSURF_TRANSFORM_FILTER
#define NvBufferTransform_None NvBufSurfTransform_None
#define NvBufferTransform_Filter_Smart NvBufSurfTransformInter_Algo3
#define NvBufferTransform_Filter_Nearest NvBufSurfTransformInter_Nearest
#define NvBufferParams NvBufSurfTransform

//#define NvBuffer2Raw(dmabuf, plane, out_width, out_height, ptr)
#else
#include "nvbuf_utils.h"
#endif
Loading

0 comments on commit db39c6b

Please sign in to comment.