1670 Commits

Author SHA1 Message Date
Frank Barchard
fd3e676e91 android_full_debug x86 fix - use +rm for width count
Work around for android full debug build runnign out of registers.
5 functions were running out of registers causing the compiler error
error: 'asm' operand has impossible constraints
These functions mostly have 4 pointers, a counter (width) and a tempory
eax register.  With fpic and debug using stackframes, 2 registers are
unavailable.  So a total of 8 registers are used.
Although fpic and stack frame dont apply to assembly, the compiler
reserves 2 registers.  The optimized version builds, so its likely
freeing up the registers once it knows they are not used.
These functions used to build, so compile options and/or compiler may
have updated.. likely fpic was turned on.
An attribute can be done to disable each, and will avoid using the
2 GPR registers, but they are still reserved and unavailable in debug
builds on current compilers (gcc 4.9 and clang 3.8).

R=dhrosa@google.com
BUG=libyuv:602

Review URL: https://codereview.chromium.org/2066933002 .
2016-06-14 15:25:28 -07:00
Frank Barchard
e2611a7349 document cpuid command line behavior
cpu_info_ is zero for uninitialized state and all bits are off, disabling all cpu optimizations.
the 1 bit indicates cpu_info_ is initialized avoiding calling the detection code again for performance.

MaskCpuFlags initializes the cpu ignoring existing flags, then masks with the supplied flags and stores to cpu_info_.
As a mask, -1 has no effect, enabling all cpu features that were detected, but nothing that wasnt detected.
Setting to 0 will cause the next call to re-initialize the cpu, which is same as enabling all features.
Setting mask to 1 will turn off all cpu features but keep the initialized bit on, so the next detection call wont reinitialize and the cpu features are all disabled.

So normal behavior for command line and programatic masking is:
1 = C
-1 = SIMD

TBR=harryjin@google.com
BUG=libyuv:600
TESTED=out64/Release/bin/run_libyuv_unittest -s libyuv_unittest --verbose --release --gtest_filter=*ARGBExtractAlpha* -a "--libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=9999 --libyuv_flags=1 --libyuv_cpu_info=1"

Review URL: https://codereview.chromium.org/2042933002 .
2016-06-08 10:38:09 -07:00
Frank Barchard
026be3cd85 neon64 use width int directly.
width %w size modifier the int width can be passed directly to arm assembly.
For functions that take input constants, the outputs are declared as early
write using &, meaning the outputs use used before all inputs are consumed.

R=harryjin@google.com
BUG=libyuv:598

Review URL: https://codereview.chromium.org/2043073003 .
2016-06-08 10:26:53 -07:00
Frank Barchard
17e8a4d3df Remove ifdefs for neon in row_neon*.cc
ifdefs on a function level are not needed for neon functions, unless
they are conditionally enabled in row.h.  No functions are conditionally
enabled at this time, so all ifdefs can be removed from row_neon.cc and
row_neon64.cc

TBR=kjellander@chromium.org
BUG=libyuv:599

Review URL: https://codereview.chromium.org/2044223002 .
2016-06-07 14:34:13 -07:00
Frank Barchard
6546096269 ARGBExtractAlpha 16 pixels at a time for ARM
arm64   8     TestARGBExtractAlpha (10019 ms) <-original 64 bit code
arm64   8 x2  TestARGBExtractAlpha (7639 ms)
arm64   16    TestARGBExtractAlpha (7369 ms) <- new 64 bit code
thumb32 8     TestARGBExtractAlpha (9505 ms) <- original 32 bit code
thumb32 8 x2  TestARGBExtractAlpha (7400 ms)
thumb32 8 x2i TestARGBExtractAlpha (7266 ms) <- new 32 bit code
arm32   8     TestARGBExtractAlpha (10002 ms)

BUG=libyuv:572
TESTED=local test on nexus 9
R=harryjin@google.com, wangcheng@google.com

Review URL: https://codereview.chromium.org/2035573002 .
2016-06-07 10:44:28 -07:00
Frank Barchard
462be27ec8 j422 now uses j420 source code so increase error threshold to match.
R=harryjin@google.com
BUG=libyuv:597

