[Spice-devel] [spice-common PATCH v4] Add LZ4 data compression and used it in spicevmc channel
Christophe Fergeau
cfergeau at redhat.com
Tue May 10 11:25:15 UTC 2016
Have you measured how much of a gain lz4 compression gives for some use
cases?
Christophe
On Thu, May 05, 2016 at 02:43:32PM +0300, Snir Sheriber wrote:
> Compressed message type is CompressedData which contains compression
> type (1 byte) followed by the uncompressed data size (4 bytes) followed
> by the compressed data size (4 bytes) followed by the compressed data
> ---
> common/client_marshallers.h | 1 +
> common/messages.h | 7 +++++++
> spice.proto | 15 +++++++++++++++
> 3 files changed, 23 insertions(+)
>
> diff --git a/common/client_marshallers.h b/common/client_marshallers.h
> index 728987e..2074323 100644
> --- a/common/client_marshallers.h
> +++ b/common/client_marshallers.h
> @@ -33,6 +33,7 @@ SPICE_BEGIN_DECLS
> typedef struct {
> void (*msg_SpiceMsgEmpty)(SpiceMarshaller *m, SpiceMsgEmpty *msg);
> void (*msg_SpiceMsgData)(SpiceMarshaller *m, SpiceMsgData *msg);
> + void (*msg_SpiceMsgCompressedData)(SpiceMarshaller *m, SpiceMsgCompressedData *msg);
> void (*msgc_ack_sync)(SpiceMarshaller *m, SpiceMsgcAckSync *msg);
> void (*msgc_pong)(SpiceMarshaller *m, SpiceMsgPing *msg);
> void (*msgc_disconnecting)(SpiceMarshaller *m, SpiceMsgDisconnect *msg);
> diff --git a/common/messages.h b/common/messages.h
> index f537950..d001850 100644
> --- a/common/messages.h
> +++ b/common/messages.h
> @@ -55,6 +55,13 @@ typedef struct SpiceMsgData {
> uint8_t data[0];
> } SpiceMsgData;
>
> +typedef struct SpiceMsgCompressedData {
> + uint8_t type;
> + uint32_t uncompressed_size;
> + uint32_t compressed_size;
> + uint8_t compressed_data[0];
> +} SpiceMsgCompressedData;
> +
> typedef struct SpiceMsgEmpty {
> uint8_t padding;
> } SpiceMsgEmpty;
> diff --git a/spice.proto b/spice.proto
> index 4a0778d..ea29fb0 100644
> --- a/spice.proto
> +++ b/spice.proto
> @@ -120,6 +120,19 @@ message Data {
> uint8 data[] @end @ctype(uint8_t);
> } @nocopy;
>
> +enum8 data_compression_type {
> + NONE,
> + LZ4,
> + INVALID,
> +};
> +
> +message CompressedData {
> + data_compression_type type;
> + uint32 uncompressed_size;
> + uint32 compressed_size;
> + uint8 compressed_data[] @end;
> +} @ctype(SpiceMsgCompressedData);
> +
> struct ChannelWait {
> uint8 channel_type;
> uint8 channel_id;
> @@ -1373,8 +1386,10 @@ channel SmartcardChannel : BaseChannel {
> channel SpicevmcChannel : BaseChannel {
> server:
> Data data = 101;
> + CompressedData compressed_data = 102;
> client:
> Data data = 101;
> + CompressedData compressed_data = 102;
> };
>
> channel UsbredirChannel : SpicevmcChannel {
> --
> 2.5.5
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20160510/941c8d77/attachment.sig>
More information about the Spice-devel
mailing list