This series of patches introduce a new DisplayChannel (in the protocol terminology) and a new guest device implementation which allows the guest to send streamed data to clients. This will allow GPU passthrough card to stream data using a new "stream" guest agent. This guest agent is required as the host as no control (beside specific cases) to the guest card. This implementation has the advantage that it does not require any client change (during some testing lot of warnings are thrown by the client but these can be easily removed). This series require the addition of some protocol declaration which can be found at https://cgit.freedesktop.org/~fziglio/spice-protocol/log/?h=stream. To have a go and try how does it work I wrote a small test program you can find at https://cgit.freedesktop.org/~fziglio/stream_send. It requires currently a stream file encoded as H264 to be sent. To add the required device to the VM I add these lines to libvirt configuration: <channel type='spiceport'> <source channel='com.redhat.stream.0'/> <target type='virtio' name='com.redhat.stream.0'/> </channel> This configuration, beside the device name, is similar to folder sharing setting (see https://www.spice-space.org/docs/manual/manual.chunked/ar01s10.html) Due to some limitation the VM should have another single QXL device as video device. This as currently the new DisplayChannel id is fixed as 1. Any bandwidth control is missing, there are not even any protocol declaration for this. It's planned that the guest should informed if it's using too much bandwidth so can tune it's settings (frame rate/quality) to allows to support low bandwidth/low latency connection better. Frediano Ziglio (16): OT: small optimization OT: style char-device: Allows to handle port events from any char device stream-device: Add device to handle streaming stream-device: Start parsing new protocol from guest - TODO 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: Implements initialization 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 server/Makefile.am | 3 +- server/char-device.c | 31 +- server/char-device.h | 10 +- server/red-channel.c | 3 +- server/reds.c | 8 +- server/spicevmc.c | 10 +- server/stream-channel.c | 522 +++++++++++++++++++++++++++++++++++++++++- server/stream-channel.h | 69 +++++- server/stream-device.c | 276 ++++++++++++++++++++++- 9 files changed, 913 insertions(+), 19 deletions(-) create mode 100644 server/stream-channel.c create mode 100644 server/stream-channel.h create mode 100644 server/stream-device.c base-commit: fe1b819a970d582aaaacbcc4e6702e40305b5eaa -- git-series 0.9.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel