[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