GNOME Bugzilla – Bug 776795
avdec_vp9: Rendering corruption
Last modified: 2018-11-03 12:58:21 UTC
Software decode for VP9 (libav – using avdec_vp9 pipeline) will cause corruption when rendering. However this does not occur when using vaapidecode (hardware decode) and vp9dec (on2 decode).
This was run on Yocto OS (reproducible on both Weston and X).
-Hardware Decode (Works fine)
gst-launch-1.0 filesrc location=/<File>.webm ! matroskademux ! vaapidecode ! vaapisink
-On2 Software Decode (Works fine)
gst-launch-1.0 filesrc location=/<File>.webm ! matroskademux ! vp9dec ! vaapisink
-libav Software Decode (Corruption when rendering)
gst-launch-1.0 filesrc location=/<File>.webm ! matroskademux ! avdec_vp9 ! vaapisink
Does it work fine with ffplay / avplay?
And if you use another sink, like glimagesink, xvimagesink, ximagesink? Can you attach screenshots of the problem?
Also, could you try a more recent version please? (1.10.x or git master)
And is this against system ffmpeg/libav or the included one?
Created attachment 342809 [details]
A comparison of different sinks using avdec_vp9 and vaapidecode
Snapshot of the output when running the same commands on glimagesink and xvimagesink. Tried on ximagesink too, but unfortunately I got an error for both decoders:
root@intel-corei7-64:~# gst-launch-1.0 filesrc location=/gfx/projects/Braswell/HCK_Videos/VP9_Videos/Cactus_640x320_2mbps_30fps.webm ! matroskademux ! avdec_vp9 ! ximagesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
WARNING: from element /GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0: Delayed linking failed.
Additional debug info:
/nfs/png/home/lab_yocto/jk/workspace/BXT-LINUX-YOCTO.METABSP/yocto_build/build/tmp/work/corei7-64-poky-linux/gstreamer1.0/1.8.3-r0/gstreamer-1.8.3/gst/parse/grammar.y(506): gst_parse_no_more_pads (): /GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0:
failed delayed linking some pad of GstMatroskaDemux named matroskademux0 to some pad of avdec_vp9 named avdec_vp9-0
ERROR: from element /GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0: GStreamer encountered a general stream error.
Additional debug info:
/nfs/png/home/lab_yocto/jk/workspace/BXT-LINUX-YOCTO.METABSP/yocto_build/build/tmp/work/corei7-64-poky-linux/gstreamer1.0-plugins-good/1.8.3-r0/gst-plugins-good-1.8.3/gst/matroska/matroska-demux.c(4761): gst_matroska_demux_loop (): /GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0:
stream stopped, reason not-linked
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
Hi, sorry I confused the libva version with the intel-va-driver version. The intel-va-driver version is 1.7.2, while gstreamer-libav is 1.8.3:
We are not able to yet try on 1.10.x or above due to the best known configuration of the gstreamer version we are using is 1.8.3. However, it would be good news if this is fixed in libav 1.10.x and above!
Looks good here with 1.10.2 and GIT master on the sample videos I tried. Please provide your test video if it doesn't happen with all of them.
Created attachment 343404 [details]
Video with rendering corruption with avdecvp9
Sorry for the late reply, found out that this occurs with the specific video. Video is as attached - decoding and rendering with avdec_vp9 will result in corruption for this specific video, but with other decoders it is fine.
Confirmed, and works with ffplay with -vcodec vp9 (-> avdec_vp9) and with -vcodec libvpx-vp9 (-> vp9dec). So a problem on our side most likely.
-- GitLab Migration Automatic Message --
This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.
You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-libav/issues/32.