Trouble including nv buffer libraries of multimedia API

I installed the Jetpack multimedia API through the provided instructions (i.e. hook up the TX1 system to another Ubuntu machine and push the updates over SSH).

I am writing a C++ application that uses the camera API. I can include “Argus/Argus.h” and “EGLStream/EGLStream.h” and use all the functionality of these.

But I am having trouble with some of the other libraries, namely those related to Nv Buffers. Specifically, I’m getting an error when I try to include “NvUtils.h” or “nvbuf_utils.h”.

How to I set up my system to compile against these libraries? Are there some additional steps or something?

And a bit more detail I forgot to include. I’m using CMake to generate the makefile. I am providing CMake with the “FindArgus.cmake” and “FindEGL.cmake” files to populate the ${ARGUS_INCLUDE_DIRS} and ${EGL_INCLUDE_DIRS} fields.

The only copy I can find of “nvbuf_utils.h” or “NvUtils.h” is in “~/tegra-multimedia-api/…” which is the default location that the installer copies them to.

I’d like the application to be portable, so I don’t want to just copy the headers into my application - I need cmake/make/g++ to be able to find the libraries without hardcoding the path.

Hi EEG, are you on r24.2.1 or r28.1?

r24.2.1

Thanks!

1 Like

Hi EEG,
There is a known issue on r24.2.1
[url]msync with MS_SYNC option failure - Jetson TX1 - NVIDIA Developer Forums

Please try r28.1 with new added APIs:
NvBufferMemMap
NvBufferMemSyncForCpu
NvBufferMemSyncForDevice
NvBufferMemUnMap

Thanks for the response DaneLLL, but I don’t see how that is related at all to my question.

I flashed another TX1 to r28.1, and once again, all of the multimedia API were installed to ~/tegra_multimedia_API

Is there a way to get my compiler to find the MMAPI dynamically? For example, if I use CMake, I can get CMake to find the Argus library (but only the Argus library) by including FindArgus.cmake in my cmake include directory.

I want my application to be portable and extensible to future versions, so I don’t want to copy the header files or hardcode any paths. Is this possible?

The path is at

~/tegra_multimedia_api/include/nvbuf_utils.h
/usr/lib/aarch64-linux-gnu/tegra/libnvbuf_utils.so

Not sure how to program it into CMake. Please other users share experience.

[s]Hi EEG,

I am currently trying to integrate some functionality developed using Tegra MMAPI with an existing project built with Cmake and I am running into errors. More specifically, when trying to add some of the classes defined at:

/tegra_multimedia_api/samples/common/classes

Have you used those in your project? If yes, would you mind sharing the modifications you made to CMakeLists.txt to solve your problem?[/s]

Edit:
Figured it out.

Thanks.

Hi bhargavK,

Could you share your solution with us, as we are facing the same problem.

I had the same problem today, Here is my solution. (Probably a bit late to the party but In case haha)

find_library(NVBUFF_LIB REQUIRED NAMES nvbuf_utils HINTS /usr/lib/aarch64-linux-gnu/tegra )

I’m using cmake 3.17
Cheers,
Ganindu

1 Like