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 744839 - gl: Flickering when libav direct rendering doing playbin playback
gl: Flickering when libav direct rendering doing playbin playback
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal normal
: 1.5.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Reported: 2015-02-20 05:12 UTC by Nicolas Dufresne (ndufresne)
Modified: 2015-03-15 14:46 UTC
See Also:
GNOME target: ---
GNOME version: ---

Description Nicolas Dufresne (ndufresne) 2015-02-20 05:12:21 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.
Comment 1 Matthew Waters (ystreet00) 2015-02-20 06:53:55 UTC
Another curious side effect, it seems to cause a delay in displaying video frames :/
Comment 2 Matthew Waters (ystreet00) 2015-02-20 06:56:17 UTC
Or, we're displaying/getting old frames all the time :/
Comment 3 Matthew Waters (ystreet00) 2015-02-20 07:49:49 UTC
This fixes the flickering although we're still displaying late.

commit a4040f2ee9437c732f1b488ef8b398f96335f64a
Author: Matthew Waters <>
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
Comment 4 Nicolas Dufresne (ndufresne) 2015-02-20 13:17:03 UTC
Maybe this is cause by libav pushing mapped frames:

libav pushes READWRITE mapped frame ->
glimagesink maps READ+GL, but nothing happens

Comment 5 Matthew Waters (ystreet00) 2015-03-15 14:46:48 UTC
Cannot seem to reproduce this anymore without pbo upload.