After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 759998 - Application with playbin/vaapisink displays black/no frames after a while
Application with playbin/vaapisink displays black/no frames after a while
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gstreamer-vaapi
unspecified
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-12-30 13:36 UTC by Vasilis Liaskovitis
Modified: 2018-05-04 13:04 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Vasilis Liaskovitis 2015-12-30 13:36:27 UTC
Application that uses vaapisink renders video frames from a video list. After a few minutes of operation no more video frames are rendered, black frames are rendered and threads appear to be waiting indefinitely (always reproducible within 5-15 minutes usually). The "hang" and black screen happen always in between video files i.e. when one video stops and the next should begin.
 
Application uses "playbin video-sink=vaapisink" to playback a list of video files. Rendering is done in the application itself with opengl (using vaapisink's "handoff" signal, and binding va surfaces received from vaapisink into application glx/GL textures). Same pipeline is used across files. Instead of using "about-to-finish" signal for "gapless playback", the pipeline is transitioned to PLAYING->READY->PAUSED->PLAYING between each video, and uri set to the new file in between. ("about-to-finish" is not used because it skips(does not display) several frames from finishing video)
 
The problem does not happen when using glimagesink (video-sink=glimagesink) instead of vaapisink. (in this case texture received from gstgl elements are rendered immediately without vasurface to opengl texture conversion)

Full Backtrace of threads when black screen and hang appears: http://pastebin.com/zLsJG7cG
Another instance of backtrace: http://pastebin.com/QQECk14j

If you see some hint about the cause in the backtrace, please comment.
Comment 1 sreerenj 2016-03-24 16:54:52 UTC
Moving to Product:GStreamer, Component:gstreamer-vaapi
Comment 2 Víctor Manuel Jáquez Leal 2018-05-04 13:04:08 UTC
This looks like a surface exhaustion because the handed-off frames are not unrefed. Still, the code has evolved a lot since. Please, reopen if it persists.