Add NV12ToNV24 and NV16ToNV24

These are bi-planar convert functions to scale UV plane to Y plane's size using (bi)linear filter.

libyuv_unittest --gtest_filter=*ToNV24*

R=fbarchard@chromium.org

Change-Id: I3d98f833feeef00af3c903ac9ad0e41bdcbcb51f
Bug: libyuv:872
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/2682152
Reviewed-by: Frank Barchard <fbarchard@chromium.org>
13 files changed
tree: faf0b61cb593a00f5c410e89b42fc51cec65de8a
  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.