mirror of https://github.com/FreeRDP/FreeRDP
04518f0b42
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. |
||
---|---|---|
channels | ||
client | ||
cmake | ||
cunit | ||
docs | ||
include | ||
keymaps | ||
libfreerdp-cache | ||
libfreerdp-channels | ||
libfreerdp-codec | ||
libfreerdp-core | ||
libfreerdp-gdi | ||
libfreerdp-kbd | ||
libfreerdp-rail | ||
libfreerdp-utils | ||
resources | ||
server | ||
.gitignore | ||
CMakeLists.txt | ||
LICENSE | ||
README | ||
config.h.in | ||
freerdp.pc.in | ||
freerdp.spec |
README
FreeRDP: A Remote Desktop Protocol Client ========================================= FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP) following the Microsoft Open Specifications. Resources --------- Website: http://www.freerdp.com/ Wiki: http://www.freerdp.com/wiki/ Sources: http://www.freerdp.com/git/ API doc: http://www.freerdp.com/api/ IRC channel: #freerdp @ irc.freenode.net Mailing list: https://lists.sourceforge.net/lists/listinfo/freerdp-devel Microsoft Open Specifications ----------------------------- Information regarding the Microsoft Open Specifications can be found at: http://www.microsoft.com/openspecifications/ Compilation ----------- Instructions on how to get started compiling FreeRDP can be found on the wiki: http://www.freerdp.com/wiki/doku.php?id=compilation