[Spice-devel] [PATCH] Add the ability to specify Spice video codecs.

Jeremy White jwhite at codeweavers.com
Mon Jul 27 09:51:11 PDT 2015


This patch requires the patch series provided by Francois Gouget
which add gstreamer support to Spice.

Signed-off-by: Jeremy White <jwhite at codeweavers.com>
---
 qemu-options.hx |  8 ++++++++
 ui/spice-core.c | 17 +++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/qemu-options.hx b/qemu-options.hx
index 77f5853..786f736 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -990,6 +990,7 @@ DEF("spice", HAS_ARG, QEMU_OPTION_spice,
     "       [,jpeg-wan-compression=[auto|never|always]]\n"
     "       [,zlib-glz-wan-compression=[auto|never|always]]\n"
     "       [,streaming-video=[off|all|filter]][,disable-copy-paste]\n"
+    "       [,video-codecs=<encoder1>:<codec1>[;<encoder2>:<codec2>]]\n",
     "       [,disable-agent-file-xfer][,agent-mouse=[on|off]]\n"
     "       [,playback-compression=[on|off]][,seamless-migration=[on|off]]\n"
     "   enable spice\n"
@@ -1074,6 +1075,13 @@ Default is auto.
 @item streaming-video=[off|all|filter]
 Configure video stream detection.  Default is filter.
 
+ at item video-codecs=encoder:codec[;encoder2:codec2]
+Configure what video codecs to use.  It is a semi colon separated
+list of encoder/codec pairs to try, in preference order.
+An encoder tyep of 'spice' selects built in codecs.  An encoder
+of 'gstreamer' indicates gstreamer.  The codec is the type
+of encoder; e.g. mjpeg, vp8, etc.  Default is spice:mjpeg.
+
 @item agent-mouse=[on|off]
 Enable/disable passing mouse events via vdagent.  Default is on.
 
diff --git a/ui/spice-core.c b/ui/spice-core.c
index bf4fd07..89b6eed 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -485,6 +485,9 @@ static QemuOptsList qemu_spice_opts = {
             .name = "streaming-video",
             .type = QEMU_OPT_STRING,
         },{
+            .name = "video-codecs",
+            .type = QEMU_OPT_STRING,
+        },{
             .name = "agent-mouse",
             .type = QEMU_OPT_BOOL,
         },{
@@ -779,6 +782,20 @@ void qemu_spice_init(void)
         spice_server_set_streaming_video(spice_server, SPICE_STREAM_VIDEO_OFF);
     }
 
+    str = qemu_opt_get(opts, "video-codecs");
+    if (str) {
+#if SPICE_SERVER_VERSION >= 0x000c06
+        if (spice_server_set_video_codecs(spice_server, str)) {
+            error_report("Invalid video codecs.");
+            exit(1);
+        }
+#else
+        error_report("this qemu build does not support the "
+                     "\"video-codecs\" option");
+        exit(1);
+#endif
+    }
+
     spice_server_set_agent_mouse
         (spice_server, qemu_opt_get_bool(opts, "agent-mouse", 1));
     spice_server_set_playback_compression
-- 
2.1.4



More information about the Spice-devel mailing list