Optimze ABGRToI420 for AVX2

libyuv_test --gunit_filter=*ABGRToI420_Opt --libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=1000 --libyuv_flags=-1 --libyuv_cpu_info=-1

Was SSSE3 ABGRToI420_Opt (324 ms)
Now AVX2  ABGRToI420_Opt (253 ms)

Bug: b/155989084
Change-Id: I4f3831e29b379be758f9d3fcb244be088bb1ca3c
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/2229606
Reviewed-by: Miguel Casas <mcasas@chromium.org>
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
6 files changed
tree: 6f9ef752d9caae866e000f6eff1aac24e93ef7da
  1. build_overrides/
  2. docs/
  3. include/
  4. source/
  5. tools_libyuv/
  6. unit_test/
  7. util/
  8. .clang-format
  9. .gitignore
  10. .gn
  11. .vpython
  12. Android.bp
  13. Android.mk
  14. AUTHORS
  15. BUILD.gn
  16. cleanup_links.py
  17. CM_linux_packages.cmake
  18. CMakeLists.txt
  19. codereview.settings
  20. DEPS
  21. download_vs_toolchain.py
  22. libyuv.gni
  23. LICENSE
  24. linux.mk
  25. OWNERS
  26. PATENTS
  27. PRESUBMIT.py
  28. public.mk
  29. pylintrc
  30. README.chromium
  31. README.md
  32. 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 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.