H010ToAR30 for 10 bit bt.709 YUV to 30 bit RGB

This version of the H010ToAR30 provides a 3 step conversion
Convert16To8Row_AVX2
H420ToARGB_AVX2
ARGBToAR30_AVX2

Low level function added to convert 16 bit to 8 bit using multiply
to adjust 10 bit or other bit depths and then save the upper 16 bits.

Bug: libyuv:751
Test: LibYUVPlanarTest.Convert16To8Row_Opt unittest added
Change-Id: I9cc576fda8afa1003cb961d03e0e656e0b478f03
Reviewed-on: https://chromium-review.googlesource.com/783554
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
Reviewed-by: richard winterton <rrwinterton@gmail.com>
11 files changed
tree: e41ab5f39f413ae2be8a11cd006a5f5b0d224c94
  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.