[Spice-devel] [RFC] Allow guest-video codec hot-swap
Kevin Pouget
kpouget at redhat.com
Wed Jul 31 08:36:32 UTC 2019
Hello,
this is the first version of the patch series that allows hot-swapping
the codec used for guest video streaming.
* in spice-server, the behavior is similar to what I did for host-side
video streaming: when the user (through the client) or the admin
(through the QMP interface) changes the codec list, the guest
streams are reset. SPICE will automatically restart them, picking up
the new most suitable codec.
* it is on purpose that I didn't implement any check (eg, check
that the preferred codec actually changed) before triggering the
stream restart. The streaming-agent also tries to compute the
most suitable codec for all its clients, so I think we should
have another discussion to settle where/when the codec choices
should be done.
* in spice-streaming-agent, I had to 1) update the main loop to
perform a full restart, instead of only stop sending frame on
start/stop requests; 2) update the GST plugin to allow multiple
plugin instances to registered, one for each codec (listed in the
command-line).
* in spice-gtk, I had to update a bit the code, to ensure that the
drawing area used by the native MJPEG renderer is visible when we
swap the codec, otherwise the GST area always remained on top and
the MJPEG video was not visible on screen. This part is really RFC,
if someone knows a better place for this line, feel free!
please, let me know if you have any comments!
best regards,
Kevin
---
# spice-server
Kevin Pouget (1):
streaming: Restart guest video streams on video-codec changes
server/dcc.c | 4 +++-
server/display-channel.c | 2 +-
server/red-stream-device.c | 15 +++++++++++++++
server/red-stream-device.h | 1 +
server/reds.c | 11 +++++++++++
server/reds.h | 1 +
server/stream-channel.c | 34 ++++++++++++++++++++++++++++++----
server/video-stream.c | 8 ++++++++
server/video-stream.h | 1 +
9 files changed, 71 insertions(+), 6 deletions(-)
# spice-streaming-agent
Kevin Pouget (2):
gst-plugin: allow the instantiation of multiple GST encoder plugins
spice-streaming-agent: fully reset the capture loop on start/stop
requests
src/gst-plugin.cpp | 50 ++++++++++++++++++++++-------------
src/spice-streaming-agent.cpp | 9 +++++--
2 files changed, 38 insertions(+), 21 deletions(-)
# spice-gtk
Kevin Pouget (1):
spice-widget: make draw-area visible on update_image
src/spice-widget.c | 2 ++
1 file changed, 2 insertions(+)
--
2.21.0
More information about the Spice-devel
mailing list