aboutsummaryrefslogtreecommitdiffstats
path: root/common/rfb/TightEncoder.h
Commit message (Collapse)AuthorAgeFilesLines
* Mark overridden virtual functionsPierre Ossman2024-06-241-6/+6
| | | | | Use the new "override" keyword to properly differentiate between new virtual methods, and existing virtual methods being overridden.
* Use stdint typesPierre Ossman2023-02-011-3/+3
| | | | | Avoid having our own custom stuff and instead use the modern, standard types, for familiarity.
* Use templates for optimized codePierre Ossman2023-02-011-14/+6
| | | | | Avoid preprocessor magic and instead rely on templating to generate optimized functions for performance critical code.
* Don't include palette to full color methodsPierre Ossman2023-01-041-1/+1
| | | | They have no need for it, so let's simplify things.
* Move image encoding logic into a central EncodeManager classPierre Ossman2014-07-141-99/+39
| | | | | | | | This allows us to apply a lot more server logic independently of which encoder is in use. Most of this class are things moved over from the Tight encoder.
* Use PixelBuffer objects as the interface for encoders and decodersPierre Ossman2014-07-141-3/+3
| | | | | | | This avoid a lot of unnecessary middle men. This also pushes the responsibility for pixel format conversion into the encoders and decoders. The new bufferFromBuffer() is used for direct conversion, rather than PixelTransformer/TransImageGetter.
* Encoders/decoders should track the connection objectPierre Ossman2014-07-071-1/+1
| | | | | | The connection object is a much more appropriate object for the decoders and encoders to keep track of. Besides the streams, it also contains state like connection parameters.
* Push encoding specific formats into the encoders and decodersPierre Ossman2014-07-071-0/+2
| | | | Keep the generic stream classes clean and general.
* Consolidate the different palette handler implementationsPierre Ossman2014-07-071-28/+3
|
* Avoid reader/writer duplication in every encoder/decoderPierre Ossman2014-07-071-1/+0
|
* Remove partial update functionalityPierre Ossman2014-07-071-1/+1
| | | | | | Get rid of the ability of encoders to only send part of the rectangle they are given as we don't want partial updates anyway.
* Make the subsampling setting follow the common stylePierre Ossman2014-07-071-3/+4
|
* Get rid of the register mechanism for encoders and decodersPierre Ossman2014-07-071-3/+3
| | | | We have no use for it, so let's keep things simple.
* Reduce dependencies on TransImageGetter.hPierre Ossman2014-07-071-1/+2
|
* Fix regression caused by r4841. That patch assumed that JPEG encoding ↵DRC2012-02-131-4/+7
| | | | | | always uses the raw buffer, which is not true. If pixel translation is necessary, then JPEG images will sometimes be encoded from the translated (intermediate) buffer instead. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4852 3789f03b-4d11-0410-bbf8-ca57d06f2519
* The Tight encoder uses the pixel buffer as a scratch pad, which doesn'tPierre Ossman2012-01-301-7/+4
| | | | | | | | | work so well with the new optimisation to feed it the raw frame buffer. Reorganise and clean up the code to handle this, and make the raw frame buffer pointer const so that we might avoid such bugs in the future. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4841 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Put arguments in a more consistent order based on data flow, in order to ↵DRC2011-11-031-18/+21
| | | | | | improve readability git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4756 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Add support for TurboVNC pseudo-encodings and Grayscale JPEG compression so ↵DRC2011-08-191-3/+4
| | | | | | that, when a TurboVNC viewer is connected, the TigerVNC Server will behave exactly like the TurboVNC Server. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4641 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Further optimizations to the Tight encoder to eliminate getImage() overhead. ↵DRC2011-08-171-9/+80
| | | | | | The encoder now directly accesses the framebuffer for solid rectangle computation, JPEG encoding, and color counting (if pixel translation is not required.) Also moved everything in tightEncode.h into the TightEncoder class to eliminate all of the static mess (this will be important later on if we decide to multi-thread the encoder.) git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4631 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Ported encoding optimizations from TurboVNC. The changes to the Tight ↵DRC2011-08-111-8/+13
| | | | | | parameters were determined through extensive low-level profiling (see http://www.virtualgl.org/pmwiki/uploads/About/turbototiger.pdf). The other enhancements involved: (1) porting the solid subrectangle pre-computation code from TightVNC/TurboVNC (it makes a pretty big difference-- see report), (2) encapsulating the JPEG encoder in its own class (this eliminates a buffer copy, and the JPEG buffer is now set to a decent size where it shouldn't ever need to be paged or re-allocated, except in rare corner cases), (3) adding support for last rect. encoding (necessary to support the solid rectangle pre-computation enhancements. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4626 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Change JPEG quality/subsampling map to produce meaningful compression ↵DRC2009-03-121-1/+8
| | | | | | ratios, as defined by the VirtualGL project study of rendered frames from SPECviewperf 9 git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3666 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Tweak the quality to JPEG settings mapping a bit.Pierre Ossman2009-03-111-1/+1
| | | | | | | | | The percieved quality isn't really linear compared to the actual quality setting, so make it a bit more top heavy. Also disable color subsampling at some levels and make the highest quality lossless. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3660 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Fixed include path for libjpeg.h, to allow including headers from the ↵Constantin Kaplinsky2006-05-301-1/+1
| | | | | | installed version of the JPEG library. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@605 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Migrating to new directory structure adopted from the RealVNC's source tree. ↵Constantin Kaplinsky2006-05-251-0/+78
More changes will follow. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@589 3789f03b-4d11-0410-bbf8-ca57d06f2519