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 f8d4abf..ca16145 100644 --- a/configure.ac +++ b/configure.ac @@ -363,6 +363,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 c90c8c1..b2c51b7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -258,7 +258,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 \ @@ -346,6 +345,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 d8a03e9..2c64eb4 100644 --- a/src/channel-display-priv.h +++ b/src/channel-display-priv.h @@ -65,7 +65,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 c1ccde5..193f177 100644 --- a/src/channel-display.c +++ b/src/channel-display.c @@ -629,8 +629,11 @@ static void spice_display_channel_reset_capabilities(SpiceChannel *channel) spice_channel_set_capability(SPICE_CHANNEL(channel), SPICE_DISPLAY_CAP_STREAM_REPORT); } 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); } @@ -1038,9 +1041,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.6.2 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel