Commit Graph

144 Commits

Author SHA1 Message Date
Norbert Federa
eea2f306d3 primitives/yuv: fix endianess issue 2017-10-19 11:55:13 +02:00
Bernhard Miklautz
52fbfb7b12 fix clang warnings, directly include wtypes.h (#4097)
* build: clang use -Wno-unused-command-line-argument

With clang 5.0 builds are quite noisy otherwise.

* Directly include wtypes.h

Directly include winpr/wtypes.h where _fseeki64 or _ftelli64 is used.

* fix build warnings with clang 5

clang version: 5.0.0-svn310678-1~exp1 (branches/release_50)
Warning: parentheses-equality

* fix build warnings with clang 5

clang version: 5.0.0-svn310678-1~exp1 (branches/release_50)
Warning: tautological-compare

* fix build warnings with clang 5

clang version: 5.0.0-svn310678-1~exp1 (branches/release_50)
Warning:
incompatible pointer types passing 'size_t *' (aka 'unsigned
long *') to parameter of type 'UINT32 *' (aka 'unsigned int *')
[-Wincompatible-pointer-types]
2017-08-29 09:09:38 +02:00
Armin Novak
b51a103b70 Fixed uninitialized values. 2017-07-20 09:35:41 +02:00
Armin Novak
8b9e3fa51e Fixed use of reserved keywords for include guards. 2017-07-20 09:35:41 +02:00
Norbert Federa
36b8f54c5e Fixed a few compiler warnings 2017-07-10 17:52:05 +02:00
Armin Novak
f1a296a32e Fixed AVC444v2 NEON chroma decoder. 2017-04-18 15:08:44 +02:00
Armin Novak
06d4e9ac73 Fixed SSE AVC444v2 chroma decoder. 2017-04-18 15:03:38 +02:00
Armin Novak
a2167d5417 Added surface width and heigth for YUV combine. 2017-04-18 14:12:40 +02:00
Armin Novak
fcd2d820af Added SSE AVC444v2 2017-04-13 13:09:16 +02:00
Armin Novak
1a0f56baa7 Fixed AVC444 NEON, added AVC444v2. 2017-04-12 14:39:32 +02:00
Armin Novak
0c15455d8f Upaded YUV tests. 2017-04-11 11:40:04 +02:00
Armin Novak
b0d3cfda4d Added AVC444v2 client support. 2017-04-11 11:29:14 +02:00
Armin Novak
4f6beb0815 Fixed NEON YUV to RGB conversion issues. 2017-04-05 12:20:29 +02:00
Armin Novak
ed0024d11b Fixed AVC420 SSE implementation and test. 2017-03-28 17:42:35 +02:00
Armin Novak
09d43a66f4 Fixed tests and dead store warnings. 2017-03-28 16:49:56 +02:00
Armin Novak
f0b61eb4b9 Fixed index for YUV filter in NEON path. 2017-03-02 17:56:23 +01:00
akallabeth
65b51a6ca3 Merge pull request #3798 from mfleisz/vc10_comp_fix
primitives: Fix compilation with VS 2010
2017-02-22 12:47:52 +01:00
Armin Novak
6366868222 Fixed argument check of sse2_RGBToRGB_16s8u_P3AC4R 2017-02-22 10:59:18 +01:00
Martin Fleisz
966dbdf236 primitives: Fix compilation with VS 2010 2017-02-22 10:21:01 +01:00
Armin Novak
4c7d01374c Fixed warings #3784 2017-02-20 13:30:16 +01:00
Ilya Shipitsin
33f38da6b6 resolve trivial issues found by cppcheck
[libfreerdp/primitives/prim_add_opt.c:43]: (error) Uninitialized variable: shifts
[libfreerdp/primitives/prim_andor_opt.c:42]: (error) Uninitialized variable: shifts
[libfreerdp/primitives/prim_andor_opt.c:44]: (error) Uninitialized variable: shifts
[libfreerdp/primitives/prim_shift_opt.c:42]: (error) Uninitialized variable: shifts
[libfreerdp/primitives/prim_shift_opt.c:45]: (error) Uninitialized variable: shifts
[libfreerdp/primitives/prim_shift_opt.c:48]: (error) Uninitialized variable: shifts
[libfreerdp/primitives/prim_shift_opt.c:51]: (error) Uninitialized variable: shifts
2017-02-17 18:36:03 +05:00
Norbert Federa
a50242c636 primitives: SSSE3 RGB to AVC444YUV converter
------------------------------+---------+----------+-----------+-------
RGB TO AVC444YUV 1080p 32bit  |   COUNT |    TOTAL |       AVG |    IPS
CPU: 3.1 GHz Core i5-2400     |         |          |           |
------------------------------+---------+----------+-----------+-------
general_RGBToAVC444YUV_ANY    |     500 | 13.0164s | 0.026033s |     38
general_RGBToAVC444YUV_BGRX   |     500 |  3.9584s | 0.007917s |    126
ssse3_RGBToAVC444YUV_BGRX     |     500 |  0.7694s | 0.001539s |    650
2017-02-16 17:48:23 +01:00
Norbert Federa
13a60ae138 primitives: added RGB to AVC444YUV converter 2017-02-16 17:03:40 +01:00
Armin Novak
c50e5ba57e Fixed warnings. 2017-02-16 14:34:43 +01:00
Armin Novak
c04918d6c2 Added value comparison for all YCbCr functions. 2017-02-16 14:00:25 +01:00
Armin Novak
4891ae62b1 Reduced test runtime. 2017-02-16 13:52:27 +01:00
Armin Novak
198bc6d9e1 Fixed compiler warnings. 2017-02-16 13:17:49 +01:00
Armin Novak
4d03a9aa6f Improved YCoCgToRGB tests. 2017-02-16 12:16:58 +01:00
Armin Novak
799afe0cca Fixed YUV test result print. 2017-02-16 12:16:58 +01:00
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