Avoid copy-pasting to add a new codec --- src/channel-display.c | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/src/channel-display.c b/src/channel-display.c index 06d433b..a3ed555 100644 --- a/src/channel-display.c +++ b/src/channel-display.c @@ -701,6 +701,18 @@ static HDC create_compatible_dc(void) static void spice_display_channel_reset_capabilities(SpiceChannel *channel) { + guint i; + const struct { + const SpiceVideoCodecType type; + const int cap; + const gchar *name; + } gst_codecs[] = { + {SPICE_VIDEO_CODEC_TYPE_MJPEG, SPICE_DISPLAY_CAP_CODEC_MJPEG, "mjpeg"}, + {SPICE_VIDEO_CODEC_TYPE_VP8, SPICE_DISPLAY_CAP_CODEC_VP8, "vp8"}, + {SPICE_VIDEO_CODEC_TYPE_H264, SPICE_DISPLAY_CAP_CODEC_H264, "h264"}, + {SPICE_VIDEO_CODEC_TYPE_VP9, SPICE_DISPLAY_CAP_CODEC_VP9, "vp9"}, + }; + spice_channel_set_capability(SPICE_CHANNEL(channel), SPICE_DISPLAY_CAP_SIZED_STREAM); spice_channel_set_capability(SPICE_CHANNEL(channel), SPICE_DISPLAY_CAP_MONITORS_CONFIG); spice_channel_set_capability(SPICE_CHANNEL(channel), SPICE_DISPLAY_CAP_COMPOSITE); @@ -718,29 +730,12 @@ static void spice_display_channel_reset_capabilities(SpiceChannel *channel) #ifdef HAVE_BUILTIN_MJPEG spice_channel_set_capability(SPICE_CHANNEL(channel), SPICE_DISPLAY_CAP_CODEC_MJPEG); #endif - if (gstvideo_has_codec(SPICE_VIDEO_CODEC_TYPE_MJPEG)) { - spice_channel_set_capability(SPICE_CHANNEL(channel), - SPICE_DISPLAY_CAP_CODEC_MJPEG); - } else { - SPICE_DEBUG("GStreamer does not support the mjpeg codec"); - } - if (gstvideo_has_codec(SPICE_VIDEO_CODEC_TYPE_VP8)) { - spice_channel_set_capability(SPICE_CHANNEL(channel), - SPICE_DISPLAY_CAP_CODEC_VP8); - } else { - SPICE_DEBUG("GStreamer does not support the vp8 codec"); - } - if (gstvideo_has_codec(SPICE_VIDEO_CODEC_TYPE_H264)) { - spice_channel_set_capability(SPICE_CHANNEL(channel), - SPICE_DISPLAY_CAP_CODEC_H264); - } else { - SPICE_DEBUG("GStreamer does not support the h264 codec"); - } - if (gstvideo_has_codec(SPICE_VIDEO_CODEC_TYPE_VP9)) { - spice_channel_set_capability(SPICE_CHANNEL(channel), - SPICE_DISPLAY_CAP_CODEC_VP9); - } else { - SPICE_DEBUG("GStreamer does not support the vp9 codec"); + for (i = 0; i < G_N_ELEMENTS(gst_codecs); i++) { + if (gstvideo_has_codec(gst_codecs[i].type)) { + spice_channel_set_capability(SPICE_CHANNEL(channel), gst_codecs[i].cap); + } else { + SPICE_DEBUG("GStreamer does not support the %s codec", gst_codecs[i].name); + } } } -- 2.11.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel