[Spice-devel] [PATCH spice-gtk v3 0/6] Always use Playbin to create the pipeline

Victor Toso victortoso at redhat.com
Tue May 16 14:48:12 UTC 2017


From: Victor Toso <me at victortoso.com>

-- v2->v3:

* Apply acked in
- display-gst: check GstRegistry for decoding elements

* display-gst: include capabilities for h264
- Got the errors from h264parse related to incomplete capabilities. Not
  sure how I missed it before.  The error points out that video/x-h264
  is not enough for h264parse element and it ignores it (meaning that we
  could simple ignore capabilities for h264).
- The error is:
  h264parse gsth264parse.c:2559:gst_h264_parse_set_caps: video/x-h264
  caps without codec_data or stream-format
- But we *do* know the stream-format so I'm adding this to the
  capabilites.

* Moved 4/5 to be current 2/6 to avoid an intermediary patch that would
  cause regression if used with SPICE_GSTVIDEO_AUTO (Frediano)

* Created 1/6 to avoid creating encoder with wrong codec value (Frediano)

* Move g_sinal_connect() before g_object_set() where playbin is
  initialized on 6/6 (Frediano)

* Using a g_warn_if_fail() to be sure we will not be re-assigning the
  decoder->appsrc on 6/6 (Frediano)

-- v1-> v2:

Adressing Frediano comments in v1

* Rebased
* Removed caps="" for older version of GStreamer. No clear info on the
  issue that one had at that time. Still, video/x-h264 is the stream
  format that we receive and an error because of that should really be a
  bug in GStreamer.
* Moved v1 02/04 to be v2 01/04 in order to fix more easily the
  "cap=%s" problem in v1 01/04
* Free GstSample even while using playbin
* gst_element_ref() GstAppSrc and GstAppSink

-- v1:

Hi,

First time using git-publish [0], sorry if anything goes wrong :)

[0] https://github.com/stefanha/git-publish

The main goal for this series is to have streaming working with hardware
accelerated video decoding whenever is possible.

The best way to achieve that is to let GStreamer do most of the work. Using
Playbin [1] we can create the whole pipeline. We only need to work with
GstAppSrc and GstAppSink to set the encoded data and gather the decoded data.

[1] https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-playbin.html

Trying my best to not break streaming with older versions of GStreamer. Based on
a comment from ceyusa [2], since version 1.9.0 GStreamer is able to use Vaapi
elements automaticaly and for that reason I'm wrapping those changes with
GST_CHECK_VERSION(1,9,0).

[2] https://lists.freedesktop.org/archives/spice-devel/2016-October/032825.html

Cheers,
        toso

Victor Toso (6):
  display-gst: check codec type before creating decoder
  display-gst: remove SPICE_GSTVIDEO_AUTO check
  display-gst: include capabilities for h264
  display-gst: move "caps=" from struct to pipeline
  display-gst: check GstRegistry for decoding elements
  display-gst: Use Playbin for GStreamer 1.9.0 onwards

 src/channel-display-gst.c | 183 +++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 157 insertions(+), 26 deletions(-)

-- 
2.13.0



More information about the Spice-devel mailing list