vnc: add lossy option

The lossy option can be used to enable lossy compression
methods like gradient or jpeg. This patch disable them by
default.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Corentin Chary 2010-07-07 20:57:51 +02:00 committed by Anthony Liguori
parent 2f24e2ed11
commit 6f9c78c149
4 changed files with 15 additions and 0 deletions

View File

@ -835,6 +835,13 @@ empty, with a @code{deny} policy. Thus no one will be allowed to
use the VNC server until the ACLs have been loaded. This can be
achieved using the @code{acl} monitor command.
@item lossy
Enable lossy compression methods (gradient, JPEG, ...). If this
option is set, VNC client may receive lossy framebuffer updates
depending on its encoding settings. Enabling this option can save
a lot of bandwidth at the expense of quality.
@end table
ETEXI

View File

@ -228,6 +228,10 @@ tight_detect_smooth_image(VncState *vs, int w, int h)
int compression = vs->tight_compression;
int quality = vs->tight_quality;
if (!vs->vd->lossy) {
return 0;
}
if (ds_get_bytes_per_pixel(vs->ds) == 1 ||
vs->clientds.pf.bytes_per_pixel == 1 ||
w < VNC_TIGHT_DETECT_MIN_WIDTH || h < VNC_TIGHT_DETECT_MIN_HEIGHT) {

2
vnc.c
View File

@ -2482,6 +2482,8 @@ int vnc_display_open(DisplayState *ds, const char *display)
#endif
} else if (strncmp(options, "acl", 3) == 0) {
acl = 1;
} else if (strncmp(options, "lossy", 5) == 0) {
vs->lossy = true;
}
}

2
vnc.h
View File

@ -33,6 +33,7 @@
#include "monitor.h"
#include "audio/audio.h"
#include <zlib.h>
#include <stdbool.h>
#include "keymaps.h"
@ -111,6 +112,7 @@ struct VncDisplay
char *display;
char *password;
int auth;
bool lossy;
#ifdef CONFIG_VNC_TLS
int subauth; /* Used by VeNCrypt */
VncDisplayTLS tls;