This makes it possible to test the GStreamer video decoder with MJPEG streams. Signed-off-by: Francois Gouget <fgouget@xxxxxxxxxxxxxxx> --- 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 77c579d..54562c8 100644 --- a/configure.ac +++ b/configure.ac @@ -340,6 +340,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 f6650be..2b9386d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -266,7 +266,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 \ @@ -354,6 +353,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 14e2ac0..fc85db1 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 80e0782..f485a0e 100644 --- a/src/channel-display.c +++ b/src/channel-display.c @@ -722,8 +722,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); } @@ -1131,9 +1134,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); -- 2.7.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel