Commit Graph

165 Commits

Author SHA1 Message Date
Armin Novak
dda6b14402 Fixed SSE yCbCrToRGB_16s8u_P3AC4R, improved tests. 2017-02-16 12:16:58 +01:00
Armin Novak
ee3a3a787b Fixed SSE checks and RGBToRGB_16s8u_P3AC4R 2017-02-16 09:57:13 +01:00
Armin Novak
1b78c45eca Fixed alignment checks for SSE yCbCrToRGB 2017-02-15 12:39:57 +01:00
Armin Novak
dce3604bcf Refined alignment checks for SSSE3 YUV444ToRGB 2017-02-15 12:08:32 +01:00
Armin Novak
e44158ee29 Reordered SSSE3 YUV444ToRGB 2017-02-14 16:02:12 +01:00
Armin Novak
2463575083 Print profiler header and footer. 2017-02-14 16:02:11 +01:00
Armin Novak
f324b0ef9c Use aligned malloc/free for GFX surfaces/buffers 2017-02-14 16:02:11 +01:00
Armin Novak
9dba98598f SSSE3 YUV444ToRGB process 16 pixel per loop. 2017-02-14 16:02:11 +01:00
Armin Novak
4f705b99ec Fixed primitives sign test buffer size. 2017-02-13 16:09:57 +01:00
Armin Novak
e60cc9bdd9 NEON optimized YCoCg conversion. 2017-02-13 16:09:28 +01:00
Armin Novak
a791ab0b17 Added NEON and SSSE3 YCbCr conversion functions. 2017-02-13 16:08:37 +01:00
Armin Novak
b1e3bab8ef Added NEON and SSSE3 YUV conversion optimisations. 2017-02-13 16:00:12 +01:00
Armin Novak
57db52237c Fixed AVC444 luma/chroma checks. 2017-02-10 08:31:32 +01:00
Norbert Federa
490473d26f primitives: RGB to YUV420 (non SIMD) optimizations
- added a dedicated non-simd encoder for BGR[AX] source formats
- simplified the generic RgbToYuv420 encoder and fixed the crash
  with odd dimensions
2017-02-06 15:48:52 +01:00
Norbert Federa
cb5dfd831f primitives: added SSSE3 rgb to yuv420 encoder
Currently supported source pixel formats are:
- PIXEL_FORMAT_BGRA32
- PIXEL_FORMAT_BGRX32

Support for PIXEL_FORMAT_RGB[XA]32 can simply be added if
required (see the comment in prim_YUV_opt.c).

On my old 3.1 GHz Core i5-2400 the new SSSE3 function can convert
over 900 1080p BGRX frames per second.

The current non-optimized C version (which supports all pixel formats)
can't do more than 40 yuv conversions per second on this cpu.

---------------------------+---------+-------------+-----------+-------
RGB TO YUV420 1080p 32bit  |   COUNT |       TOTAL |       AVG |    FPS
---------------------------+---------+-------------+-----------+-------
general_RGBToYUV420        |     500 |    13.1776s | 0.026355s |     38
ssse3_RGBToYUV420          |     500 |     0.5320s | 0.001064s |    940

