Frank Barchard
d039ad6e9b
Width use memory instead of register for 32 bit fpic.
...
Code runs out of registers on 32 bit fpic builts.
TBR=harryjin@google.com
BUG=libyuv:496
Review URL: https://codereview.chromium.org/1369053002 .
2015-09-25 15:36:04 -07:00
Frank Barchard
febc26a2c9
win64 version of I422AlphaToARGB.
...
Was
I420AlphaToARGB_Premult (8861 ms)
I420AlphaToARGB_Opt (7119 ms)
Now
I420AlphaToABGR_Premult (2840 ms)
I420AlphaToARGB_Opt (484 ms)
C function switched to 1 step.
Was
I420AlphaToARGB_Premult (8862 ms)
I420AlphaToABGR_Opt (6718 ms)
Now
I420AlphaToARGB_Premult (8706 ms)
I420AlphaToARGB_Opt (6541 ms)
R=harryjin@google.com
BUG=libyuv:496, libyuv:473
Review URL: https://codereview.chromium.org/1359183003 .
2015-09-25 15:06:41 -07:00
Frank Barchard
9a0e12f5f1
AVX2 1 step I422AlphaToARGB for gcc and win.
...
C I420AlphaToARGB_Opt (5169 ms)
SSSE3 I420AlphaToARGB_Opt (432 ms)
AVX2 I420AlphaToARGB_Opt (358 ms)
and with premultiplication as 2 step process:
I420AlphaToARGB_Premult (7029 ms)
I420AlphaToARGB_Premult (757 ms)
I420AlphaToARGB_Premult (508 ms)
R=harryjin@google.com
BUG=libyuv:496,libyuv:473
Review URL: https://codereview.chromium.org/1372653003 .
2015-09-25 13:37:42 -07:00
Frank Barchard
e365cdde3b
I420Alpha row function in 1 pass.
...
API change - I420AlphaToARGB takes flag indicating if RGB should be
premultiplied by alpha.
This version implements an efficient SSSE3 version for Windows.
C version done in 2 steps.
Was
libyuvTest.I420AlphaToARGB_Any (1136 ms)
libyuvTest.I420AlphaToARGB_Unaligned (1210 ms)
libyuvTest.I420AlphaToARGB_Invert (966 ms)
libyuvTest.I420AlphaToARGB_Opt (1031 ms)
libyuvTest.I420AlphaToABGR_Any (1020 ms)
libyuvTest.I420AlphaToABGR_Unaligned (1359 ms)
libyuvTest.I420AlphaToABGR_Invert (1082 ms)
libyuvTest.I420AlphaToABGR_Opt (986 ms)
R=harryjin@google.com
BUG=libyuv:496
Review URL: https://codereview.chromium.org/1367093002 .
2015-09-25 10:29:20 -07:00
Frank Barchard
d4594beefc
switch from ebp to ebx.
...
ebx encodes more efficiently (1 byte less) for most address modes, than ebp.
previously it was used for 411 format, but the reader uses pinsrw now avoiding
gpr register.
BUG=libyuv:488
R=harryjin@google.com
Review URL: https://codereview.chromium.org/1365003003 .
2015-09-24 17:25:11 -07:00
Frank Barchard
8fb2048e9f
Fix nv12 64 bit gcc increment.
...
Should be 16 bytes, but was 0x16 causing memory corruption.
TBR=harryjin@google.com
BUG=libyuv:492
Review URL: https://codereview.chromium.org/1368693002 .
2015-09-24 10:19:17 -07:00
Frank Barchard
accc04e6d8
NV12ToARGB_AVX2 ported to gcc
...
TBR=harryjin@google.com
BUG=none
Review URL: https://codereview.chromium.org/1364913002 .
2015-09-23 15:54:16 -07:00
Frank Barchard
000cf89ca8
YUY2ToARGB avx2 in 1 step conversion.
...
Includes UYVYToARGB ssse3 fix.
Was
YUY2ToARGB_Opt (433 ms)
69.79% libyuv_unittest libyuv_unittest [.] I422ToARGBRow_AVX2
20.73% libyuv_unittest libyuv_unittest [.] YUY2ToUV422Row_AVX2
6.04% libyuv_unittest libyuv_unittest [.] YUY2ToYRow_AVX2
0.77% libyuv_unittest libyuv_unittest [.] YUY2ToARGBRow_AVX2
Now
YUY2ToARGB_Opt (280 ms)
95.66% libyuv_unittest libyuv_unittest [.] YUY2ToARGBRow_AVX2
BUG=libyuv:494
R=harryjin@google.com
Review URL: https://codereview.chromium.org/1364813002 .
2015-09-23 11:15:18 -07:00
Frank Barchard
16f12b58cc
Replace random with fastrand
...
random / rand is slow and impacts performance testing.
Although its only called to clear a frame once, a typical profile shows
it high in the overall profile, when doing 1000 frames for a benchmark.
95.10% libyuv_unittest libyuv_unittest [.] YUY2ToARGBRow_SSSE3
2.01% libyuv_unittest libc-2.19.so [.] __random_r
1.13% libyuv_unittest libc-2.19.so [.] __random
Replace random is a faster version for unittests.
set LIBYUV_WIDTH=1280
set LIBYUV_HEIGHT=720
set LIBYUV_REPEAT=999
set LIBYUV_FLAGS=-1
out\release\libyuv_unittest --gtest_filter=*YUY2ToARGB* | findms
Was
libyuvTest.YUY2ToARGB_Opt (497 ms)
Now
libyuvTest.YUY2ToARGB_Opt (454 ms)
R=harryjin@google.com
BUG=none
Review URL: https://codereview.chromium.org/1361813002 .
2015-09-22 15:47:36 -07:00
Frank Barchard
2b92ec8d0f
Fix git markers introduced on landing previous CL
...
BUG=none
Review URL: https://codereview.chromium.org/1359023003 .
2015-09-22 15:00:57 -07:00
Frank Barchard
5f3d4270d1
yuy2 to rgb gcc versions
...
read in read function for yuv conversion
R=harryjin@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1355393002 .
2015-09-22 14:27:33 -07:00
Frank Barchard
03cd8584e7
Read Y channel in read function for yuv conversion.
...
Allows reader to support YUY2 format.
Also contains fix for win64 build for yuv conversion.
TBR=harryjin@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1355333002 .
2015-09-22 12:05:16 -07:00
Frank Barchard
f96890a0be
yuvconstants for all YUV to RGB conversion functions.
...
R=harryjin@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1363503002 .
2015-09-22 10:26:03 -07:00
Frank Barchard
62c49dc811
move constants into common
...
R=harryjin@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1359443005 .
2015-09-18 16:28:44 -07:00
Frank Barchard
0381673d19
port I444 to ARGB to matrix. Add I444 to ABGR.
...
R=harryjin@google.com
BUG=libyuv:488,libyuv:490
Review URL: https://codereview.chromium.org/1348763005 .
2015-09-18 14:36:15 -07:00
Frank Barchard
28427a53e2
I444ToABGR for android
...
Reimplements I444ToARGB as a matrix function.
new I444ToABGR as matrix functions with wrappers and any functions.
Allows for future J444 and H444 versions.
I444ToABGR user level function added.
BUG=libyuv:490, libyuv:449
R=harryjin@google.com
Review URL: https://codereview.chromium.org/1355733002 .
2015-09-18 11:20:58 -07:00
Frank Barchard
158d4079a3
NEON J422ToABGR and H422ToABGR missing prototypes
...
TBR=harryjin@google.com
BUG=none
Review URL: https://codereview.chromium.org/1351993003 .
2015-09-17 15:47:55 -07:00
Frank Barchard
bdfd59a728
NEON constants
...
TBR=harryjin@google.com
BUG=none
Review URL: https://codereview.chromium.org/1351553005 .
2015-09-17 15:28:29 -07:00
Frank Barchard
28ce7d94f5
j422toabgr neon port using i422toabgr matrix function.
...
R=harryjin@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1353923003 .
2015-09-17 15:20:55 -07:00
Frank Barchard
6fcbae1409
J422ToARGB Neon but not aarch64
...
TBR=harryjin@google.com
BUG=libyuv:493
Review URL: https://codereview.chromium.org/1348203004 .
2015-09-17 12:43:05 -07:00
Frank Barchard
6a6b67e7a9
Add H422ToARGB armv7 neon version.
...
Patch provided by zhongwei.yao@linaro.org
R=fbarchard@chromium.org , fbarchard@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1344393002 .
2015-09-17 10:38:15 -07:00
Frank Barchard
ef09d53f61
Remove redundent rounding test from scale.
...
There is still a rounding test in color test.
TBR=harryjin@google.com
BUG=libyuv:492
Review URL: https://codereview.chromium.org/1347893003 .
2015-09-16 17:54:41 -07:00
Frank Barchard
bb0a521c52
j422 not available on aarch64
...
The aarch64 version does not have I422ToARGBMatrix yet,
so adding this to the ifdef section of row.h
R=harryjin@google.com
TBR=harryjin@google.com , zhongwei.yao@linaro.org
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1347853002 .
2015-09-15 15:26:01 -07:00
Frank Barchard
509c644245
Add J422ToARGB armv7 neon version.
...
R=fbarchard@chromium.org , fbarchard@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1334173005 .
2015-09-15 15:01:48 -07:00
Frank Barchard
73c32d92d7
neon64 use yuvconstants like 32 bit code.
...
TBR=harryjin@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1345643002 .
2015-09-14 16:43:07 -07:00
Frank Barchard
a67927c994
use struct instead of vectors
...
TBR=harryjin@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1345623003 .
2015-09-14 16:07:58 -07:00
Frank Barchard
909160b3b5
use same macros as row_gcc.cc
...
R=harryjin@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1343863002 .
2015-09-14 15:36:10 -07:00
Frank Barchard
fcacbfb27f
validate scan EOI from end for better coverage
...
R=tpsiaki@google.com
BUG=libyuv:478
Review URL: https://codereview.chromium.org/1344623003 .
2015-09-14 10:58:51 -07:00
Frank Barchard
67a9e30225
neon yuv matrix function
...
R=harryjin@google.com
BUG=libyuv:488
Review URL: https://codereview.chromium.org/1337973002 .
2015-09-11 11:12:30 -07:00
Frank Barchard
602fdbef94
Add a sanitizer.gni import to the GN build.
...
The is_*san build flags are moving to this .gni file. This patch will allow
libyuv to continue building when this move happens.
R=brettw@chromium.org , harryjin@google.com
BUG=none
Review URL: https://codereview.chromium.org/1314833005 .
2015-09-09 15:01:38 -07:00
Frank Barchard
316e1ab996
avx2 width parameter bug fix
...
R=harryjin@google.com
BUG=libyuv:489
Review URL: https://codereview.chromium.org/1321773004 .
2015-09-09 11:56:35 -07:00
Frank Barchard
8467f14ebb
disable avx2
...
R=harryjin@google.com
BUG=libyuv:489
Review URL: https://codereview.chromium.org/1318893003 .
2015-09-08 11:55:52 -07:00
Frank Barchard
ed55d24d9f
H420 functionality
...
R=harryjin@google.com
BUG=libyuv:488
Review URL: https://webrtc-codereview.appspot.com/54869004 .
2015-09-06 11:01:40 -07:00
Henrik Kjellander
3f893126a5
Change code review host to Chromium's Rietveld.
...
Since WebRTC's codereview instance at webrtc-codereview.appspot.com
is going to be read-only, libyuv needs to switch to Chromium's instance.
Also update the ViewVC URL to match the Git repo that is now the
master repo.
After this CL has landed, existing Git branches will continue to remember which Rietveld URL they uploaded to.
To reset a branch and re-upload a new CL to the new instance, do like this:
git cl issue 0
git pull --rebase origin master
git cl upload
BUG=libyuv:450
R=fbarchard@chromium.org
Review URL: https://codereview.chromium.org/1154893003 .
2015-09-06 06:49:01 +02:00
Frank Barchard
67b06e66cb
I422ToABGR for win64. Moves any functions to accomidate win64 subset of formats.
...
TBR=harryjin@google.com
BUG=libyuv:488
Review URL: https://webrtc-codereview.appspot.com/57679004 .
2015-09-03 11:00:18 -07:00
Frank Barchard
7060e0d826
I420ToABGRMatrix functions with J420ToABGR wrapper.
...
Allows direct conversion from JPeg to ABGR for android.
BUG=libyuv:488
R=harryjin@google.com
Review URL: https://webrtc-codereview.appspot.com/55719004 .
2015-09-03 10:42:36 -07:00
Frank Barchard
fbc3d595e9
define yuvconstants structure all the time, so its can be referred to on all builds.
...
currently only intel code uses this structure, but the prototypes are there for neon and lack of a structure cases a compile error on arm.
R=tpsiaki@google.com
BUG=none
Review URL: https://webrtc-codereview.appspot.com/52799004 .
2015-09-02 14:55:11 -07:00
Frank Barchard
925c3d9e26
I420ToARGB conversion with matrix.
...
Take color conversion constants as a parameter to row function for I420ToARGBMatrixRow_SSSE3.
Allows future variations of color space using a single low level.
R=harryjin@google.com
BUG=libyuv:488
Review URL: https://webrtc-codereview.appspot.com/56669004 .
2015-09-02 10:45:42 -07:00
Frank Barchard
0bc626a5d7
nolint removed
...
R=harryjin@google.com
BUG=none
Review URL: https://webrtc-codereview.appspot.com/59389004 .
2015-08-31 10:52:13 -07:00
Frank Barchard
0735245c52
pinsrw instruction allows reading 2 bytes directly into an xmm register.
...
Saving a gpr register allows the register to not be pushed for now, and in future it can be used to point to color conversion matrix or alpha channel.
R=harryjin@google.com
BUG=libyuv:488
Review URL: https://webrtc-codereview.appspot.com/52789004 .
2015-08-28 17:03:54 -07:00
Frank Barchard
be11f500f0
Use ebp to point to conversion table.
...
Proof of concept that conversions can table color matrix as a parameter.
R=harryjin@google.com
BUG=libyuv:472, libyuv:488
Review URL: https://webrtc-codereview.appspot.com/58489004 .
2015-08-28 12:00:49 -07:00
Frank Barchard
3c4f5735ce
use pointer to inverse table for clangcl
...
R=harryjin@google.com
TBR=harryjin@google.com
BUG=none
Review URL: https://webrtc-codereview.appspot.com/54859004 .
2015-08-26 12:53:03 -07:00
Frank Barchard
5452cce452
port row to clangcl
...
BUG=libyuv:487
R=harryjin@google.com
Review URL: https://webrtc-codereview.appspot.com/53799005 .
2015-08-25 16:15:42 -07:00
Frank Barchard
fa7ce4af3f
fixed table for clangcl
...
R=harryjin@google.com
BUG=libyuv:487
Review URL: https://webrtc-codereview.appspot.com/53799004 .
2015-08-25 10:47:30 -07:00
Frank Barchard
d317a70c1d
llvm64 link error fix.
...
R=harryjin@google.com
BUG=libyuv:485
Review URL: https://webrtc-codereview.appspot.com/58479004 .
2015-08-24 14:21:04 -07:00
Frank Barchard
4dfdabb552
I420AlphaToABGR for android version of yuva conversion
...
Same as I420AlphaToARGB but first step converts to ABGR instead of ARGB.
TBR=harryjin@google.com
BUG=libyuv:473
Review URL: https://webrtc-codereview.appspot.com/52779004 .
2015-08-20 19:36:59 -07:00
Frank Barchard
2fb6fd74be
[Android] Remove reference to third_party/android_testrunner.
...
Deleting in https://codereview.chromium.org/1290173003
BUG=chromium:267773
R=harryjin@google.com
Review URL: https://webrtc-codereview.appspot.com/54849004 .
2015-08-19 16:13:27 -07:00
Frank Barchard
ee9aaea02f
i422torgb565 is asm for clangcl as well
...
Merge branch 'master' of https://chromium.googlesource.com/libyuv/libyuv into convertcl
allow lto for llvm but not gcc
R=harryjin@google.com
BUG=libyuv:469
Review URL: https://webrtc-codereview.appspot.com/52769004 .
2015-08-19 10:46:30 -07:00
Frank Barchard
bb66c021ff
Re-enable LLVM LTO on Neon targets.
...
LTO was disabled due to a GCC compiler bug that does not affect LLVM.
This fixes the build in the cfi_vptr==1 configuration, which requires LLVM LTO.
R=pcc@google.com
BUG=chromium:469376
Review URL: https://webrtc-codereview.appspot.com/57659004 .
2015-08-18 15:26:52 -07:00
Frank Barchard
94d4269936
clang use scalewin
...
R=harryjin@google.com
TBR=harryjin@google.com
BUG=libyuv:469
Review URL: https://webrtc-codereview.appspot.com/51329004 .
2015-08-18 14:50:27 -07:00