[Bug 758629] New: opengl plugin doesn't step aside with no or invalid DISPLAY

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Nov 24 21:23:15 PST 2015


https://bugzilla.gnome.org/show_bug.cgi?id=758629

            Bug ID: 758629
           Summary: opengl plugin doesn't step aside with no or invalid
                    DISPLAY
    Classification: Platform
           Product: GStreamer
           Version: 1.6.1
                OS: Cygwin
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-plugins-bad
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: yselkowi at redhat.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

For Cygwin, I have the following video sinks of at least GST_RANK_MARGINAL:

ximagesink (Rank: secondary)
glimagesink (GLX, Rank: secondary)
d3dvideosink (PATCHED FOR Rank: marginal)

I patched the rank of d3dvideosink so that the X11-based sinks take priority
when DISPLAY is set, as only they can be embedded in an X window, but
d3dvideosink can still be used to show videos automatically when DISPLAY is
unset.  This arrangement works well when only ximagesink and d3dvideosink are
installed:

$ GST_DEBUG=playbin:4 DISPLAY= gst-launch-1.0 playbin uri=file:///path/to/video
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.170399553  9092    0x6005210f0 WARN                 playbin
gstplaybin2.c:4643:autoplug_select_cb:<playbin0> Could not activate sink
ximagesink
Redistribute latency...
0:00:00.234448936  9092    0x6005658f0 INFO                 playbin
gstplaybin2.c:3742:no_more_pads_cb:<playbin0> setting custom audio sink
<pulsesink0>
0:00:00.234535341  9092    0x6005658f0 INFO                 playbin
gstplaybin2.c:3749:no_more_pads_cb:<playbin0> setting custom video sink
<d3dvideosink0>
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
[snip]

This is exactly what I would expect; without DISPLAY, the ximagesink should
fail, and allow another video sink to be chosen.  The same occurs (albeit
seemingly slower) if DISPLAY is set to an address/socket on which an X server
is not running, so this must be checked with XOpenDisplay().

However, if the opengl plugin from bad 1.6.1 is installed:

$ GST_DEBUG=playbin:4 DISPLAY= gst-launch-1.0 playbin uri=file:///path/to/video
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'sink': gst.gl.GLDisplay=context,
gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
Redistribute latency...
0:00:00.464773214  9924    0x6006dd320 INFO                 playbin
gstplaybin2.c:3742:no_more_pads_cb:<playbin0> setting custom audio sink
<pulsesink0>
0:00:00.464874246  9924    0x6006dd320 INFO                 playbin
gstplaybin2.c:3749:no_more_pads_cb:<playbin0> setting custom video sink
<glimagesinkbin0>
ERROR: from element
/GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:vbin/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink:
Failed to connect to X display server
Additional debug info:
/usr/src/ports/gstreamer1.0-plugins-bad-free/gstreamer1.0-plugins-bad-free-1.6.1-1.x86_64/src/gst-plugins-bad-1.6.1/ext/gl/gstglimagesink.c(819):
_ensure_gl_setup ():
/GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:vbin/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink
ERROR: pipeline doesn't want to preroll.
[snip]

It would appear that glimagesink (with GLX) isn't checking whether it can
connect to DISPLAY on initialization, only to fail later on.  I believe it
should check as ximagesink does.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list