[Spice-devel] [PATCH spice-gtk v4 6/7] display-gst: Use Playbin for GStreamer 1.9.0 onwards

Christophe Fergeau cfergeau at redhat.com
Thu Jun 29 14:35:30 UTC 2017


On Thu, Jun 29, 2017 at 01:58:07PM +0200, Victor Toso wrote:
> Hi,
> 
> On Thu, Jun 29, 2017 at 10:59:16AM +0200, Pavel Grunt wrote:
> > On Wed, 2017-06-28 at 14:43 +0200, Victor Toso wrote:
> > > From: Victor Toso <me at victortoso.com>
> > > 
> > > The Playbin can provide the full pipeline which reduces the
> > > overall maintenance in the code as we don't need to track which
> > > decoder can work with our stream type.
> > > 
> > > We need to maintain the GstCaps per SPICE_VIDEO_CODEC_TYPE in order
> > > to
> > > tell Playbin the type of data we expect. This much should be covered
> > > by spice-protocol and very likely we will need to extend it in the
> > > future to allow more settings that might not possible to verify at
> > > runtime.
> > > 
> > > This patch keeps previous code for compatibility reasons.
> > > 
> > > Note that we have to wait Playbin to emit "source-setup" in order to
> > > configure GstAppSrc with the capabilities of input stream. If in the
> > > unlikely event of frames arriving while GstAppSrc is not setup, we
> > > will drop those frames.
> > > 
> > > Signed-off-by: Victor Toso <victortoso at redhat.com>
> > > Signed-off-by: Victor Toso <me at victortoso.com>
> > > ---
> > >  src/channel-display-gst.c | 99
> > > ++++++++++++++++++++++++++++++++++++++++++++++-
> > >  1 file changed, 97 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
> > > index 1b40002..df58de3 100644
> > > --- a/src/channel-display-gst.c
> > > +++ b/src/channel-display-gst.c
> > > @@ -50,6 +50,9 @@ typedef struct SpiceGstDecoder {
> > >      guint timer_id;
> > >  } SpiceGstDecoder;
> > >  
> > > +/* FIXME: With gstreamer version 1.9.0 and higher, we are using
> > > playbin to
> > > + * create the pipeline for us and for that reason we don't need to
> > > keep track of
> > > + * decoder's name anymore. */
> > >  static struct {
> > >      const gchar *dec_name;
> > >      const gchar *dec_caps;
> > > @@ -83,6 +86,21 @@ G_STATIC_ASSERT(G_N_ELEMENTS(gst_opts) <=
> > > SPICE_VIDEO_CODEC_TYPE_ENUM_END);
> > >  #define VALID_VIDEO_CODEC_TYPE(codec) \
> > >      (codec > 0 && codec < G_N_ELEMENTS(gst_opts))
> > >  
> > > +typedef enum {
> > > +  GST_PLAY_FLAG_VIDEO             = (1 << 0),
> > > +  GST_PLAY_FLAG_AUDIO             = (1 << 1),
> > > +  GST_PLAY_FLAG_TEXT              = (1 << 2),
> > > +  GST_PLAY_FLAG_VIS               = (1 << 3),
> > > +  GST_PLAY_FLAG_SOFT_VOLUME       = (1 << 4),
> > > +  GST_PLAY_FLAG_NATIVE_AUDIO      = (1 << 5),
> > > +  GST_PLAY_FLAG_NATIVE_VIDEO      = (1 << 6),
> > > +  GST_PLAY_FLAG_DOWNLOAD          = (1 << 7),
> > > +  GST_PLAY_FLAG_BUFFERING         = (1 << 8),
> > > +  GST_PLAY_FLAG_DEINTERLACE       = (1 << 9),
> > > +  GST_PLAY_FLAG_SOFT_COLORBALANCE = (1 << 10),
> > > +  GST_PLAY_FLAG_FORCE_FILTERS     = (1 << 11),
> > > +} GstPlayFlags;
> > 
> > It can cause problems if gstreamer exports, please give them a SPICE
> > prefix
> 
> "Thanks for the bug report, but we don't export plugin headers, sorry.
> 
> You can copy and paste these into your code, or use API like
> gst_util_set_object_arg() so you can use string nicks."
> 
> So, it should never happen. Source:
> https://bugzilla.gnome.org/show_bug.cgi?id=784279

I'd add a bug reference before the enum so that people know why you
copied and pasted this.

Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170629/0823928b/attachment.sig>


More information about the Spice-devel mailing list