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. .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. LICENSE_THIRD_PARTY
  14. OWNERS
  15. PATENTS
  16. PRESUBMIT.py
  17. README.chromium
  18. README.md
  19. all.gyp
  20. build_overrides/
  21. cleanup_links.py
  22. codereview.settings
  23. docs/
  24. download_vs_toolchain.py
  25. gyp_libyuv
  26. gyp_libyuv.py
  27. include/
  28. infra/
  29. libyuv.gni
  30. libyuv.gyp
  31. libyuv.gypi
  32. libyuv_nacl.gyp
  33. libyuv_test.gyp
  34. linux.mk
  35. public.mk
  36. pylintrc
  37. source/
  38. tools_libyuv/
  39. unit_test/
  40. util/
  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.