gstreamer crashes in vaapisink with "could not render surface"
- Dominant language
- C
- Stars
- 784
- Forks
- 314
- PR merge metrics
- No merged PRs in 30d
Description
Hello,
in Yocto Mickledore playing a video via vaapisink is no longer possible with libva 2.16.
Playing a video "gst-launch-1.0 playbin uri=file:///video.mp4 video-sink=vaapisink" results in this error message.
```
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'vaapisink0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayGLX\)\ vaapidisplayglx0", gst.vaapi.Display.GObject=(GstObject)"\(GstVaapiDisplayGLX\)\ vaapidisplayglx0";
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
ERROR: from element /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:vbin/GstVaapiSink:vaapisink0: Internal error: could not render surface
Additional debug info:
/usr/src/debug/gstreamer1.0-vaapi/1.22.0-r0/gst/vaapi/gstvaapisink.c(1541): gst_vaapisink_show_frame_unlocked (): /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:vbin/GstVaapiSink:vaapisink0
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
```
A workaround is to use xvimagesink which has a much higher CPU load.
Copying Yocto's kirkstone libva 2.14 to mickledore helps, then the video is successfully displayed with vaapisink and little CPU load. So I assume it is an issue with libva.
This has been reproduced on Kabylake, Skylake, ElkhartLake and other CPUs.
The BSP uses yocto and the associated meta-intel.
Best regards,
Markus
Contributor guide
Assessment
This issue has not been assessed yet.