Frank Barchard 95b14b2446 RAWToJ400 faster version for ARM
- Unrolled to 16 pixels
- Take constants via structure, allowing different colorspace and channel order
- Use ADDHN to add 16.5 and take upper 8 bits of 16 bit values, narrowing to 8 bits
- clang-format applied, affecting mips code

On Cortex A510
Was RAWToJ400_Opt (1623 ms)
Now RAWToJ400_Opt (862 ms)

C   RAWToJ400_Opt (1627 ms)

Bug: b/220171611
Change-Id: I06a9baf9650ebe2802fb6ff6dfbd524e2c06ada0
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/3534023
Reviewed-by: Wan-Teh Chang <wtc@google.com>
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2022-03-18 07:22:36 +00:00
build_overrides Roll chromium_revision 64c8c30faa..eaac4f14d9 (824854:902913) 2021-07-19 17:22:35 +00:00
docs RAWToJNV21 function with 2 step conversion 2022-03-01 19:33:49 +00:00
include RAWToJ400 faster version for ARM 2022-03-18 07:22:36 +00:00
source RAWToJ400 faster version for ARM 2022-03-18 07:22:36 +00:00
tools_libyuv Update PRESUBMIT, cleanup_links and autoroller to py3 2022-02-24 13:34:14 +00:00
unit_test RAWToJ400 faster version for ARM 2022-03-18 07:22:36 +00:00
util Remove MMI support 2022-01-26 08:41:33 +00:00
.clang-format clang-format libyuv 2016-11-07 17:37:23 -08:00
.gitignore DetilePlane and unittest for NEON 2022-01-31 20:05:55 +00:00
.gn Roll chromium_revision 64c8c30faa..eaac4f14d9 (824854:902913) 2021-07-19 17:22:35 +00:00
.vpython remove swarming_client 2021-09-09 07:11:45 +00:00
Android.bp Remove MMI support 2022-01-26 08:41:33 +00:00
Android.mk Remove MMI support 2022-01-26 08:41:33 +00:00
AUTHORS Revert "Allow negative height when ConvertToI420/ARGB is called with NV12/NV21" 2018-06-01 00:19:40 +00:00
BUILD.gn Remove MMI support 2022-01-26 08:41:33 +00:00
cleanup_links.py Update PRESUBMIT, cleanup_links and autoroller to py3 2022-02-24 13:34:14 +00:00
CM_linux_packages.cmake Add installer builds to cmake for linux 2017-01-26 23:05:17 +00:00
CMakeLists.txt [libyuv] - Switch from gflags to absl/flags. 2021-02-19 08:54:30 +00:00
codereview.settings [infra] remove no longer supported git cl upload setting. 2021-04-28 12:47:52 +00:00
DEPS Roll chromium_revision eaac4f14d9..829c6df33d (902913:945687) 2021-12-21 13:20:14 +00:00
DIR_METADATA Move metadata in OWNERS files to DIR_METADATA files 2021-02-09 19:34:43 +00:00
download_vs_toolchain.py Update gclient instructions + environment 2022-02-24 15:19:23 +00:00
libyuv.gni libyuv:loongson optimize compare/row/scale/rotate files with mmi. 2018-07-20 22:53:04 +00:00
LICENSE Update Copyright notice to follow new chromium conventions. 2012-08-08 19:04:24 +00:00
linux.mk Remove MMI support 2022-01-26 08:41:33 +00:00
OWNERS Move metadata in OWNERS files to DIR_METADATA files 2021-02-09 19:34:43 +00:00
PATENTS LibYuv: Adding PATENT and LICENSE files 2011-10-25 16:15:49 +00:00
PRESUBMIT.py Update PRESUBMIT, cleanup_links and autoroller to py3 2022-02-24 13:34:14 +00:00
public.mk use unix line endings 2018-06-20 23:19:59 +00:00
pylintrc Use DEPS for all dependencies + add PRESUBMIT.py 2017-02-03 11:36:53 +00:00
README.chromium RAWToJ400 faster version for ARM 2022-03-18 07:22:36 +00:00
README.md README: fix doc links 2018-08-13 18:28:55 +00:00
winarm.mk NV12 Copy, include scale_uv.h 2020-12-08 18:54:16 +00: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 for compression.
  • Convert to RGB formats for rendering/effects.
  • Rotate by 90/180/270 degrees to adjust for mobile devices in portrait mode.
  • Optimized for SSSE3/AVX2 on x86/x64.
  • Optimized for Neon on Arm.
  • Optimized for MSA on Mips.

Development

See Getting started for instructions on how to get started developing.

You can also browse the docs directory for more documentation.