libyuv:loongson optimize compare/row/scale/rotate files with mmi.

Currently, libyuv supports MIPS SIMD Arch(MSA),
but libyuv does not supports MultiMedia Instruction(MMI)(such as loongson3a platform).

In order to improve performance of libyuv on loongson3a platform,
this provides optimize 98 functions with mmi.

BUG=libyuv:804

Change-Id: I8947626009efad769b3103a867363ece25d79629
Reviewed-on: https://chromium-review.googlesource.com/1122064
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
Reviewed-by: Frank Barchard <fbarchard@chromium.org>
33 files changed
tree: d22c41b2361d63169a0bfca4805b3b7990e5e420
  1. .clang-format
  2. .gitignore
  3. .gn
  4. .vpython
  5. AUTHORS
  6. Android.bp
  7. Android.mk
  8. BUILD.gn
  9. CM_linux_packages.cmake
  10. CMakeLists.txt
  11. DEPS
  12. LICENSE
  13. OWNERS
  14. PATENTS
  15. PRESUBMIT.py
  16. README.chromium
  17. README.md
  18. all.gyp
  19. build_overrides/
  20. cleanup_links.py
  21. codereview.settings
  22. docs/
  23. download_vs_toolchain.py
  24. gyp_libyuv
  25. gyp_libyuv.py
  26. include/
  27. infra/
  28. libyuv.gni
  29. libyuv.gyp
  30. libyuv.gypi
  31. libyuv_nacl.gyp
  32. libyuv_test.gyp
  33. linux.mk
  34. public.mk
  35. pylintrc
  36. source/
  37. tools_libyuv/
  38. unit_test/
  39. util/
  40. 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] 1 for instructions on how to get started developing.

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