Version 1 (modified by 8 years ago) (diff) | ,
---|
Packet Encoding and Compression
Bencode vs Rencode
Each packet exchanged between the client and server is encoded using one of those two stream encoders:
- The old bencode mode (see Bencode on wikipedia): a modified bencoder which supports non string keys in dictionaries, and support for unicode
- The newer/faster rencode mode, based on this version with minor tweaks/fixes
This allows various languages to implement the xpra protocol, specifying which encoder they want to use (bencode is more widely available than rencode).
Pixels and Icons
Note: all window pixels, icons and cursors are sent using dedicated picture encodings and bypass the stream encoder completely (for speed).
Compression
The compression level can be specified via the command line ("-z LEVEL
" or "--compress=LEVEL
").
Here is what the LEVEL
does:
0
means no compression at all and is useful when bandwidth is no issue but latency is1
is the best trade-off and will compress everything but without making too much of an effort- values of 2 and above increase the compression (CPU usage and latency will increase) and should rarely be needed
lz4 vs zcompress ==
As of version 0.11.0
, xpra supports lz4 compression and will use it instead of the default zlib when LEVEL
is set to 1 and both ends support the compression mode.