summaryrefslogtreecommitdiffstats
path: root/rfb
diff options
context:
space:
mode:
authorDRC <[email protected]>2017-11-06 17:25:41 -0600
committerDRC <[email protected]>2018-01-22 16:49:11 -0600
commitd7b14624cbb9ed7b9df3532658e1edba8da606a6 (patch)
tree8f741c88d3d1b49d091f36238e57c84b574421b2 /rfb
parent6814e946e0afed20a6ef0f45a9bcbfeda2e77706 (diff)
downloadlibtdevnc-d7b14624cbb9ed7b9df3532658e1edba8da606a6.tar.gz
libtdevnc-d7b14624cbb9ed7b9df3532658e1edba8da606a6.zip
Include Tight decoding optimizations from TurboVNC
- As with the encoder, the decoder now uses the TurboJPEG wrapper, which allows it to decode JPEG images directly into the framebuffer. This eliminates a buffer copy (CopyRectangle()) as well as the expensive RGB pixel conversion in DecompressJpegRectBPP(). The TurboJPEG wrapper performs RGB pixel conversion more optimally, and only when necessary (it uses the libjpeg-turbo colorspace extensions when available, in order to avoid RGB conversion.) - The other Tight subencoding types are also now decoded directly into the framebuffer, which eliminates buffer copies. - The Tight decoder now supports the rfbTightNoZlib extension, which allows the server to bypass zlib compression when Compression Level 0 is selected. The encoder already supports this extension. Passing the data stream through zlib when Compression Level 0 is selected needlessly wastes CPU time, since all zlib is doing is copying the data internally into its own structures.
Diffstat (limited to 'rfb')
-rw-r--r--rfb/rfbclient.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/rfb/rfbclient.h b/rfb/rfbclient.h
index 72d672a..ec6ee55 100644
--- a/rfb/rfbclient.h
+++ b/rfb/rfbclient.h
@@ -7,6 +7,7 @@
*/
/*
+ * Copyright (C) 2017 D. R. Commander. All Rights Reserved.
* Copyright (C) 2000, 2001 Const Kaplinsky. All Rights Reserved.
* Copyright (C) 2000 Tridia Corporation. All Rights Reserved.
* Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.
@@ -51,6 +52,7 @@
#endif
#include <rfb/rfbproto.h>
#include <rfb/keysym.h>
+#include "turbojpeg.h"
#ifdef LIBVNCSERVER_HAVE_SASL
#include <sasl/sasl.h>
@@ -295,7 +297,7 @@ typedef struct _rfbClient {
uint8_t tightPrevRow[2048*3*sizeof(uint16_t)];
#ifdef LIBVNCSERVER_HAVE_LIBJPEG
- /** JPEG decoder state. */
+ /** JPEG decoder state (obsolete-- do not use). */
rfbBool jpegError;
struct jpeg_source_mgr* jpegSrcManager;
@@ -422,6 +424,14 @@ typedef struct _rfbClient {
GetUserProc GetUser;
#endif /* LIBVNCSERVER_HAVE_SASL */
+
+#ifdef LIBVNCSERVER_HAVE_LIBZ
+#ifdef LIBVNCSERVER_HAVE_LIBJPEG
+ /** JPEG decoder state. */
+ tjhandle tjhnd;
+
+#endif
+#endif
} rfbClient;
/* cursor.c */