Can the nv3dsink be started without window decorations such as title bar etc? Is there any other videosink that can (except for nvoverlaysink which is deprecated)?
Beside nvoverlaysink, you can utilize nvdrmvideosink. Please check gstreamer user guide.
However there is an advantage using nv3dsink in that I can draw GUI windows as usual on top of gstreamer window to show menus etc.
Another problem using overlays is that it seems that I run out of memory bandwidth.
My current setup is:
- HDMI screen with 1920x1080x60Hz
- Linux desktop 1920x1080
- Overlay with 1920x1080 video stream (nvoverlaysink)
- Overlay with up to 969x540 video stream (nvoverlaysink)
- Overlay with GUI graphics 1920x1080 RGBA8888 (using drmrenderer class from examples)
This produces horizontal flickering red lines over the screen, or sometimes solid red screen depending on the size of the overlays.
I also want to use a second HDMI display 1920x1080x60Hz using the remaining two overlays. But if I am out of memory bandwidth already with four overlays I guess it will not be possible?
Because of this I was thinking of using nv3doverlay where I can put a common application window on top for GUI overlay. There is no problem with the 1920x1080 video because the window can be run in full screen mode. But when I put the second 960x540 video on top its title bar and borders are too ugly to use.
How do I specify the order (depth) of the overlay used by nvdrmsink? I need to change position, size, and depth of the overlays while the pipe is running. This works with nvoverlaysink, but for the problem with the red lines (and deprecation issue).
For using nvoverlaysink, please check if this post helps:
Since we are deprecating nvoverlaysink, no further bug fix/feature will be added into it. Certain properties are not in nvdrmvideosink. If you require the properites, please list the properties so that we can check and evaluate to support it in future releases.
- Depth / z to control drawing order between several overlays
I would also want this to be compatible with your drmrenderer.cpp helper class so that it is possible to set depth and control the overlays in a compatible way.
Thus be able to draw an overlay on top of nvdrmvideosink.
I was succesful in removing nv3dsink window border/decorations by changing the linux desktop theme. This then applies to all windows, but that is what I was looking for.
What are the differences between nvoverlaysink, nv3dsink, nvdrmvideosink? How do I choose which one to use for a specific application?
nv3dsink is a window-based rendering sink, and based on X11. nvdrmvideosink is a direct-rendering sink, and based on libdrm. You may pick one according to your usecase.
I switched from nveglglessink to nvoverlaysink and the window decorations are gone, nvoverlaysink bypasses X and wayland I think so it is not really a window.
I also remove the display code from my Qt and just use gstreamer to put the video on the display and Qt puts Qt display around my video, in our liveVideo screen.
Here is a way to turn off the window decorations. It worked with the LXDE / compton combination but the file is named lxde-rc.xml. N.B. it turns off decorations including title bar for all applications.