totem with gstreamer1-vaapi produces corrupted image on Intel UHD 620
Ever since I upgraded to Fedora 30 and Totem 3.32, I can't play any videos, the image is corrupted beyond recognition. I eventually figured out it's related to gstreamer1-vaapi
package - if I uninstall it, totem plays videos fine (without HW acceleration). However, gst-launch-1.0
plays videos fine in all cases, so this might be a totem bug, not gstreamer1-vaapi bug.
I used H264/VP8/Theora samples from this website: http://techslides.com/sample-webm-ogg-and-mp4-video-files-for-html5
The only sample that plays fine is the Theora (ogv) one, because there's no VA acceleration for it. H264 (mp4) and VP8 (webm) produce corrupted image:
Totem says:
$ totem --gst-debug-level=3 ./small.webm
0:00:00.194946592 4722 0x55f7556a3500 FIXME bin gstbin.c:4337:gst_bin_query: implement duration caching in GstBin again
0:00:00.216366302 4722 0x55f7556a3500 WARN basesrc gstbasesrc.c:3600:gst_base_src_start_complete:<source> pad not activated yet
0:00:00.216590677 4722 0x55f7556a3500 WARN basesrc gstbasesrc.c:3600:gst_base_src_start_complete:<source> pad not activated yet
(totem:4722): Gtk-WARNING **: 12:56:30.857: Drawing a gadget with negative dimensions. Did you forget to allocate a size? (node slider owner GtkScale)
0:00:00.370734679 4722 0x55f7556a3500 WARN totem bacon-video-widget.c:2074:bvw_update_tags: Pipeline sent audio tags update with no changes
0:00:00.371177104 4722 0x55f7556a3500 WARN totem bacon-video-widget.c:2074:bvw_update_tags: Pipeline sent video tags update with no changes
(totem:4722): Grilo-CRITICAL **: 12:57:14.281: grl_log_valist: assertion 'domain' failed
If I use gst-launch-1.0
instead, it plays fine:
And it seems to be VA accelerated:
$ gst-launch-1.0 playbin uri=file:///home/kparal/Videos/small.webm
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'vaapisink0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayGLX\)\ vaapidisplayglx0";
Redistribute latency...
Got context from element 'playsink': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayGLX\)\ vaapidisplayglx0";
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
Got EOS from element "playbin0".
Execution ended after 0:00:05.594351987
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
I'm also aware of this gstreamer-vaapi issue: https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/100
I tried latest mesa containing the fix, and it didn't help, so clearly this is a different issue.
My system:
Thinkpad T480s
Fedora 30
mesa-dri-drivers-19.0.3-1.fc30.x86_64
totem-3.32.0-1.fc30.x86_64
gstreamer1-vaapi-1.16.0-1.fc30.x86_64
$ lspci -nn | grep VGA
00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 620 [8086:5917] (rev 07)
$ vainfo
libva info: VA-API version 1.4.1
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.4 (libva 2.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Kaby Lake - 2.3.0
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileH264MultiviewHigh : VAEntrypointVLD
VAProfileH264MultiviewHigh : VAEntrypointEncSlice
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileH264StereoHigh : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointEncSlice
VAProfileVP9Profile2 : VAEntrypointVLD