Frank Barchard d981495b42 Hamming Distance using 16 bit accumulators
Summing 16 bit hamming codes restricts the maximum length,
but saves an inner loop instruction.  The outer loop can sum the
values.

32 bit Neon
Now BenchmarkHammingDistance_Opt (78 ms)
Was BenchmarkHammingDistance_Opt (92 ms)

64 bit Neon
Now BenchmarkHammingDistance_Opt (85 ms)
Was BenchmarkHammingDistance_Opt (92 ms)

R=wangcheng@google.com
TBR=kjellander@chromium.org
BUG=libyuv:701
TEST=BenchmarkHammingDistance

Change-Id: Ie40f0eac2f3339c33b833b42af5d394b122066ae
Reviewed-on: https://chromium-review.googlesource.com/526932
Reviewed-by: Frank Barchard <fbarchard@google.com>
Reviewed-by: Cheng Wang <wangcheng@google.com>
Commit-Queue: Frank Barchard <fbarchard@google.com>
2017-06-07 23:23:24 +00:00
build_overrides Use DEPS for all dependencies + add PRESUBMIT.py 2017-02-03 11:36:53 +00:00
docs Rename convert to yuvconvert to avoid name clash with linux util 2017-04-06 18:58:42 +00:00
include Hamming Distance using 16 bit accumulators 2017-06-07 23:23:24 +00:00
infra/config Remove duplicated bot linux_msan in cq.cfg. 2017-06-01 17:58:16 +00:00
source Hamming Distance using 16 bit accumulators 2017-06-07 23:23:24 +00:00
tools_libyuv Update autoroller after FromImpl was removed from depot tools 2017-05-25 06:59:25 +00:00
unit_test ScaleDown odd functions adjust math so last pixel is half width source. 2017-06-06 01:37:26 +00:00
util lint warning fixes for CpuID 2017-05-25 22:00:17 +00:00
.clang-format clang-format libyuv 2016-11-07 17:37:23 -08:00
.gitignore Rename convert to yuvconvert to avoid name clash with linux util 2017-04-06 18:58:42 +00:00
.gn Add GN files that need exec_script to list for win64 clang-cl 2016-10-12 12:46:22 -07:00
all.gyp Android support 2013-11-21 19:57:10 +00:00
Android.mk Fix data races in libyuv::TestCpuFlag(). 2017-05-24 02:09:03 +00:00
AUTHORS Adding AUTHORS file to libyuv 2011-11-01 20:44:21 +00:00
BUILD.gn Fix data races in libyuv::TestCpuFlag(). 2017-05-24 02:09:03 +00:00
cleanup_links.py Use DEPS for all dependencies + add PRESUBMIT.py 2017-02-03 11:36:53 +00:00
CM_linux_packages.cmake Add installer builds to cmake for linux 2017-01-26 23:05:17 +00:00
CMakeLists.txt Rename convert to yuvconvert to avoid name clash with linux util 2017-04-06 18:58:42 +00:00
codereview.settings Make Gerrit the default for libyuv code reviews 2017-01-24 18:34:48 +00:00
DEPS Roll chromium_revision da7cc8ca4c..ce95e5d83f (465147:465389) 2017-04-18 22:40:59 +00:00
download_vs_toolchain.py Roll chromium_revision 260824:262938 + fix binutils. Since it's not possible to have platform-specific hooks executing, binutils must be downloaded for all platforms in order for the download.py hook to execute properly on non-unix platforms. 2014-04-11 23:40:41 +00:00
gyp_libyuv Skip running GYP if GYP_CHROMIUM_NO_ACTION is set in environment 2016-04-08 14:01:29 +02:00
gyp_libyuv.py Use DEPS for all dependencies + add PRESUBMIT.py 2017-02-03 11:36:53 +00:00
libyuv_nacl.gyp NaCl/GYP: remove references to prep_toolchain from libyuv. prep_toolchain is now a no-op. 2015-04-22 17:42:21 +00:00
libyuv_test.gyp Fix data races in libyuv::TestCpuFlag(). 2017-05-24 02:09:03 +00:00
libyuv.gni Add MIPS SIMD Arch (MSA) optimized MirrorRow function 2016-09-22 16:12:22 -07:00
libyuv.gyp Rename mips source files to dspr2. 2017-01-27 23:11:43 +00:00
libyuv.gypi Rename mips source files to dspr2. 2017-01-27 23:11:43 +00:00
LICENSE Update Copyright notice to follow new chromium conventions. 2012-08-08 19:04:24 +00:00
LICENSE_THIRD_PARTY README.chromium license field for WebView and LICENSE_THIRD_PARTY to show files with special licenses. 2013-04-24 00:12:28 +00:00
linux.mk Rename mips source files to dspr2. 2017-01-27 23:11:43 +00:00
OWNERS Add new OWNERS and remove drover.properties. 2016-02-16 19:53:11 +01:00
PATENTS LibYuv: Adding PATENT and LICENSE files 2011-10-25 16:15:49 +00:00
PRESUBMIT.py Use DEPS for all dependencies + add PRESUBMIT.py 2017-02-03 11:36:53 +00:00
public.mk Android.mk moved into libyuv to central support 2012-09-19 07:27:17 +00:00
pylintrc Use DEPS for all dependencies + add PRESUBMIT.py 2017-02-03 11:36:53 +00:00
README.chromium Hamming Distance using 16 bit accumulators 2017-06-07 23:23:24 +00:00
README.md Docs: Fix broken links from README.md 2016-03-15 17:38:14 -07:00
winarm.mk Adds files and functions for rotate any, but does not hook them up to the caller. 2015-07-27 10:32:08 -07:00

libyuv is an open source project that includes YUV scaling and conversion functionality.

  • Scale YUV to prepare content for compression, with point, bilinear or box filter.
  • Convert to YUV from webcam formats.
  • Convert from YUV to formats for rendering/effects.
  • Rotate by 90/180/270 degrees to adjust for mobile devices in portrait mode.
  • Optimized for SSE2/SSSE3/AVX2 on x86/x64.
  • Optimized for Neon on Arm.
  • Optimized for DSP R2 on Mips.

Development

See [Getting started] 1 for instructions on how to get started developing.

You can also browse the [docs directory] 2 for more documentation.