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
build_overrides Empty overrides file for GN on Mac 2016-04-07 14:39:30 -07:00
chromium Enable building with Native Client. 2016-04-12 06:40:04 +02:00
docs document cpuid command line behavior 2016-06-08 10:38:09 -07:00
include document cpuid command line behavior 2016-06-08 10:38:09 -07:00
source neon64 use width int directly. 2016-06-08 10:26:53 -07:00
third_party/gflags Roll chromium_revision 1d144ca7f86..2a818f5413 (375480:395512) 2016-05-24 11:41:04 +02:00
tools Add new OWNERS and remove drover.properties. 2016-02-16 19:53:11 +01:00
unit_test document cpuid command line behavior 2016-06-08 10:38:09 -07:00
util rename MIPS_DSPR2 to DSPR2 for consistency 2016-02-05 14:49:54 -08:00
.gitignore Roll chromium_revision 1d144ca7f86..2a818f5413 (375480:395512) 2016-05-24 11:41:04 +02:00
.gn Add //build/config/BUILD.gn to exec whitelist for GN. 2016-04-06 11:23:28 -07:00
all.gyp Android support 2013-11-21 19:57:10 +00:00
Android.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
AUTHORS Adding AUTHORS file to libyuv 2011-11-01 20:44:21 +00:00
BUILD.gn Add //build/config/BUILD.gn to exec whitelist for GN. 2016-04-06 11:23:28 -07:00
CMakeLists.txt cmake move libyuv_unittest target into the if(TEST) condition 2016-04-01 16:15:34 -07:00
codereview.settings Change code review host to Chromium's Rietveld. 2015-09-06 06:49:01 +02:00
DEPS Roll chromium_revision 1d144ca7f86..2a818f5413 (375480:395512) 2016-05-24 11:41:04 +02: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 Minor fixes to gyp_libyuv.py 2014-03-28 19:38:05 +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 Roll chromium_revision 1d144ca7f86..2a818f5413 (375480:395512) 2016-05-24 11:41:04 +02:00
libyuv.gyp ARGBExtractAlpha 16 pixels at a time for ARM 2016-06-07 10:44:28 -07:00
libyuv.gypi merge neon source files back into single libyuv library 2015-10-07 21:16:51 -07: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 Add all library source files to linux.mk 2016-04-20 16:48:53 -07: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 PRESUBMIT: Add GN bots to default trybots 2016-04-11 22:07:55 +02:00
public.mk Android.mk moved into libyuv to central support 2012-09-19 07:27:17 +00:00
README.chromium document cpuid command line behavior 2016-06-08 10:38:09 -07:00
README.md Docs: Fix broken links from README.md 2016-03-15 17:38:14 -07:00
setup_links.py Roll chromium_revision 1d144ca7f86..2a818f5413 (375480:395512) 2016-05-24 11:41:04 +02:00
sync_chromium.py Enable building with Native Client. 2016-04-12 06:40:04 +02: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.