Commit Graph

163 Commits

Author SHA1 Message Date
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
Martin Fleisz
343d210a75 primitives: separating optimized functions into their own .c files.
This way we use certain compiler flags (like -msse3) only on files
containing optimized code. This avoids problems that occured when
using these flags compiling generic code and running it on platforms
that don't support these optimizations (i.e. NEON optimization on
ARM platforms).
2013-02-21 02:45:10 -08:00
Martin Fleisz
b5d6b43700 Fixed and improved performance of NEON yCbCr to RGB conversion 2013-02-20 05:33:42 -08:00