Review URL: https://codereview.chromium.org/2024213003 .
2016-05-31 19:45:34 -07:00
Frank Barchard
b00d40160a make unittest allocator align to 64 bytes.
blur requires memory be aligned.  change the unittest allocator to guarantee 64 byte alignment.
re-enable blur any test that fails if memory is unaligned.

TBR=harryjin@google.com
BUG=libyuv:596,libyuv:594
TESTED=local build passes with row.h removed from tests.

Review URL: https://codereview.chromium.org/2019753002 .
2016-05-27 18:02:47 -07:00
Frank Barchard
ade85fb55c remove row.h from unittests
add SIMD_ALIGNED to unittest header.

BUG=libyuv:594
TESTED=local build passes with row.h removed from tests.
R=harryjin@google.com

Review URL: https://codereview.chromium.org/2001373002 .
2016-05-27 10:57:49 -07:00
Magnus Jedvert
942db3016a Add ARGBExtractAlpha function
BUG=libyuv:572
R=fbarchard@google.com

Review URL: https://codereview.chromium.org/1995293002 .
2016-05-26 10:30:57 +02:00
Frank Barchard
6020d2aa64 fix off by one in unitest BenchmarkARGBDetect_Unaligned where array is initialized beyond end by 1.
TBR=harryjin@google.com
BUG=libyuv:595
TESTED=local unittest passes on try bots

Review URL: https://codereview.chromium.org/2012603002 .
2016-05-24 15:33:27 -07:00
Frank Barchard
74a69522da white space fixes for MIPS
TBR=kjellander@chromium.org
BUG=None

Review URL: https://codereview.chromium.org/2005053004 .
2016-05-24 14:17:18 -07:00
Frank Barchard
60abed3a47 add SIMD_ALIGNED to unit_test.h
avoids need for row.h for some unittests;

R=harryjin@google.com
BUG=libyuv:594
TESTED=try bots tested.

Review URL: https://codereview.chromium.org/2004313004 .
2016-05-24 13:56:25 -07:00
Henrik Kjellander
b6bfacc2e7 Roll chromium_revision 1d144ca7f86..2a818f5413 (375480:395512)
* Update gflags to newer repository location (plain copy
  from the files in WebRTC).
