diff options
Diffstat (limited to 'third_party/libwebp/dsp/yuv.c')
-rw-r--r-- | third_party/libwebp/dsp/yuv.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/third_party/libwebp/dsp/yuv.c b/third_party/libwebp/dsp/yuv.c index 7f05f9a..f8988ba 100644 --- a/third_party/libwebp/dsp/yuv.c +++ b/third_party/libwebp/dsp/yuv.c @@ -15,7 +15,7 @@ extern "C" { #endif -enum { YUV_HALF = 1 << (YUV_FIX - 1) }; +#ifdef WEBP_YUV_USE_TABLE int16_t VP8kVToR[256], VP8kUToB[256]; int32_t VP8kVToG[256], VP8kUToG[256]; @@ -33,6 +33,7 @@ void VP8YUVInit(void) { if (done) { return; } +#ifndef USE_YUVj for (i = 0; i < 256; ++i) { VP8kVToR[i] = (89858 * (i - 128) + YUV_HALF) >> YUV_FIX; VP8kUToG[i] = -22014 * (i - 128) + YUV_HALF; @@ -44,9 +45,29 @@ void VP8YUVInit(void) { VP8kClip[i - YUV_RANGE_MIN] = clip(k, 255); VP8kClip4Bits[i - YUV_RANGE_MIN] = clip((k + 8) >> 4, 15); } +#else + for (i = 0; i < 256; ++i) { + VP8kVToR[i] = (91881 * (i - 128) + YUV_HALF) >> YUV_FIX; + VP8kUToG[i] = -22554 * (i - 128) + YUV_HALF; + VP8kVToG[i] = -46802 * (i - 128); + VP8kUToB[i] = (116130 * (i - 128) + YUV_HALF) >> YUV_FIX; + } + for (i = YUV_RANGE_MIN; i < YUV_RANGE_MAX; ++i) { + const int k = i; + VP8kClip[i - YUV_RANGE_MIN] = clip(k, 255); + VP8kClip4Bits[i - YUV_RANGE_MIN] = clip((k + 8) >> 4, 15); + } +#endif + done = 1; } +#else + +void VP8YUVInit(void) {} + +#endif // WEBP_YUV_USE_TABLE + #if defined(__cplusplus) || defined(c_plusplus) } // extern "C" #endif |