Граф коммитов

37 Коммитов

Автор SHA1 Сообщение Дата
akallabeth 9eeb64ed9f Ignore alpha channel during color conversion.
Most GFX graphics do not carry alpha data. Keep the original
alpha value unless specified otherwise.

(cherry picked from commit 115532ef5a71676a946c9d268dd1294daf99e52d)
2021-02-25 09:51:41 +01:00
David Fort 5f0943f0fe primitives: add openCL support
This patch adds the basic infrastructure to have openCL acceleration.
For now only YUV2RGB is implemented but other operations could be
implemented.
The primitives have been massively reworked so that we have an autodetect
mode that will pick the best implementation automatically by performing a
benchmark.

Sponsored-by: Rangee Gmbh(http://www.rangee.com)
2019-11-22 13:21:39 +01:00
Armin Novak 6afa413669 Modified primitives function pointer to take const pointer to const data 2019-11-14 10:46:24 +01:00
Armin Novak 72ca88f49c Reformatted to new style 2019-11-07 10:53:54 +01:00
Armin Novak 2a582ed197 Fixed NULL dereferences and uninitialized values 2019-01-30 16:11:10 +01:00
Armin Novak 53cdd95de0 Refactored RGB to AVC444v2 2018-02-07 10:48:43 +01:00
Armin Novak 46159c4cab Added UV average to AVC444v1 2018-02-07 10:48:43 +01:00
Armin Novak 8f7bc7990f Added SSE optimized RGB to AVC444 frame split and test. 2018-01-30 11:17:16 +01:00
Armin Novak ce10e22b86 Added optimized C function for specific color format. 2018-01-30 11:17:15 +01:00
Martin Haimberger 94a58bd18d YUV conversation: fixed luma frame creation
in the conversation function general_RGBToAVC444YUVv2_ANY
2018-01-12 00:16:45 -08:00
Armin Novak 23e1afb44a Added new and optimized YUV primitives.
* RGBToAVC444YUVv2: Split a RGB frame in luma and/or chroma v2 YUV420 frames
* RGBX specific versions of RGBToAVC444YUV and RGBToYUV420_8u_P3AC4R
2018-01-10 14:46:18 +01:00
Armin Novak e4766c656e Fixed missing initialization warnings. 2017-12-21 11:04:32 +01:00
Armin Novak a2167d5417 Added surface width and heigth for YUV combine. 2017-04-18 14:12:40 +02:00
Armin Novak b0d3cfda4d Added AVC444v2 client support. 2017-04-11 11:29:14 +02:00
Norbert Federa 13a60ae138 primitives: added RGB to AVC444YUV converter 2017-02-16 17:03:40 +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 6b7b1cec39 Optimized general_YUV444ToRGB_8u_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
Armin Novak 7a8f7c2f1b Added optimized pixel write functions for colors. 2016-11-28 09:21:12 +01:00
Martin Fleisz cf4b8a1ae9 primitives: Fix compiler error 2016-11-25 10:47:00 +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 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
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
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 bcf1266f51 libfreerdp-primitives: integrate H264 SSE3 color converter 2014-09-09 19:15:07 -04: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 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