* Add workarounds for mojo dependency (see
  http://bugs.webrtc.org/5629 for more details).
* Update libyuv_unittest to generate user friendly
  run-scripts for Android in out/{Debug,Release}/bin
* Fix Android test execution by adding explicit dependency
  on Chromium's base/base.gyp:base_build_config_gen

This roll also solves the compile problem for Mac ASan bots.

Change log: 1d144ca7f8..2a818f5413
Full diff: 1d144ca7f8..2a818f5413

R=magjed@chromium.org
TBR=fbarchard@chromium.org

Review URL: https://codereview.chromium.org/2001173003 .
2016-05-24 11:41:04 +02:00
Frank Barchard
7edf572e28 remove includes for duplicate functions
R=harryjin@google.com
BUG=libyuv:592
TESTED=local builds work with fewer headers

Review URL: https://codereview.chromium.org/2006943002 .
2016-05-23 17:38:26 -07:00
Frank Barchard
fbdc43a03c fix wrong HAS_ARGBCOPYALPHAROW_SSE2 ifdef
TBR=kjellander@chromium.org
BUG=libyuv:593
TESTED=try bots pass.

Review URL: https://codereview.chromium.org/2000393002 .
2016-05-23 16:26:02 -07:00
Niels Möller
caa89bf974 Prune the list of third_party symlinks
BUG=webrtc:5006
R=kjellander@chromium.org, magjed@chromium.org

Review URL: https://codereview.chromium.org/1981883002 .
2016-05-17 12:53:03 +02:00
Frank Barchard
07cb92272f If image sizes are greater than 32768, fixed point stepping will overflow an int. This CL changes the max size to 32768 and disables the test if larger.
BUG=libyuv:590
TESTED=LIBYUV_FLAGS=-1 LIBYUV_WIDTH=8192 LIBYUV_HEIGHT=16 out/Release/libyuv_unittest --gtest_filter=*
R=harryjin@google.com

Review URL: https://codereview.chromium.org/1947783002 .
2016-05-05 19:09:02 -07:00
Frank Barchard
6924590212 Add all library source files to linux.mk
Allows arm and mips linux builds.
Add psnr and cpuid utility targets.

BUG=libyuv:586
TESTED=make -f linux.mk
TBR=kjellander@chromium.org

Review URL: https://codereview.chromium.org/1906653003 .
2016-04-20 16:48:53 -07:00
Frank Barchard
cf101116c9 Remove initialize to zero on output variables for inline.
Inline that uses temporary variables is currently initializing them
to 0 and passing in as output "+r".
This CL replaces the output constraint to "=&r" for most meaning an
output with early write (before inputs).  This allows the initialize
to zero step to be removed, saving 1 instruction.

BUG=libyuv:580
TESTED=local libyuv build on gcc/linux and try bots
R=harryjin@google.com

Review URL: https://codereview.chromium.org/1895743008 .
2016-04-18 16:24:26 -07:00
Frank Barchard
f160ce90bb Roll chromium_revision 8cdf0347.. 1d144ca7
roll chromium_revision for libyuv to pick up jpeg gyp change for NaCL.

new jpeg allows nacl generate without Duse_system_yasm=0

BUG=libyuv:581
TESTED=local nacl build.
R=kjellander@chromium.org

Review URL: https://codereview.chromium.org/1882303002 .
2016-04-13 15:26:36 -07:00
Henrik Kjellander
361d8b8156 Enable building with Native Client.
This requires you don't have target_os=["ios"] set in your
libyuv root .gclient file, since that will make native_client not
being downloaded due to
https://code.google.com/p/chromium/codesearch#chromium/src/DEPS&l=357

BUG=libyuv:573
TESTED=
rm chromium/.last_sync_chromium
rm chromium/.gclient.tmp_entries
gclient sync
native_client/build/gyp_nacl all.gyp -Dgtest_target_type=executable -Dmsan=0 -Duse_system_yasm=0
ninja -C out/Debug

Review URL: https://codereview.chromium.org/1845003004 .
2016-04-12 06:40:04 +02:00
Frank Barchard
9c53ff2c57 Fix temporary stride for ConvertToARGB with rotation.
BUG=libyuv:578
TESTED=local unittests pass
R=harryjin@google.com

Review URL: https://codereview.chromium.org/1879783002 .
2016-04-11 15:21:04 -07:00
Henrik Kjellander
9cb0705771 PRESUBMIT: Add GN bots to default trybots
BUG=601140
TBR=fbarchard@chromium.org

Review URL: https://codereview.chromium.org/1878763002 .
2016-04-11 22:07:55 +02:00
Frank Barchard
2c77dbb976 disable unused argument warning for clang builds.
normally this warning is disabled but for nacl builds that
use clang its not.  this CL makes the option universally disabled
for all clang based builds.

BUG=libyuv:581
TESTED=native_client/build/gyp_nacl all.gyp -Dgtest_target_type=executable -Dmsan=0 & ninja -C out/Debug libyuv
R=kjellander@chromium.org

Review URL: https://codereview.chromium.org/1865183002 .
2016-04-11 11:43:08 -07:00
Frank Barchard
3c862e3d29 Fix stride bug for msan on I420Interpolate.
When using C version of I420Interpolate for msan, a 50% interpolation
would cause stride to be cast to int, which could cause erroneous
memory reads on 64 bit build.
This CL makes the stride use ptrdiff_t for HalfRow_C

BUG=libyuv:582
TESTED=try bots tests
R=dhrosa@google.com

Review URL: https://codereview.chromium.org/1872953002 .
2016-04-08 15:58:53 -07:00
Henrik Kjellander
870d9b513b Skip running GYP if GYP_CHROMIUM_NO_ACTION is set in environment
This is how GYP is skipped on the GN bots. If GYP runs, it will currently
produce files in out/{Debug,Releaese} that makes GN fail.

BUG=601140
TBR=fbarchard@chromium.org

Review URL: https://codereview.chromium.org/1874653003 .
2016-04-08 14:01:29 +02:00
Frank Barchard
8c8294f09b Empty overrides file for GN on Mac
R=kjellander@chromium.org

BUG=libyuv:583
TESTED=gn gen out/Debug

Review URL: https://codereview.chromium.org/1870473002 .
2016-04-07 14:39:30 -07:00
Frank Barchard
ddbc63f7b9 Add //build/config/BUILD.gn to exec whitelist for GN.
Affected Linux GN build, not Windows.

R=kjellander@chromium.org
BUG=libyuv:583
TESTED=gn gen out/Debug --args=is_debug=true

Review URL: https://codereview.chromium.org/1866743002 .
2016-04-06 11:23:28 -07:00
Frank Barchard
c7372a323a add if defined(_MSC_FULL_VER) for NaCL
TBR=kjellander@chromium.org
BUG=libyuv:573
TESTED=try bots

Review URL: https://codereview.chromium.org/1850053002 .
2016-04-01 17:48:23 -07:00
Frank Barchard
ef79a9938b cmake move libyuv_unittest target into the if(TEST) condition
BUG=libyuv:579
TESTED=mkdir build && cd build && cmake .. && cmake --build . --config Release
R=kjellander@chromium.org

Review URL: https://codereview.chromium.org/1847233002 .
2016-04-01 16:15:34 -07:00
Magnus Jedvert
5065743a11 Remove reference builds from gclient
R=aiolos@chromium.org, torbjorng@chromium.org

Review URL: https://codereview.chromium.org/1809653002 .
2016-03-31 13:18:33 +02:00
Frank Barchard
837aa1e2af disable assembly in header for msan=1
GYP_DEFINES="target_arch=x64 msan=1" ./gyp_libyuv
ninja -j7 -C out/Release

R=impjdi@google.com
BUG=libyuv:575

Review URL: https://codereview.chromium.org/1805683003 .
2016-03-15 18:45:38 -07:00
Henrik Kjellander
e336f9941c Docs: Fix broken links from README.md
Thanks to Alexander Kolesnik (alexkol75@gmail.com) for noticing this.

BUG=
R=fbarchard@google.com

Review URL: https://codereview.chromium.org/1805523002 .
2016-03-15 17:38:14 -07:00
Frank Barchard
76aee8ced7 Remove most clang-cl special cases from cpu_id.cc
They are not needed, and due to them there was a call to _xgetbv()
without a declaration of the function.  This used to work because we
implicitly included intrin.h in all translation units with clang-cl, but
we want to stop doing that.

BUG=chromium:592745
R=fbarchard@google.com

Review URL: https://codereview.chromium.org/1780473003 .
2016-03-10 14:01:26 -08:00
Henrik Kjellander
46c3d42ca5 Roll chromium_revision 3c45587..8cdf034 + rename libvpx_new
This brings in the renamed libvpx that happened in
https://codereview.chromium.org/1734613003/

TBR=fbarchard@chromium.org

Review URL: https://codereview.chromium.org/1764083002 .
2016-03-04 23:59:35 +01:00
Frank Barchard
ee99b85126 Port ARGBToRGB565 from aarch64 neon to 32 bit
The 64 bit version of ARGBToRGB565 to 32 bit. 64 bit is using sri which shifts and inserts, saving some masking.  The instruction is available for neon 32 bit as well.

R=magjed@chromium.org, harryjin@google.com
BUG=libyuv:571

Review URL: https://codereview.chromium.org/1724393002 .
2016-02-29 12:22:25 -08:00
Frank Barchard
ab0dfdd4ff Documentation fix for android aarch64 disassembly.
Name of objdump tool updated.

TBR=kjellander@chromium.org
BUG=none

Review URL: https://codereview.chromium.org/1715743003 .

Review URL: https://codereview.chromium.org/1727993002 .
2016-02-23 18:30:35 -08:00
Frank Barchard
38d37a5bee Documentation fix for android aarch64 disassembly
Name of objdump tool updated.

R=kjellander@chromium.org
BUG=none

Review URL: https://codereview.chromium.org/1715743003 .
2016-02-19 11:30:22 -08:00
Frank Barchard
810c1791cc symlinks for android launcher
Based on webrtc roll https://codereview.webrtc.org/1503883002

0c2a94ab87
needed the addition of tools/telemetry and third_party/catapult symlinks
for Android.
GN changes required modification of .gn.

Change log: 626eecf..72c3265
Full diff: 626eecf..72c3265

Changed dependencies:
* src/buildtools: 818123d..b747a9e
* src/third_party/boringssl/src: https://boringssl.googlesource.com/boringssl.git/+log/fde89b4..6d9e5a7
DEPS diff: 626eecf..72c3265/DEPS
TBR=jkellander@chromium.org
BUG=libyuv:570

Review URL: https://codereview.chromium.org/1709193002 .
2016-02-18 15:30:23 -08:00
Frank Barchard
22e062a448 Port ARGBToJ420 to AVX2
ARGBToJ420 had an SSSE3 version, but not AVX2.
ARGBToI420 had an AVX2, so adapt that code to J420.

TBR=harryjin@google.com
BUG=libyuv:553

Review URL: https://codereview.chromium.org/1702373004 .
2016-02-17 23:16:39 -08:00
Frank Barchard
127ff512b3 add perf data files to ignores
document play services update

R=jkellander@chromium.org
BUG=none

Review URL: https://codereview.chromium.org/1712463002 .
2016-02-17 21:37:09 -08:00
Frank Barchard
69c38c5cf5 update linux instructions to not update clang
R=jkellander@chromium.org
BUG=none

Review URL: https://codereview.chromium.org/1703243003 .
2016-02-17 21:16:28 -08:00
Frank Barchard
c5745d558a Documentation change - Remove MIPS from LIBYUV_DISABLE_DSPR2
Make environment variables match ifdefs with one SIMD instruction set word
as suffix for functions, ifdefs and environment variables.

R=kjellander@chromium.org
BUG=libyuv:486

Review URL: https://codereview.chromium.org/1704053002 .
2016-02-17 11:07:27 -08:00
Henrik Kjellander
584c2e660d Add all wiki pages as MarkDown documents + README.md
This is based on today's content at
https://code.google.com/p/libyuv/w/list

BUG=chromium:587193

Review URL: https://codereview.chromium.org/1703653002 .
2016-02-17 07:50:19 +01:00
Henrik Kjellander
f9496cfdf3 Add new OWNERS and remove drover.properties.
The drover.properties file is no longer useful after
migrating the repo to Git.

BUG=libyuv:568
R=mflodman@chromium.org

Review URL: https://codereview.chromium.org/1696173002 .
2016-02-16 19:53:11 +01:00
Frank Barchard
20343f45c6 Update CMake build to support gflags and gtest correctly
The gflags library was missing from the CMake build
and the gtest includes were not being set correctly.

R=fbarchard@google.com

Review URL: https://codereview.chromium.org/1692083002 .
2016-02-12 15:42:56 -08:00
Frank Barchard
cc33dc68c7 Port I411ToARGBRow to AVX2.
An SSSE3 version already exists, and an AVX2 version is available for
Visual C.  This ports the function to AVX2 completing the AVX2 ports of
all YUV to RGB functions for AVX2 on gcc.

TBR=harryjin@google.com
BUG=libyuv:555

Review URL: https://codereview.chromium.org/1687253002 .
2016-02-12 10:26:10 -08:00
Frank Barchard
0e554b18fe port NV12ToRGB565Row_AVX2 to gcc
NV12ToRGB565Row for Intel is implemented as a 2 step conversion:
NV12ToARGBRow_SSSE3 and ARGBToRGB565Row_SSE2

NV12ToARGBRow has an AVX2 version, so this CL implements
NV12ToRGB565Row_AVX2 with call to NV12ToARGBRow_AVX2 and
ARGBToRGB565Row_SSE2.

R=harryjin@google.com
BUG=libyuv:554

Review URL: https://codereview.chromium.org/1687953002 .
2016-02-10 11:13:41 -08:00
Frank Barchard
c39509c8e5 add avx2 wrappers for functions that can call I422ToARGBRow_AVX2
R=harryjin@google.com
BUG=libyuv:557

Review URL: https://codereview.chromium.org/1687713002 .
2016-02-09 17:14:29 -08:00
Henrik Kjellander
df8b930b78 Add linux_msan to default trybots
TBR=fbarchard@chromium.org

Review URL: https://codereview.chromium.org/1679123006 .
2016-02-09 21:36:11 +01:00