Commit Graph

74 Commits

Author SHA1 Message Date
Vic Lee
ba784fde67 libfreerdp-codec/mppc: fix memory leak. 2012-06-28 15:26:05 +08:00
Marc-André Moreau
ae6f331570 Merge branch 'master' of github.com:FreeRDP/FreeRDP into winpr 2012-05-25 18:45:12 -04:00
Dorian Johnson
a91eca4480 libfreerdp-codec: fix off-by-one memory corruption in ico parser 2012-05-23 16:18:39 -05:00
Marc-André Moreau
d3dc1c780d wfreerdp: fix compilation 2012-05-21 16:01:24 -04:00
Marc-André Moreau
73bdd6b95c Merge pull request #599 from dorianj/coloriconfix
libfreerdp-codec: improve freerdp_icon_convert ICO reader
2012-05-20 11:57:53 -07:00
Dorian Johnson
2d3774e407 libfreerdp-codec: improve freerdp_icon_convert ICO reader
freerdp_icon_convert reads ICO data, which is used by RAIL for
window and notify icons. The old implementation incorrectly iterpreted
the green channel, flipped the alpha channel, and ignored alpha padding.

This implementation is much more robust and correctly handles the alpha
channel, even for non-powers-of-two image widths.

Fixes #578.
2012-05-18 12:43:51 -05:00
Aurimas Fišeras
64ad250f2d fix more color conversion problems for 16-bit displays
based on d588e30a
2012-05-17 21:55:51 +03:00
Julien Ropé
b2177dc8c3 Replacing malloc calls by xmalloc or xzalloc as appropriate.
This will make sure we get an appropriate error message in case of memory allocation error, and not just a "Segmentation Fault"

Added some validation on xzalloc return in serial_tty_new to properly deallocate resources when an error occurs.
2012-05-07 15:27:13 +02:00
Anthony Tong
a1551d0dc9 cmake: fix x86 & -DWITH_SSE2=ON build
issue #536
2012-04-22 08:45:28 -05:00
Bernhard Miklautz
1d32894775 Changed some functions from inline to static inline
This fixes inline build issues with clang.
http://clang.llvm.org/compatibility.html#inline
2012-04-04 15:23:16 +02:00
Jay Sorg
6aa7eaf627 mppc: moved to libfreerdp-codec 2012-03-29 20:57:26 -07:00
Marc-André Moreau
02cc7665fe wfreerdp: fix compilation warnings 2012-03-23 18:26:03 -04:00
Vic Lee
66d3799f5e nsc: add SSE2 optimization for nsc encoder. 2012-03-18 23:25:07 +08:00
Vic Lee
15baa1bbb4 nsc: implement nsc encoder. 2012-03-18 16:34:39 +08:00
Vic Lee
774cb53e61 nsc: add encoder API. 2012-03-16 12:04:38 +08:00
Vic Lee
32d7afc7b7 nsc: add pixel format API. 2012-03-15 16:55:29 +08:00
Vic Lee
b74d324592 rfx: rename pixel format constants. 2012-03-13 19:02:19 +08:00
Vic Lee
4ecb7546f8 nsc: use memcpy instead of loop. 2012-03-07 11:42:37 +08:00
Vic Lee
7d8a2bfaef nsc: allocate extra 16 bytes for output buffer in case of alignment. 2012-03-07 11:31:10 +08:00
Vic Lee
28b203e57f nsc: add profiler. 2012-03-06 22:42:57 +08:00
Vic Lee
20de74d811 nsc: refactor nsc decoder #4
o move private struct to nsc_types.h
o move nsc_decode() function in nsc_context as pointer
2012-03-06 22:41:16 +08:00
Vic Lee
d2153e9ef2 nsc: refactor nsc decoder #3
o combine colorloss recovery, chroma supersampling and color space conversion
  in one step
