With these new nvv4l2 element I made a test. While omxh265dec and nvv4l2decoder performs same, nvv4l2h264enc is %50 slow compared to omxh264enc. What is the reason for that?
Is it because it is new and not yet stable?
Cpu Usage omxh264enc | nvv4l2h264enc
300mhz cpu core| %50 | %50
2ghz cpu core | %60 | %80
Encoding time | 12 seconds | 21 seconds
Other cores are sleeping.
And omxh264enc takes 12 seconds while nvv4l2h264enc takes 21 second.
Is there anyone who takes similar results?
For reference I did decode a 4k video with the same element and encode it back.
Sorry about that, I suppose ctrl+f was not working on pipelines in the document.
Yes I used that feature here are the results.
I still decode a 4k video with nvv4l2decoder then encode them with these elements in my test.
Cpu Usage | omxh264enc | nvv4l2h264enc
300mhz cpu core| %50 | %85
2ghz cpu core | %50 | %85
Encoding time | 12 seconds | 16 seconds
Decoder Frequency | 1200 mhz | 600 mhz
Encoder Frequency | 1200 mhz | 1200 mhz
It seems nvv4l2h264enc is inefficient compared to omxh264enc.
Btw thank you for sharing r32-2 guide. It was not showing on google.
And I have another question, while omxh264enc does not need h264parse, nvv4l2h264enc needs it. Could it be about this?
And why does not omxh264enc need but nvv4l2h264enc needs it?
And lastly Is this performance expected because of new development of the element, it looks like omxh264enc is %200 efficient as nvv4l2h264enc.
For omxh264enc, the execution time(in average) is 9.16 seconds. For nvv4l2h264enc, it is 9.02 seconds. We don’t see the difference in encoding time. Please compare your case to this and check where makes the deviation.
Hi,
For performance profiling, we suggest enable jetson_clocks because it runs all CPUs at fix clocks. Without it, dynamic frequency scaling is enabled and you have to consider the varying frequency in calculating the loading.
Just want to confirm the use of nvv4l2h264enc, I’ve enable jetson_clocks, set nvpmodel to 0, use maximum performance, but using udpsrc + nv3dsink to visualize the stream, it dropped a lot of buffer making the video very choppy. But once replaced it with omxh264enc, it’s working smoother… I’m on Jetpack 4.4. I’ve confirmed nvv4l2decoder never worked for me, but from this post seems there must be a way to get v4l2 enc and dec working?
Hello, I’m not sure what you mean by v4l2 isnt working for you? Because in the same post you say that the video is very choppy with nvv4l2 and smooth with omxh264enc?
to get nvv4l2 to stream for me, I had to enable insert-sps-pps. ie: ! nvv4l2h264enc insert-sps-pps=1 !
As for the choppy video problem… I cant help you with that because I am experiencing the same problem!
I have exactly the same problem. The video is very choppy using nvv4l2 on Jetson Nano, while using x264enc the video is OK. I still didn’t find the root cause:
Only codec is replaced in the pipeline. Other items in pipeline have no meaning, queues, params can be removed and the result is still the same.
I cannot understand, what’s wrong in nvv4l2h264enc element.
Just found that is-live=true option somehow affects nvv4l2h264enc plugin. Removing is-live=true fixes the video. But it is unclear, why this option is so important only for nvv4l2h264enc.