diff options
author | Manuel Bentele | 2022-09-30 15:55:56 +0200 |
---|---|---|
committer | Manuel Bentele | 2022-12-06 11:55:47 +0100 |
commit | a6712b19b1729110f7e06146c4f7bc1aa8263145 (patch) | |
tree | 60ea7703bd9e55ad592d06f6ae4453070430d229 /ui/spice-core.c | |
parent | Revert "hw/loongarch/virt: Add cfi01 pflash device" (diff) | |
download | qemu-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.c | 26 |
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 |