All of lore.kernel.org
 help / color / mirror / Atom feed
From: Corentin Chary <corentincj@iksaif.net>
To: qemu-devel@nongnu.org
Cc: Corentin Chary <corentincj@iksaif.net>,
	Anthony Liguori <aliguori@linux.vnet.ibm.com>,
	Alexander Graf <agraf@suse.de>
Subject: [Qemu-devel] [PATCH v2 03/18] vnc: add lossy option
Date: Wed,  7 Jul 2010 20:57:51 +0200	[thread overview]
Message-ID: <1278529086-10391-4-git-send-email-corentincj@iksaif.net> (raw)
In-Reply-To: <1278529086-10391-1-git-send-email-corentincj@iksaif.net>

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>
---
 qemu-options.hx      |    7 +++++++
 vnc-encoding-tight.c |    4 ++++
 vnc.c                |    2 ++
 vnc.h                |    2 ++
 4 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/qemu-options.hx b/qemu-options.hx
index d1d2272..2fad881 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -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
 
diff --git a/vnc-encoding-tight.c b/vnc-encoding-tight.c
index 5b69ff0..c1a292b 100644
--- a/vnc-encoding-tight.c
+++ b/vnc-encoding-tight.c
@@ -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) {
diff --git a/vnc.c b/vnc.c
index 9cf38d1..ccd7aad 100644
--- a/vnc.c
+++ b/vnc.c
@@ -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;
         }
     }
 
diff --git a/vnc.h b/vnc.h
index 2a9024d..ec90cd3 100644
--- a/vnc.h
+++ b/vnc.h
@@ -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;
-- 
1.7.1

  parent reply	other threads:[~2010-07-07 18:57 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-07 18:57 [Qemu-devel] [PATCH v2 00/18] [PATCH v2 00/18] VNC Updates for 0.13 Corentin Chary
2010-07-07 18:57 ` [Qemu-devel] [PATCH v2 01/18] vnc: tight: add JPEG and gradient subencoding with smooth image detection Corentin Chary
2010-07-07 18:57 ` [Qemu-devel] [PATCH v2 02/18] vnc: JPEG should be disabled if the client don't set tight quality Corentin Chary
2010-07-07 18:57 ` Corentin Chary [this message]
2010-07-07 18:57 ` [Qemu-devel] [PATCH v2 04/18] ui: move all ui components in ui/ Corentin Chary
2010-07-07 18:57 ` [Qemu-devel] [PATCH v2 05/18] vnc: rename vnc-encoding-* vnc-enc-* Corentin Chary
2010-07-07 18:57 ` [Qemu-devel] [PATCH v2 06/18] vnc: tight: don't forget do at the last color Corentin Chary
2010-07-07 18:57 ` [Qemu-devel] [PATCH v2 07/18] vnc: tight: remove a memleak in send_jpeg_rect() Corentin Chary
2010-07-07 18:57 ` [Qemu-devel] [PATCH v2 08/18] vnc: tight add PNG encoding Corentin Chary
2010-07-08  9:48   ` Daniel P. Berrange
2010-07-08 13:10     ` Corentin Chary
2010-07-08 13:19       ` Daniel P. Berrange
2010-07-08 13:35         ` Corentin Chary
2010-07-08 13:37           ` Corentin Chary
2010-07-07 18:57 ` [Qemu-devel] [PATCH v2 09/18] vnc: tight: specific zlib level and filters for each compression level Corentin Chary
2010-07-07 18:57 ` [Qemu-devel] [PATCH v2 10/18] vnc: tight: stop using qdict for palette stuff Corentin Chary
2010-07-07 18:57 ` [Qemu-devel] [PATCH v2 11/18] vnc: encapsulate encoding members Corentin Chary
2010-07-07 18:58 ` [Qemu-devel] [PATCH v2 12/18] vnc: fix tight png memory leak Corentin Chary
2010-07-07 18:58 ` [Qemu-devel] [PATCH v2 13/18] qemu-thread: add qemu_mutex/cond_destroy and qemu_mutex_exit Corentin Chary
2010-07-07 18:58 ` [Qemu-devel] [PATCH v2 14/18] vnc: threaded VNC server Corentin Chary
2010-07-07 18:58 ` [Qemu-devel] [PATCH v2 15/18] vnc: add missing lock for vnc_cursor_define() Corentin Chary
2010-07-07 18:58 ` [Qemu-devel] [PATCH v2 16/18] vnc: tight: fix rgb_prepare_row Corentin Chary
2010-07-07 18:58 ` [Qemu-devel] [PATCH v2 17/18] vnc: tight: split send_sub_rect Corentin Chary
2010-07-07 18:58 ` [Qemu-devel] [PATCH v2 18/18] vnc: better default values for VNC options Corentin Chary
2010-07-13 17:47 ` [Qemu-devel] [PATCH v2 00/18] [PATCH v2 00/18] VNC Updates for 0.13 Rick Vernam
2010-07-15 13:48   ` Corentin Chary

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1278529086-10391-4-git-send-email-corentincj@iksaif.net \
    --to=corentincj@iksaif.net \
    --cc=agraf@suse.de \
    --cc=aliguori@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.