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

Jeremy White jwhite at codeweavers.com
Mon Jul 27 10:50:38 PDT 2015


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

It also should finally include the fix that Fabio keeps pointing out.

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..242eb55 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