Created attachment 143787 [details]
on latest Mesa I still get tons of artifacts when decoding MPEG2 on my AMD card via VAAPI, to the point where it is not usable for video decoding at all to be honest.
I've attached sample screenshots to show the problem - one software-decoded and one hardware-decoded via libva in mpv.
The sample video is taken from https://www.w6rz.net/1080p25.zip but the artifacts are visible more or less on any MPEG2 video including DVDs.
There is this older bug report: https://bugs.freedesktop.org/show_bug.cgi?id=93760 but I'm not sure it's related because I do not get any assertion failure and it vaguely reads like it has been fixed?
For clarification, I see no artifacts with VDPAU.
Tested with Mesa-19.1.0-devel (git-bea540173c), libva 2.5.0-pre1 (git-c98b06d2b8), FFmpeg N-93467-g54655623a8
VAAPI driver string: Mesa Gallium driver 19.1.0-devel for Radeon RX 580 Series (POLARIS10, DRM 3.27.0, 4.20.13-arch1-1-ARCH, LLVM 7.0.1)
I verified this with mpv, gstreamer and Kodi.
mpv seems to have disabled mpeg2 hw decoding by default due to this problem: https://github.com/mpv-player/mpv/commit/3dd59dbe
In Kodi we cannot go this route because we want to support low-end hardware that might have trouble decoding 1080p in software out-of-the-box.
I want to avoid having to blacklist the radeon vaapi driver for mpeg2 if possible.
Created attachment 143788 [details]
wasn't this fixed by https://cgit.freedesktop.org/mesa/mesa/commit/?id=d507bcdcf26b417dea201090165af651253b6b11
st/va: reverse qt matrix back to its original order
The quantiser matrix that VAAPI provides has been applied with inverse z-scan.
However, what we expect in MPEG2 picture description is the original order.
Therefore, we need to reverse it back to its original order.
I can only test with Cinelerra-GG, and my nv92 crad decodes 1080p25 mpeg2 very slowly (video decoder clock problem) - but for me images were ok!
Yes indeed, this bug is even listed in the 19.0.2 release notes. It was probably just forgotten to comment here. Anyhow, thanks Boyuan Zhang for the fix, works perfectly fine now with mesa 19.0.3 installed from normal repos!