From 04579cb090b925ed49be94b16468e9caf8eb390f Mon Sep 17 00:00:00 2001 From: DRC Date: Wed, 25 Sep 2024 13:03:14 -0400 Subject: [PATCH 1/2] Viewer: Advertise Tight w/o Zlib pseudo-encoding --- ChangeLog.md | 7 +++++++ java/com/turbovnc/rfb/CMsgWriter.java | 3 ++- java/com/turbovnc/rfb/RFB.java | 6 ++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 1663e1b6e..2eb4dbb44 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -13,6 +13,13 @@ system log. 3. Fixed a regression introduced by 2.2 beta1[7] that prevented the TurboVNC Server from being used as an inetd service. +4. The "Tight Encoding Without Zlib" RFB extension, which was used unofficially +by the Lossless Tight encoding method since TurboVNC v0.5, has been officially +registered with IANA as an RFB pseudo-encoding. The TurboVNC Viewer now +advertises support for the pseudo-encoding. (The next major release of the +TurboVNC Server will forego using the extension unless the VNC viewer +advertises support for it.) + 3.1.2 ===== diff --git a/java/com/turbovnc/rfb/CMsgWriter.java b/java/com/turbovnc/rfb/CMsgWriter.java index f2bbae8f0..7ae2514f0 100644 --- a/java/com/turbovnc/rfb/CMsgWriter.java +++ b/java/com/turbovnc/rfb/CMsgWriter.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2012, 2015, 2017-2018, 2020-2023 D. R. Commander. +/* Copyright (C) 2012, 2015, 2017-2018, 2020-2024 D. R. Commander. * All Rights Reserved. * Copyright 2009-2011, 2017-2019 Pierre Ossman for Cendio AB * Copyright (C) 2011, 2015 Brian P. Hinz @@ -418,6 +418,7 @@ public synchronized void writeSetEncodings(int preferredEncoding, encodings[nEncodings++] = RFB.ENCODING_QEMU_LED_STATE; encodings[nEncodings++] = RFB.ENCODING_VMWARE_LED_STATE; } + encodings[nEncodings++] = RFB.ENCODING_TIGHT_WITHOUT_ZLIB; if (Decoder.supported(preferredEncoding)) { encodings[nEncodings++] = preferredEncoding; diff --git a/java/com/turbovnc/rfb/RFB.java b/java/com/turbovnc/rfb/RFB.java index 661cc53d7..811552875 100644 --- a/java/com/turbovnc/rfb/RFB.java +++ b/java/com/turbovnc/rfb/RFB.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2011-2012, 2015-2018, 2021-2022 D. R. Commander. - * All Rights Reserved. +/* Copyright (C) 2011-2012, 2015-2018, 2021-2022, 2024 D. R. Commander. + * All Rights Reserved. * Copyright 2009, 2011, 2019 Pierre Ossman for Cendio AB * Copyright (C) 2011-2012 Brian P. Hinz * Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved. @@ -217,6 +217,8 @@ public static String encodingName(int num) { public static final int ENCODING_FINE_QUALITY_LEVEL_0 = -512; public static final int ENCODING_FINE_QUALITY_LEVEL_100 = -412; + public static final int ENCODING_TIGHT_WITHOUT_ZLIB = -317; + public static final int ENCODING_CONTINUOUS_UPDATES = -313; public static final int ENCODING_FENCE = -312; From 06c6c2c5b89074fbd2af30279c6593e2b70f4cb5 Mon Sep 17 00:00:00 2001 From: DRC Date: Wed, 25 Sep 2024 15:03:57 -0400 Subject: [PATCH 2/2] Doc: Minor wordsmithing --- doc/index.html | 4 ++-- doc/performance.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/index.html b/doc/index.html index ef333919d..184d418b1 100644 --- a/doc/index.html +++ b/doc/index.html @@ -3,7 +3,7 @@ - + User’s Guide for TurboVNC 3.1.3 @@ -1291,7 +1291,7 @@

7 Performance and Image Quality

30 4x 7 - For subrectangles that have a high number of unique colors, this encoding method produces very noticeable image compression artifacts. However, it performs optimally on low-bandwidth connections. If image quality is more critical than performance, then use one of the other encoding methods or take advantage of the Lossless Refresh feature. In addition to reducing the JPEG quality to a “minimum usable” level, this encoding method also enables interframe comparison and Compression Level 2. (CL 7 = CL 2 + interframe comparison.) Compression Level 2 can reduce bandwidth for low-color application workloads that are not good candidates for JPEG compression. + For subrectangles that have a high number of unique colors, this encoding method produces very noticeable image compression artifacts. However, it performs optimally on low-bandwidth connections. If image quality is more critical than performance, then use one of the other encoding methods or take advantage of the Lossless Refresh feature. In addition to reducing the JPEG quality to a “minimum usable” level, this encoding method also enables interframe comparison and Compression Level 2. (CL 7 = CL 2 + interframe comparison.) Compression Level 2 can reduce network usage for low-color application workloads that are not good candidates for JPEG compression. “Lossless Tight” diff --git a/doc/performance.txt b/doc/performance.txt index 2841a01dd..fc8904fa1 100644 --- a/doc/performance.txt +++ b/doc/performance.txt @@ -84,7 +84,7 @@ the most useful combinations of the image compression options described above: take advantage of the [[#LR][Lossless Refresh feature]]. In addition to \ reducing the JPEG quality to a "minimum usable" level, this encoding method \ also enables interframe comparison and Compression Level 2. (CL 7 = CL 2 + \ - interframe comparison.) Compression Level 2 can reduce bandwidth for \ + interframe comparison.) Compression Level 2 can reduce network usage for \ low-color application workloads that are not good candidates for JPEG \ compression. | | "Lossless Tight" | No | N/A | N/A | 0 | \