MultiplyRow_16_AVX2 for converting 10 bit YUV

When converting from lsb 10 bit formats to msb, the values
need to be shifted to the top 10 bits.  Using a multiply
allows the different numbers of bits to be copied:
// 128 = 9 bits
// 64 = 10 bits
// 16 = 12 bits
// 1 = 16 bits
Bug: libyuv:751
Test: LibYUVPlanarTest.MultiplyRow_16_Opt
Change-Id: I9cf226053a164baa14155215cb175065b1c4f169
Reviewed-on: https://chromium-review.googlesource.com/762951
Reviewed-by: richard winterton <rrwinterton@gmail.com>
Reviewed-by: Frank Barchard <fbarchard@google.com>
Commit-Queue: Frank Barchard <fbarchard@google.com>
4 files changed
tree: dd63d077d5453719ff422a4adcff1275331c5f5f
  1. build_overrides/
  2. docs/
  3. include/
  4. infra/
  5. source/
  6. tools_libyuv/
  7. unit_test/
  8. util/
  9. .clang-format
  10. .gitignore
  11. .gn
  12. .vpython
  13. all.gyp
  14. Android.bp
  15. Android.mk
  16. AUTHORS
  17. BUILD.gn
  18. cleanup_links.py
  19. CM_linux_packages.cmake
  20. CMakeLists.txt
  21. codereview.settings
  22. DEPS
  23. download_vs_toolchain.py
  24. gyp_libyuv
  25. gyp_libyuv.py
  26. libyuv.gni
  27. libyuv.gyp
  28. libyuv.gypi
  29. libyuv_nacl.gyp
  30. libyuv_test.gyp
  31. LICENSE
  32. LICENSE_THIRD_PARTY
  33. linux.mk
  34. OWNERS
  35. PATENTS
  36. PRESUBMIT.py
  37. public.mk
  38. pylintrc
  39. README.chromium
  40. README.md
  41. 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.
  • 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.