summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancois Gouget <fgouget@codeweavers.com>2016-07-07 15:23:56 +0200
committerJeremy White <jwhite@codeweavers.com>2016-07-07 08:50:12 -0500
commit14ff3c26e204d334a9c110debfaa2ef8cab97bf6 (patch)
tree7191443dc009327274411555c0873186e3f4cf77
parentedd1a409f879f74193c2789f50240005bcf00783 (diff)
spiceqxl: Add SpiceVideoCodecs to specify video codec preference
Signed-off-by: Francois Gouget <fgouget@codeweavers.com> Signed-off-by: Jeremy White <jwhite@codeweavers.com>
-rw-r--r--examples/spiceqxl.xorg.conf.example7
-rw-r--r--src/qxl.h1
-rw-r--r--src/qxl_driver.c2
-rw-r--r--src/spiceqxl_spice_server.c15
4 files changed, 25 insertions, 0 deletions
diff --git a/examples/spiceqxl.xorg.conf.example b/examples/spiceqxl.xorg.conf.example
index ec6321e..b6f4840 100644
--- a/examples/spiceqxl.xorg.conf.example
+++ b/examples/spiceqxl.xorg.conf.example
@@ -52,6 +52,13 @@ Section "Device"
# default: filter
#Option "SpiceStreamingVideo" ""
+ # Set video codecs to use. Provide a semicolon list of
+ # codecs, in preference order. Each codec requires an encoder
+ # which can be one of spice or gstreamer, and then a codec type,
+ # for instance mjpeg or vp8. The default is spice:mjpeg,
+ # which uses the builtin mjpeg encoder.
+ #Option "SpiceVideoCodecs" ""
+
# Set zlib glz wan compression. Options are auto, never, always.
# default: auto
#Option "SpiceZlibGlzWanCompression" ""
diff --git a/src/qxl.h b/src/qxl.h
index ff55604..5cc8d05 100644
--- a/src/qxl.h
+++ b/src/qxl.h
@@ -158,6 +158,7 @@ enum {
OPTION_SURFACE_BUFFER_SIZE,
OPTION_COMMAND_BUFFER_SIZE,
OPTION_SPICE_SMARTCARD_FILE,
+ OPTION_SPICE_VIDEO_CODECS,
#endif
OPTION_COUNT,
};
diff --git a/src/qxl_driver.c b/src/qxl_driver.c
index e21addd..fc1b629 100644
--- a/src/qxl_driver.c
+++ b/src/qxl_driver.c
@@ -154,6 +154,8 @@ const OptionInfoRec DefaultOptions[] =
"CommandBufferSize", OPTV_INTEGER, {DEFAULT_COMMAND_BUFFER_SIZE}, FALSE},
{ OPTION_SPICE_SMARTCARD_FILE,
"SpiceSmartcardFile", OPTV_STRING, {0}, FALSE},
+ { OPTION_SPICE_VIDEO_CODECS,
+ "SpiceVideoCodecs", OPTV_STRING, {0}, FALSE},
#endif
{ -1, NULL, OPTV_NONE, {0}, FALSE }
diff --git a/src/spiceqxl_spice_server.c b/src/spiceqxl_spice_server.c
index b2b31ff..6e8cf50 100644
--- a/src/spiceqxl_spice_server.c
+++ b/src/spiceqxl_spice_server.c
@@ -173,6 +173,9 @@ void xspice_set_spice_server_options(OptionInfoPtr options)
const char *streaming_video =
get_str_option(options, OPTION_SPICE_STREAMING_VIDEO,
"XSPICE_STREAMING_VIDEO");
+ const char *video_codecs =
+ get_str_option(options, OPTION_SPICE_VIDEO_CODECS,
+ "XSPICE_VIDEO_CODECS");
int agent_mouse =
get_bool_option(options, OPTION_SPICE_AGENT_MOUSE,
"XSPICE_AGENT_MOUSE");
@@ -294,6 +297,18 @@ void xspice_set_spice_server_options(OptionInfoPtr options)
spice_server_set_streaming_video(spice_server, streaming_video_opt);
}
+ if (video_codecs) {
+#if SPICE_SERVER_VERSION >= 0x000d02 /* 0.13.2 */
+ if (spice_server_set_video_codecs(spice_server, video_codecs)) {
+ fprintf(stderr, "spice: invalid video encoder %s\n", video_codecs);
+ exit(1);
+ }
+#else
+ fprintf(stderr, "spice: video_codecs are not available (spice >= 0.13.2 required)\n");
+ exit(1);
+#endif
+ }
+
spice_server_set_agent_mouse(spice_server, agent_mouse);
spice_server_set_playback_compression(spice_server, playback_compression);