intel / intel/libva

gstreamer crashes in vaapisink with "could not render surface"

Open
#745 2 comments 1 reaction 1 assignee Claimed by @xhaihao View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.