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.
Author: Matthew Waters <firstname.lastname@example.org>
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
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.