summaryrefslogtreecommitdiffstats
path: root/ui/spice-core.c
diff options
context:
space:
mode:
authorManuel Bentele2022-09-30 15:55:56 +0200
committerManuel Bentele2022-12-06 11:55:47 +0100
commita6712b19b1729110f7e06146c4f7bc1aa8263145 (patch)
tree60ea7703bd9e55ad592d06f6ae4453070430d229 /ui/spice-core.c
parentRevert "hw/loongarch/virt: Add cfi01 pflash device" (diff)
downloadqemu-a6712b19b1729110f7e06146c4f7bc1aa8263145.tar.gz
qemu-a6712b19b1729110f7e06146c4f7bc1aa8263145.tar.xz
qemu-a6712b19b1729110f7e06146c4f7bc1aa8263145.zip
spice: Add option to set preference order for video codecsspice_video_codecs
This patch adds the following SPICE related option to set the preference order for video codecs used for video streaming: video-codecs=[auto|<encoder>:<codec>[;<encoder2>:<codec2>]] The option accepts a semicolon separated list of encoder/codec pairs to try, in preference order, where the option value 'auto' selects the default preference order. Default preference order is 'spice:mjpeg'.
Diffstat (limited to 'ui/spice-core.c')
-rw-r--r--ui/spice-core.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/ui/spice-core.c b/ui/spice-core.c
index c3ac20ad43..49fdcdf7e1 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -470,6 +470,11 @@ static QemuOptsList qemu_spice_opts = {
},{
.name = "streaming-video",
.type = QEMU_OPT_STRING,
+#ifdef SPICE_HAS_VIDEO_CODECS
+ },{
+ .name = "video-codecs",
+ .type = QEMU_OPT_STRING,
+#endif
},{
.name = "agent-mouse",
.type = QEMU_OPT_BOOL,
@@ -507,6 +512,9 @@ static SpiceInfo *qmp_query_spice_real(Error **errp)
unsigned int major;
unsigned int minor;
unsigned int micro;
+#ifdef SPICE_HAS_VIDEO_CODECS
+ const char *video_codecs;
+#endif
info = g_malloc0(sizeof(*info));
@@ -543,6 +551,14 @@ static SpiceInfo *qmp_query_spice_real(Error **errp)
info->tls_port = tls_port;
}
+#ifdef SPICE_HAS_VIDEO_CODECS
+ info->has_video_codecs = true;
+ video_codecs = spice_server_get_video_codecs(spice_server);
+ info->video_codecs = g_strdup(video_codecs);
+#else
+ info->has_video_codecs = false;
+#endif
+
info->mouse_mode = spice_server_is_server_mouse(spice_server) ?
SPICE_QUERY_MOUSE_MODE_SERVER :
SPICE_QUERY_MOUSE_MODE_CLIENT;
@@ -800,6 +816,16 @@ static void qemu_spice_init(void)
spice_server_set_streaming_video(spice_server, SPICE_STREAM_VIDEO_OFF);
}
+#ifdef SPICE_HAS_VIDEO_CODECS
+ str = qemu_opt_get(opts, "video-codecs");
+ if (str) {
+ if (spice_server_set_video_codecs(spice_server, str)) {
+ error_report("Invalid SPICE video codecs");
+ exit(1);
+ }
+ }
+#endif
+
spice_server_set_agent_mouse
(spice_server, qemu_opt_get_bool(opts, "agent-mouse", 1));
spice_server_set_playback_compression