[Spice-devel] [client v14 27/29] spice-gtk: Allow disabling support for the builtin MJPEG video decoder

Pavel Grunt pgrunt at redhat.com
Tue May 17 07:19:41 UTC 2016


On Wed, 2016-05-04 at 11:44 +0200, Francois Gouget wrote:
> This makes it possible to test the GStreamer video decoder with MJPEG
> streams.
> 
> Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
Acked-by: Pavel Grunt <pgrunt at redhat.com>
> ---
>  configure.ac               | 11 +++++++++++
>  src/Makefile.am            |  7 ++++++-
>  src/channel-display-priv.h |  2 ++
>  src/channel-display.c      |  5 +++++
>  4 files changed, 24 insertions(+), 1 deletion(-)
> 
> diff --git a/configure.ac b/configure.ac
> index f13301d..38c5bab 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -289,6 +289,17 @@ AS_IF([test "x$enable_gstvideo" != "xno"],
>  )
>  AM_CONDITIONAL([HAVE_GSTVIDEO], [test "x$have_gstvideo" = "xyes"])
>  
> +AC_ARG_ENABLE([builtin-mjpeg],
> +  AS_HELP_STRING([--enable-builtin-mjpeg], [Enable the builtin mjpeg video
> decoder @<:@default=yes@:>@]),
> +  [],
> +  enable_builtin_mjpeg="yes")
> +AS_IF([test "x$enable_builtin_mjpeg" = "xyes"],
> +      [AC_DEFINE([HAVE_BUILTIN_MJPEG], 1, [Use the builtin mjpeg decoder?])])
> +AM_CONDITIONAL(HAVE_BUILTIN_MJPEG, [test "x$enable_builtin_mjpeg" != "xno"])
> +
> +AS_IF([test "x$enable_builtin_mjpeg$enable_gstvideo" = "xnono"],
> +      [SPICE_WARNING([No builtin MJPEG or GStreamer decoder, video will not
> be streamed])])
> +
>  AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
>      AC_MSG_CHECKING([for jpeglib.h])
>      AC_TRY_CPP(
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 317e993..73bb39c 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -242,7 +242,6 @@ libspice_client_glib_2_0_la_SOURCES =			
> \
>  	channel-cursor.c				\
>  	channel-display.c				\
>  	channel-display-priv.h				\
> -	channel-display-mjpeg.c				\
>  	channel-inputs.c				\
>  	channel-main.c					\
>  	channel-playback.c				\
> @@ -330,6 +329,12 @@ libspice_client_glib_2_0_la_SOURCES +=	\
>  	$(NULL)
>  endif
>  
> +if HAVE_BUILTIN_MJPEG
> +libspice_client_glib_2_0_la_SOURCES +=	\
> +	channel-display-mjpeg.c		\
> +	$(NULL)
> +endif
> +
>  if HAVE_GSTVIDEO
>  libspice_client_glib_2_0_la_SOURCES +=	\
>  	channel-display-gst.c		\
> diff --git a/src/channel-display-priv.h b/src/channel-display-priv.h
> index d1a30a6..b504691 100644
> --- a/src/channel-display-priv.h
> +++ b/src/channel-display-priv.h
> @@ -68,7 +68,9 @@ struct VideoDecoder {
>   * @stream:     The associated video stream.
>   * @return:     A pointer to a structure implementing the VideoDecoder
> methods.
>   */
> +#ifdef HAVE_BUILTIN_MJPEG
>  VideoDecoder* create_mjpeg_decoder(int codec_type, display_stream *stream);
> +#endif
>  #ifdef HAVE_GSTVIDEO
>  VideoDecoder* create_gstreamer_decoder(int codec_type, display_stream
> *stream);
>  gboolean gstvideo_init(void);
> diff --git a/src/channel-display.c b/src/channel-display.c
> index ed19e58..67ee111 100644
> --- a/src/channel-display.c
> +++ b/src/channel-display.c
> @@ -717,8 +717,11 @@ static void
> spice_display_channel_reset_capabilities(SpiceChannel *channel)
>      spice_channel_set_capability(SPICE_CHANNEL(channel),
> SPICE_DISPLAY_CAP_GL_SCANOUT);
>  #endif
>      spice_channel_set_capability(SPICE_CHANNEL(channel),
> SPICE_DISPLAY_CAP_MULTI_CODEC);
> +#ifdef HAVE_BUILTIN_MJPEG
>      spice_channel_set_capability(SPICE_CHANNEL(channel),
> SPICE_DISPLAY_CAP_CODEC_MJPEG);
> +#endif
>      if (gstvideo_init()) {
> +        spice_channel_set_capability(SPICE_CHANNEL(channel),
> SPICE_DISPLAY_CAP_CODEC_MJPEG);
>          spice_channel_set_capability(SPICE_CHANNEL(channel),
> SPICE_DISPLAY_CAP_CODEC_VP8);
>          spice_channel_set_capability(SPICE_CHANNEL(channel),
> SPICE_DISPLAY_CAP_CODEC_H264);
>      }
> @@ -1098,9 +1101,11 @@ static void display_handle_stream_create(SpiceChannel
> *channel, SpiceMsgIn *in)
>      display_update_stream_region(st);
>  
>      switch (op->codec_type) {
> +#ifdef HAVE_BUILTIN_MJPEG
>      case SPICE_VIDEO_CODEC_TYPE_MJPEG:
>          st->video_decoder = create_mjpeg_decoder(op->codec_type, st);
>          break;
> +#endif
>      default:
>  #ifdef HAVE_GSTVIDEO
>          st->video_decoder = create_gstreamer_decoder(op->codec_type, st);


More information about the Spice-devel mailing list