diff options
author | fbarchard@chromium.org <fbarchard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-07 14:51:36 +0000 |
---|---|---|
committer | fbarchard@chromium.org <fbarchard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-07 14:51:36 +0000 |
commit | 563fccc387f4dd8cd6b51cc4306b757a9fc3a3a1 (patch) | |
tree | 37f5e962cccaf37c1a5d3c060d0fe671d97ded86 /third_party/libwebp/yuv.c | |
parent | a6fa3fc2ebad1aa0f3c24a335f483df005561ed6 (diff) | |
download | chromium_src-563fccc387f4dd8cd6b51cc4306b757a9fc3a3a1.zip chromium_src-563fccc387f4dd8cd6b51cc4306b757a9fc3a3a1.tar.gz chromium_src-563fccc387f4dd8cd6b51cc4306b757a9fc3a3a1.tar.bz2 |
Add WebP library to Chromium
BUG=58225
TEST=library buildable on all platforms.
Review URL: http://codereview.chromium.org/3614010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61787 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party/libwebp/yuv.c')
-rw-r--r-- | third_party/libwebp/yuv.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/third_party/libwebp/yuv.c b/third_party/libwebp/yuv.c new file mode 100644 index 0000000..32927fb --- /dev/null +++ b/third_party/libwebp/yuv.c @@ -0,0 +1,45 @@ +// Copyright 2010 Google Inc. +// +// This code is licensed under the same terms as WebM: +// Software License Agreement: http://www.webmproject.org/license/software/ +// Additional IP Rights Grant: http://www.webmproject.org/license/additional/ +// ----------------------------------------------------------------------------- +// +// YUV->RGB conversion function +// +// Author: Skal (pascal.massimino@gmail.com) + +#include "yuv.h" + +#if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +#endif + +enum { YUV_HALF = 1 << (YUV_FIX - 1) }; + +int16_t VP8kVToR[256], VP8kUToB[256]; +int32_t VP8kVToG[256], VP8kUToG[256]; +uint8_t VP8kClip[YUV_RANGE_MAX - YUV_RANGE_MIN]; + +static int done = 0; + +void VP8YUVInit() { + if (done) { + return; + } + for (int i = 0; i < 256; ++i) { + VP8kVToR[i] = (89858 * (i - 128) + YUV_HALF) >> YUV_FIX; + VP8kUToG[i] = -22014 * (i - 128) + YUV_HALF; + VP8kVToG[i] = -45773 * (i - 128); + VP8kUToB[i] = (113618 * (i - 128) + YUV_HALF) >> YUV_FIX; + } + for (int i = YUV_RANGE_MIN; i < YUV_RANGE_MAX; ++i) { + const int j = ((i - 16) * 76283 + YUV_HALF) >> YUV_FIX; + VP8kClip[i - YUV_RANGE_MIN] = (j < 0) ? 0 : (j > 255) ? 255 : j; + } + done = 1; +} + +#if defined(__cplusplus) || defined(c_plusplus) +} // extern "C" +#endif |