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.
Encoders/decoders should track the connection object
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.
Further optimizations to the Tight encoder to eliminate getImage() overhead. 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.)
Set the ImprovedHextile parameter to true by default, as new Hextile
encoder seems to be fast enough after recent optimizations.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@329 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