How do I use nvdrmvideosink on GUI?

When I use nvdrmvideosink on GUI, there is following error message.

Failed to set plane
Failed to display frame buffer

I run following command by (NVIDIA Jetson Linux Developer Guide : Multimedia | NVIDIA Docs).

sudo systemctl stop gdm
sudo loginctl terminate-seat seat0

Then nvdrmvideosink suceeded rendering video.

But these commands disable GUI. I want to use nvdrmvideosink on GUI.

How do I use nvdrmvideosink on GUI?

I measured by nv3dsink, nveglglessink, nvoverlaysink, nvdrmvideosink.

nv3dsink and nveglglessink spend about 25-35 % GPU. But nvoverlaysink and nvdrmvideosink spend 0-5 % GPU. So I want to use nvoverlaysink or nvdrmvideosink.

But nvoverlaysink is deprecated in Jetson Linux Driver Package Release 32.1.

So I am looking for using nvdrmvideosink on GUI.


If nvdrmvideosink has to run after disabling gdm, it means the drm is trying to use the same framebuffer as gdm.

Thus, you have to check if you can choose different plane in drm.
Also, DRM is linux standard API, so you could check the API info over the Internet too.

1 Like

The nvdrmvideosink plugin has to be run in non-GUI environment. If you need GUI, please check if you can use nv3dsink or nveglglessink.

Thank you! It seems Jetson Nano has 3 planes. And GUI (gdm) spend 1 plane (plane-id=0).

I could run nvdrmvideosink plane-id=1 (or 2) on GUI.

It is OK for me.


This may not work in nvdrmvideosink plugin. Suggest you check 08_video_dec_drm sample:

It demonstrates the case of one video plane + one UI plane.

1 Like

Thanks. I will check your sample.
I am not familiar with DRM.
If there is another problem, I report here.