[Spice-devel] [RFC PATCH spice-server v4 00/22] Allows guests to send display data as video streams
Frediano Ziglio
fziglio at redhat.com
Fri Aug 25 09:53:47 UTC 2017
This patcheset add a device to allow guest machines with assigned
hardware devices to send encoded video and other informations that
will be handled as a normal display by Spice.
New GPU devices are capable to capture and encode video in an
efficient way. As the GPU in this case is assigned to the guest
and not the host is easier if the guest do the hard job.
This patchset add a new "com.redhat.stream.0" device visible to
the guests. This device will be used by the guest to send streaming
data. The host will forward the data to the client.
To do so a new StreamChannel class, implementing the protocol
DisplayChannel is implemented.
Changes since git publish v3:
- dynamically allocate channels. This solve the fixed ID
problem and make easier in the future to implement
multiple monitors. This required 2 additional patches,
one to find next free ID and another that send new
channel information to the client;
- fixed some typos;
- renamed "channel" field to "stream_channel" to avoid
confusing them;
- updated commit messages.
Changes since git publish v2:
- define PRIMARY_SURFACE_ID mnemonic to make code more readable;
- renamed ask_new_stream to request_new_stream;
- miscellaneous comment updates;
- use NUM_STREAMS instead of fixed 40 value;
- pass time to StreamChannel sending data;
- add finalize method to free memory;
- add support for cursor move.
Frediano Ziglio (22):
Avoid to use global variable for channel IDs
Notify client of the creation of new channels dynamically
stream-device: Add device to handle streaming
stream-device: Start parsing new protocol from guest
stream-channel: Write a really base channel to implement the streaming
stream-channel: Start implementing DisplayChannel properly
stream-device: Create channel for stream device
stream-channel: Initialize blank display on client connection
stream-device: Handle streaming data from device to channel
stream-channel: Allows not fixed size
stream-channel: Allows to register callback to get new stream request
stream-channel: Support client connection/disconnection
stream-channel: Do not show an empty blank screen on start
char-device: Do not stop and clear interface on reset
stream-device: Start supporting resetting device when close/open on
guest
stream-device: Create channel when needed
stream-device: Limit sending queue from guest to server
stream-channel: Activate streaming report from client
cursor-channel: Allow to not handle a QXL device
WIP stream-device: handle cursor from device
WIP: Try to reduce delay
stream-device: Implement mouse movement
server/Makefile.am | 3 +
server/char-device.c | 2 -
server/char-device.h | 1 +
server/cursor-channel.c | 8 +-
server/cursor-channel.h | 4 +-
server/main-channel-client.c | 50 ++++
server/main-channel-client.h | 3 +
server/main-channel.c | 6 +
server/main-channel.h | 3 +
server/red-worker.c | 2 +-
server/reds.c | 44 +++-
server/reds.h | 1 +
server/spicevmc.c | 10 +-
server/stream-channel.c | 573 +++++++++++++++++++++++++++++++++++++++++++
server/stream-channel.h | 82 +++++++
server/stream-device.c | 524 +++++++++++++++++++++++++++++++++++++++
16 files changed, 1305 insertions(+), 11 deletions(-)
create mode 100644 server/stream-channel.c
create mode 100644 server/stream-channel.h
create mode 100644 server/stream-device.c
--
2.13.5
More information about the Spice-devel
mailing list