Microstutters using gstreamer with nvv4l2decoder and nvdrmsink


As the title says, I’m using gstreamer for h264 and HEVC content, with the nvv4l2decoder and nvdrmvideosink.

It’s working pretty good, but not perfectly; I’m seeing microstuttering. It doesn’t seem to depend on refresh rates, resolution, sync on/off on the sinks or qos on the sinks. I tried all combinations of those settings to no avail.

A pipeline without sound exhibits the same problem.

Now, this is not major stuterring at all; you have to be very attentive to see it, and even then, you probably have to be experienced at seeing it to actually see it. But it’s definitely there.

Any idea how to fix it?

It seems that adding a nvvidconv filter with an FPS matching the current (or target) display helps, eg something like nvvidconv ! 'video/x-raw(memory:NVMM), fps=60' when using something like echo D:1920x1080p-60 >/sys/class/graphics/fb0/mode.

I’ll do more experimenting and report back.

If you have other ideas or solutions, please don’t refrain ;) Thanks.

Scratch that; nvvidconv doesn’t help, or not enough.

One thing that seems to make it perfect is when I’m able to match the content FPS to the display’s framerate. However, I think I only get that seemingly perfect result if I do sync=false on the video sink, eg, the sink will render as fast as it can, limited to the display’s refresh rate, but since it matches the content, it somewhat works.

Seems to look better today; 2 things changed: I added a queue after nvv4l2decoder (there was already a queue, but before the decoder) AND I swapped the power brick of the nano from a 2A to a 4A. Maybe the chip was power-starved?

Will test more.

For selecting power supply, please refer to

You may also execute sudo jetson_clocks and see if it helps.