Add ARGBToI4xxMatrix variants

This was implemented by Gemini followed by manual review and some
tweaking for style. The 601 and JPEG constants are fully verified
against the existing non-matrix implementations. On x86 the C-only
versions appear to be about 25% slower than the optimized ones.

Bug: libyuv:42280902
Change-Id: Ia5b7cb499bad5c76faec53f36086ebb18f2b530f
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/7512030
Reviewed-by: Frank Barchard <fbarchard@chromium.org>
Reviewed-by: Wan-Teh Chang <wtc@google.com>
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
8 files changed
tree: 26a27d40693002b2e881a602139fa2625207a784
  1. build_overrides/
  2. docs/
  3. include/
  4. infra/
  5. riscv_script/
  6. source/
  7. tools_libyuv/
  8. unit_test/
  9. util/
  10. .clang-format
  11. .gitignore
  12. .gn
  13. .vpython3
  14. Android.bp
  15. Android.mk
  16. AUTHORS
  17. BUILD.gn
  18. CM_linux_packages.cmake
  19. CMakeLists.txt
  20. codereview.settings
  21. DEPS
  22. DIR_METADATA
  23. download_vs_toolchain.py
  24. libyuv.gni
  25. libyuv.gyp
  26. libyuv.gypi
  27. LICENSE
  28. linux.mk
  29. OWNERS
  30. PATENTS
  31. PRESUBMIT.py
  32. public.mk
  33. pylintrc
  34. README.chromium
  35. README.md
  36. winarm.mk
README.md

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/SVE2/SME on Arm.
  • Optimized for MSA on Mips.
  • Optimized for RVV on RISC-V.

Development

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

You can also browse the docs directory for more documentation.