Adaptive Tight
I recently added an infrastructure allowing to know the average update frequency for a given region on the screen. Basically, I store last 10 updates times for each 64x64 regions, and only count updates times that happened in the lasts 5 seconds.
Then, I plugged this infrastructure with tight, and adaptive tight is born. The main difference with a normal tight encoding, is that all updates are lossless by default, but if a region is updated a lot, then it'll switch to jpeg encoding.
ZRLE and ZYWRLE
ZRLE and ZYRLE are now supported by QEMU ! ZRLE is a basic run length encoding compressed with zlib, so it's lossless. ZYWRLE is a little more complex, and is well described here: http://micro-vnc.jp/research/remote_desktop_ng/ZYWRLE/publications/ . ZYWRLE is a lossy encoding.
Bandwidth Charts
Here are some results comparing ZRLE, ZYWRLE, and adaptive tight, while playing the big buck bunny trailler.
ZYWRLE have very good results, but the main issue is that it's a lossy encoding, and all the screen is lossy if you use zywrle. But that won't be an issue for long with the new adaptive infrastructure :).
Bellow are some screenshots of the different encodings.
Tight
Tight 5, Tight 8, Tight NoJpeg

ZYWRLE
ZYWRLE 2, ZYWRLE 5, ZYWRLE 8

Static Images
Tight 5, ZYWRLE 5, ZYWRLE 8















