[Spice-devel] [RFC spice-gtk 1/1] Gstreamer: Use GstVideoOverlay if possible

Frediano Ziglio fziglio at redhat.com
Thu Jul 26 10:45:35 UTC 2018


> Hi,

> On 07/24/2018 06:47 PM, Marc-André Lureau wrote:

> > Hi
> 

> > On Sun, Mar 11, 2018 at 10:44 AM, Snir Sheriber <ssheribe at redhat.com>
> > wrote:
> 

> > > Currently when gstreamer is used to decode a full-screen
> > 
> 

> > > ...
> > 
> 

> > > diff --git a/src/spice-widget.c b/src/spice-widget.c
> > 
> 
> > > index 1e7add4..73a77b7 100644
> > 
> 
> > > --- a/src/spice-widget.c
> > 
> 
> > > +++ b/src/spice-widget.c
> > 
> 
> > > @@ -612,6 +612,29 @@ G_GNUC_END_IGNORE_DEPRECATIONS
> > 
> 
> > > #endif
> > 
> 
> > > #endif
> > 
> 

> > > +static void
> > 
> 
> > > +gst_area_realize(GtkGLArea *area, gpointer user_data)
> > 
> 
> > > +{
> > 
> 
> > > +//TODO: needs rework, currently works only under X
> > 
> 
> > > +#ifdef GDK_WINDOWING_X11
> > 
> 
> > > +    SpiceDisplay *display = SPICE_DISPLAY(user_data);
> > 
> 
> > > +    SpiceDisplayPrivate *d = display->priv;
> > 
> 
> > > +    GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(display));
> > 
> 
> > > +
> > 
> 
> > > +    if (window) {
> > 
> 
> > > +#if GTK_CHECK_VERSION(2,18,0)
> > 
> 
> > > +        if (!gdk_window_ensure_native (window)) {
> > 
> 
> > > +            g_warning("Couldn't create native window needed for
> > > GstVideoOverlay!");
> > 
> 
> > > +            return;
> > 
> 
> > > +        }
> > 
> 
> > > +#endif
> > 
> 
> > > +        g_object_set(G_OBJECT (d->display),
> > 
> 
> > > +                    "handle", GDK_WINDOW_XID(window),
> > 
> 
> > > +                    NULL);
> > 
> 
> > > +    }
> > 
> 
> > > +#endif
> > 
> 
> > > +}
> > 
> 
> > > +
> > 
> 
> > > static void
> > 
> 
> > > drawing_area_realize(GtkWidget *area, gpointer user_data)
> > 
> 
> > > {
> > 
> 
> > > @@ -660,6 +683,13 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
> > 
> 
> > > G_GNUC_END_IGNORE_DEPRECATIONS
> > 
> 
> > > #endif
> > 
> 
> > > #endif
> > 
> 
> > > +
> > 
> 
> > > +    area = gtk_drawing_area_new();
> > 
> 
> > > +    g_object_connect(area,
> > 
> 
> > > +                     "signal::realize", gst_area_realize, display,
> > 
> 
> > > +                     NULL);
> > 
> 
> > > +    gtk_stack_add_named(d->stack, area, "gst-area");
> > 
> 

> > Was there a good reason to use a seperate drawing area rather than the
> 
> > existing one?
> 

> There were some reasons for this, iirc there was an issue with the signals
> that was needed to be disabled to avoid interference with the drawings (i
> had a version where it uses the same drawing area but eventually it was
> dropped) and also at first i was trying both gl-area and drawing-area so it
> was
> easier to switch.
> (Also please notice that this patch is not the recent version which was
> pushed)

I think the "there were some reasons" is an indication that a comment in 
the code with the reason would be good. 

> > Is there a simple way to test the "streaming mode"? A test case like
> 
> > server/tests/test-display-streaming would be great.
> 

> Could be tested by using spice-streaming-agent that streams mjpeg to a client
> that was
> built with disabled builtin_mjpeg (so it will use the spice-gst-decoder)
> or
> By using spice-streaming-agent that streams h264/vp8 video stream using the
> gst-plugin
> which was recently sent to ML and it is still not pushed upstream.

> Currently I'm not aware to any similar\other test option that is available
> upstream.

> Snir.

Tests are always great. I don't think we really need all these system settings. 
But that would be the target of this/these tests? Run into a CI? Manually testing? 
I think gstreamer and video output are used here, the patch is supposed to optimize 
the rendering part and the full pipeline. Also depends on codec and plugins installed 
(although in a CI we can force to have some plugins installed, but still hard to get 
a display server... or a vncserver is enough?) 

Frediano 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20180726/13079fb0/attachment.html>


More information about the Spice-devel mailing list