Frame tearing caused by 4k video and interaction with GL on certain configurations
The following command results in frame tearing when vaapidecodebin is selected by decodebin:
gst-launch-1.0 -v urisourcebin uri=https://upload.wikimedia.org/wikipedia/commons/0/08/Visit_of_the_Mandelbulb_%284K_UHD%3B_50FPS%29.webm ! decodebin ! glimagesink
This means that both the player
, playbin
, and all other elements which use the decodebin in some way have this same problem.
However, when the pipeline is recreated as closely as possible using the following, there is no frame tearing:
urisourcebin uri=https://upload.wikimedia.org/wikipedia/commons/0/08/Visit_of_the_Mandelbulb_%284K_UHD%3B_50FPS%29.webm ! typefind! matroskademux ! multiqueue max-size-bytes=2097152 max-size-time=0 ! vaapidecodebin ! glimagesink
I have noticed that when using the decodebin programmatically I don't get GLSyncMeta
with the buffers. Perhaps that is the problem. However, I can't confirm whether the second pipeline will correctly deliver the GLSyncMeta
, as I haven't been able to instantiate it programatically yet.
Environment
ibva info: VA-API version 1.11.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_11
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.11 (libva 2.10.0)
vainfo: Driver version: Mesa Gallium driver 21.2.1 - kisak-mesa PPA for AMD Radeon RX 6700 XT (NAVY_FLOUNDER, DRM 3.40.0, 5.11.0-31-generic, LLVM 12.0.1)
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
Gstreamer version is 1.18.4-1.