GNOME Bugzilla – Bug 744839
gl: Flickering when libav direct rendering doing playbin playback
Last modified: 2015-03-15 14:46:48 UTC
When playing inside playbin, we often get flickering when libav direct rendering. This often starts when seeking, and is always visible on OSX. gst-launch-1.0 playbin uri=... video-sink="glimagesink" One thing to notice is that forcing 1 more buffer in the pipeline fixes the flickering. gst-launch-1.0 playbin uri=... video-sink="queue min-threshold-buffer=1 ! glimagesink" This is a regression from previous version where direct rendering (VideoAlignement) was not supported. Even though, not doing direct rendering is equivalent to this extra buffer case.
Another curious side effect, it seems to cause a delay in displaying video frames :/
Or, we're displaying/getting old frames all the time :/
This fixes the flickering although we're still displaying late. commit a4040f2ee9437c732f1b488ef8b398f96335f64a Author: Matthew Waters <matthew@centricular.com> Date: Fri Feb 20 18:42:23 2015 +1100 glememory: only store and act on the map flags on first/last map/unmap Anytime else, we have no idea how to match up map and unmaps. We also don't know exactly how the calling code is using us. Also fixes the case where we're trying to transfer while someone else is accessing our data pointer or texture resulting in mismatched video frames. https://bugzilla.gnome.org/show_bug.cgi?id=744839
Maybe this is cause by libav pushing mapped frames: libav pushes READWRITE mapped frame -> glimagesink maps READ+GL, but nothing happens ...
Cannot seem to reproduce this anymore without pbo upload.