I have a question related to the performance regarding the nvvidconv gstreamer plugin and its transformations like color conversion. I created two pipelines for color conversion from NV12 to I420. One on the jetson with memory:NVMM and one on a DGPU based system with memory:CUDAMemory.
The color conversion takes up to 5ms from NV12 to I420 on the jetson and a fraction with cudaconvert on the DGPU based system (see statistics below, plugins named colorconversion). I also used the NvBufSurfTransform low level API directly to validate the gst-stats latency statistics. Furthermore, jetson_clocks is set to max and MAXN mode is activated.
And here are my questions:
Why is this taking so long? Are there any restrictions on the Jetson?
Is there another way to speed up the color conversion using nvvidconv or the low-level API differently?
Can we expect changes coming with jetpack 6 on nvvidconv or the low-level-API which will improve this?
I don’t think that the high latency come from the buffer bool because I also tried the low-level API which is also used in the nvvidconv. Here is an example how I think (after checking the source code of nvvidconv) that the nvvidconv is using the API:
ZoneScopedN is from tracy, which is a profiler where I’m measuring the latency. The operation color conversion inside the scope takes 5ms, same like the nvvidconv plugin. So back to my question, why is this taking so long? A cuda kernel for converting NV12 to I420 takes around 0,05ms. This is a factor by 100x. This is not really plausible for me, even if the DGPU is better than the jetson. For applications where each millisecond matters, this way is not really appropriate. Or is my code wrong?
Another Idea for speeding up would be to write a gstreamer plugin which is using the CUDA-EGL-INTEROP for getting the pointer to the cuda data and using a cuda kernel for color conversion. Is this recommended/good idea?
You can also use export DBG_NVBUFSURFTRANSFORM=1 to check the latency of each frame in the low-level API.
It’s normal that Jetson VIC > Jetson Gpu > DGpu.
There is no update from you for a period, assuming this is not an issue anymore. Hence we are closing this topic. If need further support, please open a new one. Thanks