VladimirTechMan 56eb5a4775 Allow enabling libyuv symbols visibility for shared library targets
When developing WebRTC applications with custom video sources, libyuv's
API is often the required part of the project. For that, application
developers can link with a separate standalone instance of libyuv.
However, it is even better to avoid that binary code duplication and
link against libyuv as a part compiled into the WebRTC library.

When building WebRTC as a static library target, the symbols from libyuv
are normally accessible to the linker without any extra actions. When
building WebRTC as a shared library, that does not work as the exported
symbols are those marked as visible, while libyuv is built with the
hidden visibility setting by default.

This patch adds an extra flag to enable switching the symbol visibility
to default when building shared library targets depending on libyuv in
WebRTC and Chromium projects. By default the flag is not enabled,
preserving the prior behaviour.

Bug: NONE
Change-Id: I48893cb9f54b1e1b49a34e14434e67f91d3e5e79
Reviewed-on: https://chromium-review.googlesource.com/827746
Reviewed-by: Frank Barchard <fbarchard@chromium.org>
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
2017-12-21 00:34:52 +00:00
build_overrides Remove deprecated macOS SDK overrides. 2017-07-20 22:26:41 +00:00
docs Remove Mips DSPR2 code 2017-12-14 18:22:16 +00:00
include Add AR30ToARGB function 2017-12-19 01:54:42 +00:00
infra/config Remove Rietveld CQ config. 2017-10-12 06:43:30 +00:00
source Add AR30ToARGB function 2017-12-19 01:54:42 +00:00
tools_libyuv kjellander -> phoglund in OWNERS 2017-10-09 11:40:28 +00:00
unit_test Reduce error in unittests to 0 for Intel 2017-12-20 18:16:38 +00:00
util Remove Mips DSPR2 code 2017-12-14 18:22:16 +00:00
.clang-format clang-format libyuv 2016-11-07 17:37:23 -08:00
.gitignore Rename convert to yuvconvert to avoid name clash with linux util 2017-04-06 18:58:42 +00:00
.gn Override compiler to c++11 2017-09-15 21:45:47 +00:00
.vpython Add psutil to vpython dependencies (used on builder bots) 2017-09-07 07:21:25 +00:00
all.gyp Android support 2013-11-21 19:57:10 +00:00
Android.bp Remove Mips DSPR2 code 2017-12-14 18:22:16 +00:00
Android.mk Remove Mips DSPR2 code 2017-12-14 18:22:16 +00:00
AUTHORS Adding AUTHORS file to libyuv 2011-11-01 20:44:21 +00:00
BUILD.gn Allow enabling libyuv symbols visibility for shared library targets 2017-12-21 00:34:52 +00:00
cleanup_links.py Use DEPS for all dependencies + add PRESUBMIT.py 2017-02-03 11:36:53 +00:00
CM_linux_packages.cmake Add installer builds to cmake for linux 2017-01-26 23:05:17 +00:00
CMakeLists.txt Rename convert to yuvconvert to avoid name clash with linux util 2017-04-06 18:58:42 +00:00
codereview.settings Make Gerrit the default for libyuv code reviews 2017-01-24 18:34:48 +00:00
DEPS Roll chromium_revision 9e319197e5..ff3b31782d (502732:503850) 2017-09-22 21:50:47 +00:00
download_vs_toolchain.py Roll chromium_revision 260824:262938 + fix binutils. Since it's not possible to have platform-specific hooks executing, binutils must be downloaded for all platforms in order for the download.py hook to execute properly on non-unix platforms. 2014-04-11 23:40:41 +00:00
gyp_libyuv Skip running GYP if GYP_CHROMIUM_NO_ACTION is set in environment 2016-04-08 14:01:29 +02:00
gyp_libyuv.py Use DEPS for all dependencies + add PRESUBMIT.py 2017-02-03 11:36:53 +00:00
libyuv_nacl.gyp NaCl/GYP: remove references to prep_toolchain from libyuv. prep_toolchain is now a no-op. 2015-04-22 17:42:21 +00:00
libyuv_test.gyp Remove Mips DSPR2 code 2017-12-14 18:22:16 +00:00
libyuv.gni Add MIPS SIMD Arch (MSA) optimized MirrorRow function 2016-09-22 16:12:22 -07:00
libyuv.gyp Remove Mips DSPR2 code 2017-12-14 18:22:16 +00:00
libyuv.gypi Remove Mips DSPR2 code 2017-12-14 18:22:16 +00:00
LICENSE Update Copyright notice to follow new chromium conventions. 2012-08-08 19:04:24 +00:00
LICENSE_THIRD_PARTY README.chromium license field for WebView and LICENSE_THIRD_PARTY to show files with special licenses. 2013-04-24 00:12:28 +00:00
linux.mk Remove Mips DSPR2 code 2017-12-14 18:22:16 +00:00
OWNERS Remove kjellander@ and torbjorng@ from OWNERS. 2017-09-26 18:48:09 +00:00
PATENTS LibYuv: Adding PATENT and LICENSE files 2011-10-25 16:15:49 +00:00
PRESUBMIT.py Use DEPS for all dependencies + add PRESUBMIT.py 2017-02-03 11:36:53 +00:00
public.mk Android.mk moved into libyuv to central support 2012-09-19 07:27:17 +00:00
pylintrc Use DEPS for all dependencies + add PRESUBMIT.py 2017-02-03 11:36:53 +00:00
README.chromium Add AR30ToARGB function 2017-12-19 01:54:42 +00:00
README.md Remove Mips DSPR2 code 2017-12-14 18:22:16 +00:00
winarm.mk Adds files and functions for rotate any, but does not hook them up to the caller. 2015-07-27 10:32:08 -07:00

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.