[Spice-commits] configure.ac meson.build src/channel-display-gst.c

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jan 25 09:34:09 UTC 2019


 configure.ac              |    9 +++++----
 meson.build               |    4 +++-
 src/channel-display-gst.c |   36 ------------------------------------
 3 files changed, 8 insertions(+), 41 deletions(-)

New commits:
commit e2d77a3f7abd22493a798e1ae34bd84f5fd56cf5
Author: Victor Toso <me at victortoso.com>
Date:   Wed Jan 23 21:19:16 2019 +0100

    Require GStreamer 1.10 and above
    
    Odd minor versions are for development version, which means that
    checks on 1.9.x should be considered for development while normal
    environments should be running the stable.
    
    Some timeline of stable releases:
    
    1.14.4: Tue Oct  2 22:53:01 2018 +0100
    1.14.0: Mon Mar 19 20:09:51 2018 +0000
    1.12.0: Thu May  4 15:36:55 2017 +0300
    1.10.0: Tue Nov  1 17:50:24 2016 +0200
    
    This patch reduces a bit the code paths in channel-display-gst.c
    
    CentOS 7.6         : 1.10.4
    Fedora 27          : 1.12.5
    Fedora 28-30       : 1.14.x
    Debian 9 (Stretch) : 1.10.4
    
    Signed-off-by: Victor Toso <victortoso at redhat.com>
    Acked-by: Frediano Ziglio <fziglio at redhat.com>

diff --git a/configure.ac b/configure.ac
index 2f63422..7dab0be 100644
--- a/configure.ac
+++ b/configure.ac
@@ -215,8 +215,9 @@ AS_IF([test "x$enable_pulse" != "xno"],
 ])
 AM_CONDITIONAL([HAVE_PULSE], [test "x$enable_pulse" = "xyes"])
 
+GST_REQ="1.10"
 SPICE_CHECK_GSTREAMER(GSTAUDIO, 1.0,
-    [gstreamer-1.0 gstreamer-base-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
+    [gstreamer-1.0 >= $GST_REQ gstreamer-base-1.0 >= $GST_REQ gstreamer-app-1.0 >= $GST_REQ gstreamer-audio-1.0 >= $GST_REQ],
     [SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_1_0,
          [gst-plugins-base 1.0], [audioconvert audioresample appsink])
      SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_1_0,
@@ -224,10 +225,10 @@ SPICE_CHECK_GSTREAMER(GSTAUDIO, 1.0,
      AS_IF([test x"$missing_gstreamer_elements" = "xyes"],
          SPICE_WARNING([The GStreamer 1.0 audio backend can be built but may not work.]))
     ],
-    [AC_MSG_ERROR([Required GStreamer packages missing])])
+    [AC_MSG_ERROR([Required GStreamer packages missing or system version is below $GST_REQ])])
 
 SPICE_CHECK_GSTREAMER(GSTVIDEO, 1.0,
-    [gstreamer-1.0 gstreamer-base-1.0 gstreamer-app-1.0 gstreamer-video-1.0],
+    [gstreamer-1.0 >= $GST_REQ gstreamer-base-1.0 >= $GST_REQ gstreamer-app-1.0 >= $GST_REQ gstreamer-video-1.0 >= $GST_REQ],
     [missing_gstreamer_elements=""
      SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_1_0,
          [gst-plugins-base 1.0], [appsrc videoconvert appsink])
@@ -240,7 +241,7 @@ SPICE_CHECK_GSTREAMER(GSTVIDEO, 1.0,
      AS_IF([test x"$missing_gstreamer_elements" = "xyes"],
          SPICE_WARNING([The GStreamer video decoder can be built but may not work.]))
     ],
-    [AC_MSG_ERROR([Required GStreamer packages missing])])
+    [AC_MSG_ERROR([Required GStreamer packages missing or system version is below $GST_REQ])])
 
 AC_ARG_ENABLE([builtin-mjpeg],
   AS_HELP_STRING([--enable-builtin-mjpeg], [Enable the builtin mjpeg video decoder @<:@default=yes@:>@]),
diff --git a/meson.build b/meson.build
index 70dd318..5f39ff4 100644
--- a/meson.build
+++ b/meson.build
@@ -166,9 +166,11 @@ if d.found()
   spice_gtk_has_pulse = true
 endif
 
+gstreamer_version = '1.10'
+gstreamer_version_info = '>= @0@'.format(gstreamer_version)
 deps = ['gstreamer-1.0', 'gstreamer-base-1.0', 'gstreamer-app-1.0', 'gstreamer-audio-1.0', 'gstreamer-video-1.0']
 foreach dep : deps
-  spice_glib_deps += dependency(dep)
+  spice_glib_deps += dependency(dep, version: gstreamer_version_info)
 endforeach
 
 # builtin-mjpeg
diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
index 08c9f8f..4e66122 100644
--- a/src/channel-display-gst.c
+++ b/src/channel-display-gst.c
@@ -351,9 +351,7 @@ static gboolean handle_pipeline_message(GstBus *bus, GstMessage *msg, gpointer v
                                           gst_opts[decoder->base.codec_type].name);
         GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(decoder->pipeline),
                                   GST_DEBUG_GRAPH_SHOW_ALL
-#if GST_CHECK_VERSION(1,5,1)
                                     | GST_DEBUG_GRAPH_SHOW_FULL_PARAMS
-#endif
                                     | GST_DEBUG_GRAPH_SHOW_STATES,
                                     filename);
         g_free(filename);
