GNOME Bugzilla – Bug 759998
Application with playbin/vaapisink displays black/no frames after a while
Last modified: 2018-05-04 13:04:08 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.
Moving to Product:GStreamer, Component:gstreamer-vaapi
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.