[Spice-devel] [PATCH v10 00/27] Add GStreamer support for video streaming

Francois Gouget fgouget at codeweavers.com
Tue Mar 1 15:49:55 UTC 2016


This patch series adds support for using GStreamer to encode and decode
the video streams, adding support for VP8 and h264 codecs.

There have been quite a few changes since the last revision of this
patchset.
 * The VP8 encoding performance has been improved.
 * The zero-copy code for the input frame has been cleaned up.
 * The Spice-Gtk architecture has been modified so the video decoder can 
   avoid dropping frames for inter-frame codecs (such as VP8 and h264) 
   as that causes artifacts. This should avoid the image quality issues 
   that sometimes happened while the bitrate was getting adjusted.
 * The new Spice-gtk architecture also allows GStreamer to work on 
   more frames at once which could help with performance.


As before the patches can also be grabbed from the gst branch of the
repositories below:

spice:          https://github.com/fgouget/spice
spice-gtk:      https://github.com/fgouget/spice-gtk
xf86-video-qxl: https://github.com/fgouget/xf86-video-qxl
spice-protocol: https://github.com/fgouget/spice-protocol

See also gst-sync for the old spice-gtk code. (there's also 'extras'
branches with more experimental/future patches for the curious)


Changes from v9:
* Moved the codec parameters except the bitrate to the pipeline 
  'gst-launch' string. That string is traced so this makes it easier to 
  see exactly how the codecs were configured.
* Updated how the video:codec preference string is handled to use a 
  GArray.
* Changed the VP8 encoder parameters to improve performance based on 
  the realtime profile. Furthermore it turns out that it is important to 
  get the number of physical cores right, and that's something the 
  encoder does not know how to do itself.
* Instead of waiting until the last millisecond to decode frames, 
  Spice-Gtk now lets the video decoders do the queuing. So in the 
  GStreamer case the GStreamer pipeline now does the queuing and 
  calls Spice-Gtk back when it's time to display the frame.
* That last point means mm-time adjustments don't apply to queued 
  frames. That does not really seem to be an issue but could be modified 
  if necessary.

Changes from v8:
* Rebased on the current source.
* Adjusted the Spice protocol version requirement.

Changes from v7:
* When the client has support for GStreamer video codecs it now
  checks the presence of each supported codec before advertising support
  for it.

Changes from v6:
* configure.ac uses the new m4 macros to check for GStreamer support
  and the presence of the needed plugins.
* It separates adding checks for the client codec support from
  specifying which codec to use in the server and from adding VP8
  support.


-- 
Francois Gouget <fgouget at codeweavers.com>



More information about the Spice-devel mailing list