Also fixed an error in TestPrimitivesYUV which generated resolutions
with height or width set to zero
2017-02-03 13:56:50 +01:00
Armin Novak
16de1bca2b Removed unused profiler. 2017-01-31 14:18:28 +01:00
Armin Novak
dbfbd5b086 Fixed argument order of yCbCrToRGB_16s8u_P3AC4R 2017-01-31 10:49:59 +01:00
Armin Novak
c4122d342c Added performance profiler to YUV test. 2017-01-31 10:31:34 +01:00
Armin Novak
d7426d4516 Reverted RGB2V 2017-01-31 10:04:00 +01:00
Armin Novak
b04b8303e6 Using faster transformation for RFX decoder. 2017-01-24 11:37:24 +01:00
Armin Novak
0d6fb17921 Fixed NEON primitives. 2017-01-24 09:08:03 +01:00
Armin Novak
dd430f78f6 Fixed YUV tests. 2017-01-24 09:08:03 +01:00
Armin Novak
adcd09cd46 Enabled ASM primitives. 2017-01-24 09:08:03 +01:00
Armin Novak
7e4c6c6a48 Optimized functions, removed duplicates. 2017-01-18 15:28:53 +01:00
Armin Novak
9cf6af36fb Inlined shift operations. 2017-01-18 15:28:53 +01:00
Armin Novak
6b7b1cec39 Optimized general_YUV444ToRGB_8u_P3AC4R for BGRX 2017-01-18 15:28:53 +01:00
Armin Novak
948e633ed3 Optimized general_RGBToRGB_16s8u_P3AC4R for BGRX 2017-01-18 15:28:53 +01:00
Armin Novak
d76ecc7662 Optimized general_yCbCrToRGB_16s8u_P3AC4R for BGRX 2017-01-18 15:28:53 +01:00
Armin Novak
ebfa0ccc7d Unified clipping of byte values. 2017-01-12 15:30:06 +01:00
Norbert Federa
f71b6b46e8 fix string format specifiers
- fixed invalid, missing or additional arguments
- removed all type casts from arguments
- added missing (void*) typecasts for %p arguments
- use inttypes defines where appropriate
2016-12-16 13:48:43 +01:00
Bernhard Miklautz
d1e0d44f22 Merge pull request #3626 from akallabeth/primitives_speedup
Added optimized pixel write functions for colors.
2016-12-06 14:34:35 +01:00
Armin Novak
c33754ae1d Fixed unused and uninitialized warnings. 2016-12-01 15:36:49 +01:00
Armin Novak
7a8f7c2f1b Added optimized pixel write functions for colors. 2016-11-28 09:21:12 +01:00
Norbert Federa
c6e6b44143 countless WLog/printf format specifier fixes 2016-11-25 17:06:25 +01:00
Martin Fleisz
cf4b8a1ae9 primitives: Fix compiler error 2016-11-25 10:47:00 +01:00
Armin Novak
b9072bf0ea Added optimized write functions. 2016-11-24 10:37:21 +01:00
Armin Novak
4cc291869a Added optimized write functions. 2016-11-24 10:36:57 +01:00
Armin Novak
d1e2dd3281 Moved format size calculation out of loop. 2016-11-24 10:01:45 +01:00
Armin Novak
64c5d78b3f Fixed clang warnings. 2016-10-06 13:43:09 +02:00
Armin Novak
c7448c03fb Added FREERDP_LOCAL
CMake 2.8 does not support default visibility on windows.
To allow building tests add the FREERDP_LOCAL define for each
function that is internal to FreeRDP.
When build with testing these functions are exported and available
for use by tests.
2016-10-06 13:43:09 +02:00
Armin Novak
d0f09c8d15 Fixed warnings and stride default. 2016-10-06 13:43:04 +02:00
Armin Novak
076b92dd72 Fixed primitives misuse. 2016-10-06 13:43:00 +02:00
Armin Novak
99c418766c Updated primitives API and tests. 2016-10-06 13:43:00 +02:00
Armin Novak
df35c135d1 Fixed color conversion, unified GFX and updated API. 2016-10-06 13:42:58 +02:00
Norbert Federa
e8c4910e2e fix segfaults casused by size_t format specifier
win32/msvc cc does not recognize the %z format specifier which caused
invalid references and segfaults on win32.
Until FreeRDP gets format specifier macros we'll cast size_t to
unsigned long and use the %lu specifier.

Also simplified winpr_backtrace_symbols() a little bit and fixed it
to allocate the correct amount of bytes for the return buffer.
2016-05-27 15:55:28 +02:00
Armin Novak
dfdc4c38f9 Fixed comments. 2016-03-16 13:43:18 +01:00
Armin Novak
5bc333c626 Implemented GFX AVC444 support. 2016-03-16 13:43:18 +01:00
Armin Novak
3309bf8f9c Implemented YUV444 related primitives. 2016-03-16 13:43:17 +01:00
Armin Novak
10956f3179 Fixed constant definition. 2016-02-03 11:51:31 +01:00
Martin Fleisz
c9c8f8cc89 Merge pull request #2435 from llyzs/llyzs
Add openh264 encoder support.
2015-03-06 11:33:30 +01:00
Bernhard Miklautz
a371723c4f build: fix compiler warnings
warning: redundant redeclaration
Tested with: 4.7.2 and 3.5.0-1~exp1
2015-03-03 19:36:54 +01:00
Vic Lee
3c3c7068a0 Add openh264 encoder support. 2015-03-02 18:11:28 +08:00
Marc-André Moreau
2a5192b027 Merge branch 'master' of github.com:awakecoding/FreeRDP into egfx
Conflicts:
	client/Windows/wf_cliprdr.h
	client/Windows/wf_event.h
	client/X11/xf_client.c
	client/X11/xf_gdi.c
	libfreerdp/gdi/gdi.c
	server/Mac/mf_input.c
