Move image encoding logic into a central EncodeManager class
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 decoders
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.
Limiting maximum number of palette colors in the Hextile encoder. On
very complex images, that significantly improves performance while
only slightly increases encoded data sizes.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@325 3789f03b-4d11-0410-bbf8-ca57d06f2519
Using new TightPalette helper class instead of std::map, in Hextile
encoder. This improves performance of the encoder, and provides more
space for optimizations. The palette implementation was extracted from
the Tight encoder.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@324 3789f03b-4d11-0410-bbf8-ca57d06f2519
Added boolean parameter "ImprovedHextile" which allows to use new
Hextile encoding algorithm. The old algorithm is used by default,
excluding 8-bit data on which new algorithm is used regardless of this
parameter's value.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@317 3789f03b-4d11-0410-bbf8-ca57d06f2519
Added completely rewritten implementation of the Hextile encoder. It
achieves better compression ratios, but may use more CPU on complex
images.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@313 3789f03b-4d11-0410-bbf8-ca57d06f2519