Index: third_party/libwebp/dsp/yuv.c |
diff --git a/third_party/libwebp/dsp/yuv.c b/third_party/libwebp/dsp/yuv.c |
index 7f05f9a3aa440ea658cc0f6dac80ffffc488e7d4..f8988bae118a3776b445966f4756bcc604893f12 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 |