2014-09-17 19:09:56 -04:00
Marc-André Moreau
1837c34e6e libfreerdp-codec: add BGR support to egfx 2014-09-16 16:55:47 -04:00
Bernhard Miklautz
0313ca3622 libfreerdp: always build "MONOLITHIC"
"libfreerdp" consisted of multiple (small) single libraries. If the cmake
option MONOLITHIC was used only one library was build combining all of
the libfreerdp-* libraries.
The only exceptions to this are libfreerdp-server and libfreerdp-client these
are build as separate libraries.

This commit obsoltes non-monolithic builds and makes monolithic builds
the default. The cmake option MONOLITHIC is also removed.
2014-09-12 00:19:53 +02:00
Martin Fleisz
54b96290c9 Merge branch 'fix_2036' of git://github.com/akallabeth/FreeRDP into akallabeth-fix_2036
Conflicts:
	libfreerdp/codec/test/TestFreeRDPCodecPlanar.c
	libfreerdp/codec/test/TestFreeRDPCodecProgressive.c
	libfreerdp/core/transport.c
	libfreerdp/primitives/test/TestPrimitivesYCbCr.c
2014-09-11 13:03:01 +02:00
Marc-André Moreau
89e5fef11f wfreerdp: fix build on Windows 2014-09-10 11:38:38 -04:00
Armin Novak
f18a4b8252 Fixed winpr_HexDump calls in tests. 2014-09-10 08:48:49 +02:00
Marc-André Moreau
c71e4e18a1 libfreerdp-core: refactor codec context management 2014-09-10 00:42:41 -04:00
Marc-André Moreau
3d4fea7d8e libfreerdp-primitives: fix YUV420 color conversion matrix 2014-09-09 19:18:07 -04:00
Marc-André Moreau
bcf1266f51 libfreerdp-primitives: integrate H264 SSE3 color converter 2014-09-09 19:15:07 -04:00
Marc-André Moreau
666919d157 Merge branch 'egfx_new' of https://github.com/erbth/FreeRDP into egfx 2014-09-09 18:04:55 -04:00
Marc-André Moreau
5c5eedc85b libfreerdp-codec: allow error margin of 1 on YCbCr to RGB color decoding 2014-09-09 17:34:02 -04:00
Marc-André Moreau
1931dc546f Merge branch 'egfx' of github.com:awakecoding/FreeRDP into egfx 2014-09-09 13:45:08 -04:00
Marc-André Moreau
12ca7b3391 libfreerdp-primitives: update YCbCr test code 2014-09-09 13:44:57 -04:00
erbth
2d6a59e34b added some commits, I didn't understand my own code anymore 2014-09-09 12:34:08 +02:00
erbth
7828725413 YUV data conversion of H.264 implementation (egfx):
only convert invalid areas
SIMD SSSE3 conversion in primitives
compiling all primitives sources with optimization

