I am using GStreamer with the following pipeline in code:
filesrc location=/video.mp4 ! decodebin ! queue ! waylandsink
to display a video. It always plays the video full screen without issues.
If I pass a gtk window handle as an overlay it sometimes renders the video at the specified position but on some runs it just gives a black rectangle where the video should be.If it displays the video it will show the entire video. If it starts off with a black rectangle it will never show any frames.
I changed the the waylandsink code to save the GstBuffer frames to flash just before they are attached to the wl_surface and found that the frames are exactly the same between when the video is displayed and when it isn't.
The wayland client protocol calls are also the same.
Where else can I look for the issue?
We did get it to show the video every time in the overlay if the hardware rendering was disabled in the kernel. The issue was that the cpu is unable to display the video frames without dropped frames if there is no gpu used. So the above solution will not be acceptable for the client. Is there anybody who has been successful in running the waylandsink with an overlay?
Here is the simple example application that displays the overlay on a created wayland surface.
Hello,
It uses the hardware decoders and it pass by queue, Try to disable this but the full screen will be remain.
Regards