[Spice-devel] [PATCH spice-server] Support VP9 encoder using GStreamer
Frediano Ziglio
fziglio at redhat.com
Thu Jan 5 15:01:52 UTC 2017
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
configure.ac | 2 +-
server/gstreamer-encoder.c | 4 ++++
server/reds.c | 4 +++-
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index a78b4ec..c155c35 100644
--- a/configure.ac
+++ b/configure.ac
@@ -142,7 +142,7 @@ AS_IF([test x"$have_smartcard" = "xyes"], [
AS_VAR_APPEND([SPICE_REQUIRES], [" libcacard >= 0.1.2"])
])
-SPICE_PROTOCOL_MIN_VER=0.12.12
+SPICE_PROTOCOL_MIN_VER=0.12.13
PKG_CHECK_MODULES([SPICE_PROTOCOL], [spice-protocol >= $SPICE_PROTOCOL_MIN_VER])
AC_SUBST([SPICE_PROTOCOL_MIN_VER])
diff --git a/server/gstreamer-encoder.c b/server/gstreamer-encoder.c
index 988d193..cb0af49 100644
--- a/server/gstreamer-encoder.c
+++ b/server/gstreamer-encoder.c
@@ -878,6 +878,8 @@ static const gchar* get_gst_codec_name(SpiceGstEncoder *encoder)
return "vp8enc";
case SPICE_VIDEO_CODEC_TYPE_H264:
return "x264enc";
+ case SPICE_VIDEO_CODEC_TYPE_VP9:
+ return "vp9enc";
default:
/* gstreamer_encoder_new() should have rejected this codec type */
spice_warning("unsupported codec type %d", encoder->base.codec_type);
@@ -907,6 +909,7 @@ static gboolean create_pipeline(SpiceGstEncoder *encoder)
gstenc_opts = g_strdup("max-threads=1");
#endif
break;
+ case SPICE_VIDEO_CODEC_TYPE_VP9:
case SPICE_VIDEO_CODEC_TYPE_VP8: {
/* See http://www.webmproject.org/docs/encoder-parameters/
* - Set mode/end-usage to get a constant bitrate to help with
@@ -1694,6 +1697,7 @@ VideoEncoder *gstreamer_encoder_new(SpiceVideoCodecType codec_type,
SPICE_VERIFY(SPICE_GST_FRAME_STATISTICS_COUNT <= SPICE_GST_HISTORY_SIZE);
spice_return_val_if_fail(codec_type == SPICE_VIDEO_CODEC_TYPE_MJPEG ||
codec_type == SPICE_VIDEO_CODEC_TYPE_VP8 ||
+ codec_type == SPICE_VIDEO_CODEC_TYPE_VP9 ||
codec_type == SPICE_VIDEO_CODEC_TYPE_H264, NULL);
GError *err = NULL;
diff --git a/server/reds.c b/server/reds.c
index 3b30928..e831ab7 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3405,7 +3405,7 @@ err:
static const char default_renderer[] = "sw";
#if defined(HAVE_GSTREAMER_1_0) || defined(HAVE_GSTREAMER_0_10)
-#define GSTREAMER_CODECS "gstreamer:mjpeg;gstreamer:h264;gstreamer:vp8;"
+#define GSTREAMER_CODECS "gstreamer:mjpeg;gstreamer:h264;gstreamer:vp8;gstreamer:vp9;"
#else
#define GSTREAMER_CODECS ""
#endif
@@ -3501,6 +3501,7 @@ static const EnumNames video_codec_names[] = {
{SPICE_VIDEO_CODEC_TYPE_MJPEG, "mjpeg"},
{SPICE_VIDEO_CODEC_TYPE_VP8, "vp8"},
{SPICE_VIDEO_CODEC_TYPE_H264, "h264"},
+ {SPICE_VIDEO_CODEC_TYPE_VP9, "vp9"},
{0, NULL},
};
@@ -3508,6 +3509,7 @@ static const int video_codec_caps[] = {
SPICE_DISPLAY_CAP_CODEC_MJPEG,
SPICE_DISPLAY_CAP_CODEC_VP8,
SPICE_DISPLAY_CAP_CODEC_H264,
+ SPICE_DISPLAY_CAP_CODEC_VP9,
};
--
2.9.3
More information about the Spice-devel
mailing list