o define private struct and hide the internal buffer
o make internal buffer reusable in the same session
2012-03-06 18:52:28 +08:00
Vic Lee
0c0dd5df10 nsc: refactor nsc decoder #2
o Change nsc_stream member to be static
o Rename some variables
o Planes member (originally pdata) does not need to be STREAM
2012-03-05 18:34:29 +08:00
Vic Lee
3fa2c4830e nsc: refactor nsc decoder #1
o the decoded argb buffer can be reused to enhance performance
o pass width, height and bpp through nsc_process_message() call
o rename nsc_context_destroy to nsc_context_free and make it actually free the context
2012-03-05 17:32:14 +08:00
Michael Osborne
d588e30a38 correct colors for 16-bit displays 2012-03-02 16:49:52 -06:00
Philippe Auphelle
bfe6743629 Restore not-in-place bitmap flip (saves one memcpy() per flipped scanline) 2012-02-28 17:08:14 +01:00
Philippe Auphelle
6040f10ca9 Merge remote-tracking branch 'upstream/master' 2012-02-07 15:03:48 +01:00
Marc-André Moreau
66cd849229 xfreerdp-server: improve XShm encoding 2012-02-04 18:18:46 -05:00
Philippe Auphelle
68afff5faa Merge remote-tracking branch 'upstream/master' 2012-02-03 14:44:10 +01:00
Marc-André Moreau
b4e542ba46 libfreerdp-core: fix multiple memory leaks detected by valgrind 2012-02-01 18:42:20 -05:00
Philippe Auphelle
7267eafe0f Merge remote-tracking branch 'upstream/master' 2012-01-26 10:57:18 +01:00
Philippe Auphelle
37eb0717fa Merge remote-tracking branch 'upstream/master' 2012-01-25 13:55:55 +01:00
cool
d344a7e456 nscodec final color bug fix 2012-01-24 21:06:48 -11:00
Bernhard Miklautz
e9f1de751b build: Added option WITH_NEON
Enables neon optimized rfx decoder
2012-01-24 09:04:02 +01:00
Philippe Auphelle
50b0b74bc4 Merge remote-tracking branch 'upstream/master' 2012-01-17 13:01:38 +01:00
Marc-André Moreau
949bce4d54 wfreerdp: fix warnings and color conversion 2012-01-16 11:40:18 -05:00
Philippe Auphelle
7671f4a15b Merge remote-tracking branch 'upstream/master' 2012-01-11 16:45:51 +01:00
Marc-André Moreau
c7cc745575 libfreerdp-codec: add freerdp_convert_color_var() 2012-01-09 18:45:36 -05:00
louyihua
7b30f732f2 libfreerdp-codec: RDVH may return more than one channels in TS_RFX_CHANNELS message. 2012-01-10 05:18:31 +08:00
Marc-André Moreau
26cd7bc476 libfreerdp-core: add support for raw planes in RDP6 bitmap decompression 2012-01-04 19:55:31 -05:00
Philippe Auphelle
9007a3aacf Merge remote-tracking branch 'upstream/master' 2012-01-04 17:44:44 +01:00
Marc-André Moreau
9dff0cd7f5 libfreerdp-core: clarification of bitmap decompression 2012-01-03 18:22:42 -05:00
cool
8908aab34b fix complete 2012-01-01 16:07:58 -11:00
cool
ca79a7dcb2 fixed color bug 2012-01-01 16:03:27 -11:00
Marc-André Moreau
e95dcc4c5e libfreerdp-core: fix decompression of color brushes 2011-12-30 14:23:47 -05:00
Marc-André Moreau
2d34a62ce8 libfreerdp-codec: fix color conversion issues for OpaqueRect with --gdi sw,hw 2011-12-30 10:00:03 -05:00
Norbert Federa
d3a801db6c codec: RemoteFX YCbCr/RGB conversion optimization
Replaced the non-accelerated rgb to ycbcr encoder (rfx_encode.c) to use 32-bit
integer multiplication with shifted factors: 2 times faster

The accelerated SSE2 rgb to ycbcr encoder (rfx_sse2.c) was completely changed
and simplified in order to make use of the SSE2 signed 16-bit integer
multiplication: 2 times faster

Also modified the non-accelerated ycbcr to rgb decoder (rfx_encode.c) to use
32-bit integer multiplications with shifted factors instead of floating point
multiplications: 3 times faster
2011-12-29 18:01:20 +01:00
Norbert Federa
04518f0b42 codec: fixed and accelerated RemoteFX ycbcr-to-rgb decoder
The current ycbcr decoder was loosing some bits because cr/cb was multiplied by
the shifted factors.
Instead one should multiply by the non-shifted factors and shift the result.
The effects of these lost bits are easily seen by comparing the colors of a
RemoteFX session with the colors of a plain RDP session - they are just wrong ;)

I've replaced the bit-magic from the non non-accelerated version (rfx_decode.c)
and replaced it with simple float multiplications using the compiler's implicit
integer conversions. On several test machines this was even a little bit faster.

The accelerated SSE2 ycbcr decoder (rfx_sse2.c) was completely changed in order
to make use of the SSE2 signed 16-bit integer multiplication.
Fortunately the factors in the conversion matrix are so small that we can
easily shift them to the maximum possible 16-bit signed integer value without
loosing any information and use _mm_mulhi_epi16 which takes the upper 16 bits
of the 32-bit result.

The SSE2 ycbcr decoder is now much simpler and about 40 percent faster.
2011-12-27 16:18:02 +01:00
David Sundstrom
622375cef2 Detect when sever visual has an inverted color map and invert all color conversions.
Remote spurious printf() in code
2011-12-21 17:00:09 -06:00
louyihua
32ff6a0b69 wfreerdp: enable SSE2 acceleration for RemoteFX under Visual C++ 2011-12-21 08:32:04 +08:00