and cleanup after last merge
2014-09-09 00:13:18 +02:00
Marc-André Moreau
a427a46ba5 libfreerdp-primitives: start porting tests to Windows 2014-09-08 16:24:43 -04:00
Marc-André Moreau
81454c1171 libfreerdp-primitives: add more YCbCr test coefficients 2014-09-08 15:47:03 -04:00
Marc-André Moreau
e21202ee61 libfreerdp-primitives: add per-pixel YCbCr test code 2014-09-08 15:16:03 -04:00
Marc-André Moreau
cc16ddea2d libfreerdp-primitives: update YCbCr color converter 2014-09-08 12:28:35 -04:00
Marc-André Moreau
bd516e04fa libfreerdp-primitives: cleanup YCoCg 2014-09-06 21:13:37 -04:00
Marc-André Moreau
3203d37bdf libfreerdp-primitives: optimize YUV420p to RGB conversion 2014-09-06 20:15:40 -04:00
Marc-André Moreau
437583aa9a libfreerdp-primitives: add YUV420 to RGB conversion 2014-09-06 17:10:27 -04:00
Marc-André Moreau
be60bddec0 libfreerdp-primitives: add YCbCr color converter test 2014-09-04 16:34:29 -04:00
Marc-André Moreau
ccb31efe63 libfreerdp-primitives: migrate tests to ctest 2014-09-04 15:46:20 -04:00
Marc-André Moreau
37aabc50d1 libfreerdp-codec: improve YCbCr to RGB color conversion 2014-09-04 13:09:46 -04:00
Armin Novak
ad3255354d Added WITH_LIBRARY_VERSIONING, allowing to build shared libraries without
SOVERSION information. (required by Android)
2014-07-11 11:53:58 +02:00
Bernhard Miklautz
6a49bcfe40 winpr: always build "monolitic"
winpr is now always build as single library.
The build option MONOLITHIC_BUILD doesn't influence this behavior anymore.

The only exception is winpr-makecert-tool which is still build as extra
library.

This obsoletes complex_libraries for winpr.
2014-07-10 11:10:58 +02:00
Daryl Poe
fa06452a4b add YCoCg->RGB and 16-to-32bit SSE 2014-07-02 14:30:04 -06:00
Bernhard Miklautz
b817e92e5e cmake: mark required libraries for export 2014-04-23 10:16:02 +02:00
Bernhard Miklautz
2b6b4a6685 updated file headers 2013-12-04 11:44:22 +01:00
Marc-André Moreau
55565e056c freerdp: export targets 2013-10-28 23:06:39 -04:00
Marc-André Moreau
cd8091a315 freerdp: fix monolithic build with Intel IPP linking 2013-05-16 14:45:49 -04:00
Marc-André Moreau
cd7edbbc81 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2013-03-04 16:07:29 -05:00
Martin Fleisz
52deaeaddd cmake: Fix for monolithic Android build 2013-03-04 10:16:40 +01:00
Martin Fleisz
a822d736f0 Fixed issues with new sysinfo on windows 2013-03-04 09:40:26 +01:00
Bernhard Miklautz
50a4f6d97b primitives: fixed flag detection for sign functions 2013-03-01 09:02:15 +01:00
Bernhard Miklautz
eb194014d3 primitives: use alias define for SSE2 2013-03-01 09:02:15 +01:00
Bernhard Miklautz
fe91121706 primitves/test: use Ex function for extended flags 2013-03-01 09:02:15 +01:00
Bernhard Miklautz
08772f6402 primitives: removed build warnings on arm 2013-03-01 09:02:15 +01:00
Bernhard Miklautz
081be8b01f primitives: updated tests, cleanup and build fixes 2013-03-01 09:02:14 +01:00
Bernhard Miklautz
589d32dc56 codec/rfx,primitives: removed cpu-detect.[ch] from build
sysinfo cpu detection is used on android as well.
2013-03-01 09:02:14 +01:00
Bernhard Miklautz
84a3dbc115 primitives: make use of winprs processor feature detection
- Removed the cpu flag detection
- Fixed and updated the tests
2013-03-01 09:02:14 +01:00
Bernhard Miklautz
bf7f7f0f60 winpr/sysinfo: added IsProcessorFeaturePresent and IsProcessorFeaturePresentEx
These functions can be used to check if an processor feature is supported.
IsProcessorFeaturePresentEx is a extended version which is not available
in the windows API and allows to query additional features.
Currently it works on the following platforms:
- i386/amd64 when compiling with gcc
- ARM on linux
2013-03-01 09:02:14 +01:00
Marc-André Moreau
62e686f62a Merge branch 'master' of github.com:FreeRDP/FreeRDP 2013-02-28 10:42:13 -05:00
Marc-André Moreau
9873ce28d0 libwinpr-utils: experiment with printf replacement 2013-02-28 08:41:51 -05:00
Bernhard Miklautz
071c528331 primitives: test build fixed 2013-02-28 14:30:12 +01:00
Martin Fleisz
e819223939 primitives: renamed NEON detection function 2013-02-21 03:31:07 -08:00
Martin Fleisz
22cc6341a6 codec/primitives: NEON now enabled for iOS 2013-02-21 03:27:10 -08:00