How to understand NvBufferTransform

Hello guys,

Now I am learning how to do video convert with NvbufferTransform, but I can’t understand what are the difference between NvBufferTransform, NvBufferTransformAsync and NvBufferTransformEx?

In normal case, you can use only NvBufferTransform(). If you call NvBufferTransformAsync(), would need to call NvBufferSyncObjWait() to make sure the operation is done.

NvBufferTransformEx() is newly add in Jetpack 4.6, for sharing NvBuffer between processes.

Dane, thank you very much, another question for you, do you have a full picture to show the NvBuffer structure?

All public information is in nvbuf_utils.h. For how to use NvBuffer, please refer to our samples in


Another question is about the encoder mode, as you know, the encoder can work in blocking mode or non-blocking mode,
so which mode is more efficiency or less time consumption?

We would suggest run in blocking mode. In non-blocking mode, the CPU usage is higher due to polling status of encoder.

Hi Dane,
I still have a question for you, in Jetson Linux API reference , the Nvbuffer is used to manager the buffers in kernel space, but in Common Utilities module, those APIs are normally used in user space like for HD buffer, right?

The NvBuffer APIs are used in userspace. Not able to be called in kernel. Please refer to the samples for hardware-accelerated use-cases

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.