@@ -366,7 +364,6 @@ static gboolean handle_pipeline_message(GstBus *bus, GstMessage *msg, gpointer v
     return TRUE;
 }
 
-#if GST_CHECK_VERSION(1,9,0)
 static void app_source_setup(GstElement *pipeline G_GNUC_UNUSED,
                              GstElement *source,
                              SpiceGstDecoder *decoder)
@@ -391,12 +388,10 @@ static void app_source_setup(GstElement *pipeline G_GNUC_UNUSED,
     gst_caps_unref(caps);
     decoder->appsrc = GST_APP_SRC(gst_object_ref(source));
 }
-#endif
 
 static gboolean create_pipeline(SpiceGstDecoder *decoder)
 {
     GstBus *bus;
-#if GST_CHECK_VERSION(1,9,0)
     GstElement *playbin, *sink;
     SpiceGstPlayFlags flags;
     GstCaps *caps;
@@ -468,35 +463,6 @@ static gboolean create_pipeline(SpiceGstDecoder *decoder)
 
     g_warn_if_fail(decoder->appsrc == NULL);
     decoder->pipeline = playbin;
-#else
-    gchar *desc;
-    GError *err = NULL;
-
-    /* - We schedule the frame display ourselves so set sync=false on appsink
-     *   so the pipeline decodes them as fast as possible. This will also
-     *   minimize the risk of frames getting lost when we rebuild the
-     *   pipeline.
-     * - Set max-bytes=0 on appsrc so it does not drop frames that may be
-     *   needed by those that follow.
-     */
-    desc = g_strdup_printf("appsrc name=src is-live=true format=time max-bytes=0 block=true "
-                           "caps=%s ! %s ! videoconvert ! appsink name=sink "
-                           "caps=video/x-raw,format=BGRx sync=false drop=false",
-                           gst_opts[decoder->base.codec_type].dec_caps,
-                           gst_opts[decoder->base.codec_type].dec_name);
-    SPICE_DEBUG("GStreamer pipeline: %s", desc);
-
-    decoder->pipeline = gst_parse_launch_full(desc, NULL, GST_PARSE_FLAG_FATAL_ERRORS, &err);
-    g_free(desc);
-    if (!decoder->pipeline) {
-        spice_warning("GStreamer error: %s", err->message);
-        g_clear_error(&err);
-        return FALSE;
-    }
-
-    decoder->appsrc = GST_APP_SRC(gst_bin_get_by_name(GST_BIN(decoder->pipeline), "src"));
-    decoder->appsink = GST_APP_SINK(gst_bin_get_by_name(GST_BIN(decoder->pipeline), "sink"));
-#endif
 
     if (decoder->appsink) {
         GstAppSinkCallbacks appsink_cbs = { NULL };
@@ -642,14 +608,12 @@ static gboolean spice_gst_decoder_queue_frame(VideoDecoder *video_decoder,
         return FALSE;
     }
 
-#if GST_CHECK_VERSION(1,9,0)
     if (decoder->appsrc == NULL) {
         spice_warning("Error: Playbin has not yet initialized the Appsrc element");
         stream_dropped_frame_on_playback(decoder->base.stream);
         spice_frame_free(frame);
         return TRUE;
     }
-#endif
 
     /* frame ownership is moved to the buffer */
     GstBuffer *buffer = gst_buffer_new_wrapped_full(GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS,


More information about the Spice-commits mailing list