GNOME Bugzilla – Bug 790623
vaapi/qtsink: dmabuf exhaustion
Last modified: 2018-05-04 09:03:01 UTC
Created attachment 364057 [details] GStreamer log We're playing a ~1 second video in Qt/QML 5.8 and using GStreamer 1.12.3 on both Ubuntu 16.04 and Yocto 2.3. The QML widget is set to auto-loop and after about 50-100 loops, the pipeline will crash with the attached log. It's crashing here as best as we can tell: https://github.com/GStreamer/gstreamer-vaapi/blob/master/gst/vaapi/gstvaapivideomemory.c#L1000
The question is why it cannot duplicate the DMABuf? So the normal questions: 1\ what's the vainfo output? which hardware are you using? 2\ what's your pipeline? 3\ have you tried with other caps before the video sink?
1) error: XDG_RUNTIME_DIR not set in the environment. libva info: VA-API version 0.39.4 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_0_39 libva info: va_openDriver() returns 0 vainfo: VA-API version: 0.39 (libva 1.7.3) vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3 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 2) We are using the default gstreamer plugin built into Qt 8.0. It is using a playbin with a custom video-sink. 3) Again, this is "out-of-the-box" Qt 5.0's multimedia "MediaPlayer" qml element.
Ok. Could you upload a log? Just export the environment variable GST_DEBUG=vaapi*:5 and capture the stderr/stdout logs
aah... perhaps the dmabuf descriptor got exhausted because they are not freed by the sink...
It seems it is a memleak in the application/framework which is not releasing the video buffers thus the fd exhaustion. If you have more info which verifies that the leak is in gstreamer-vaapi please reopen.