| Index: third_party/libwebp/dsp/dec.c
|
| diff --git a/third_party/libwebp/dsp/dec.c b/third_party/libwebp/dsp/dec.c
|
| index a78720649b6d6b6265386eb0b1422d4a89b34db7..e92d693362211cf1f6fbc048667c34ed9cb5f768 100644
|
| --- a/third_party/libwebp/dsp/dec.c
|
| +++ b/third_party/libwebp/dsp/dec.c
|
| @@ -13,6 +13,7 @@
|
|
|
| #include "./dsp.h"
|
| #include "../dec/vp8i.h"
|
| +#include "../utils/utils.h"
|
|
|
| //------------------------------------------------------------------------------
|
|
|
| @@ -654,6 +655,23 @@ static void HFilter8i(uint8_t* u, uint8_t* v, int stride,
|
|
|
| //------------------------------------------------------------------------------
|
|
|
| +static void DitherCombine8x8(const uint8_t* dither, uint8_t* dst,
|
| + int dst_stride) {
|
| + int i, j;
|
| + for (j = 0; j < 8; ++j) {
|
| + for (i = 0; i < 8; ++i) {
|
| + const int delta0 = dither[i] - VP8_DITHER_AMP_CENTER;
|
| + const int delta1 =
|
| + (delta0 + VP8_DITHER_DESCALE_ROUNDER) >> VP8_DITHER_DESCALE;
|
| + dst[i] = clip_8b((int)dst[i] + delta1);
|
| + }
|
| + dst += dst_stride;
|
| + dither += 8;
|
| + }
|
| +}
|
| +
|
| +//------------------------------------------------------------------------------
|
| +
|
| VP8DecIdct2 VP8Transform;
|
| VP8DecIdct VP8TransformAC3;
|
| VP8DecIdct VP8TransformUV;
|
| @@ -673,11 +691,15 @@ VP8SimpleFilterFunc VP8SimpleHFilter16;
|
| VP8SimpleFilterFunc VP8SimpleVFilter16i;
|
| VP8SimpleFilterFunc VP8SimpleHFilter16i;
|
|
|
| +void (*VP8DitherCombine8x8)(const uint8_t* dither, uint8_t* dst,
|
| + int dst_stride);
|
| +
|
| extern void VP8DspInitSSE2(void);
|
| extern void VP8DspInitSSE41(void);
|
| extern void VP8DspInitNEON(void);
|
| extern void VP8DspInitMIPS32(void);
|
| extern void VP8DspInitMIPSdspR2(void);
|
| +extern void VP8DspInitMSA(void);
|
|
|
| static volatile VP8CPUInfo dec_last_cpuinfo_used =
|
| (VP8CPUInfo)&dec_last_cpuinfo_used;
|
| @@ -734,6 +756,8 @@ WEBP_TSAN_IGNORE_FUNCTION void VP8DspInit(void) {
|
| VP8PredChroma8[5] = DC8uvNoLeft;
|
| VP8PredChroma8[6] = DC8uvNoTopLeft;
|
|
|
| + VP8DitherCombine8x8 = DitherCombine8x8;
|
| +
|
| // If defined, use CPUInfo() to overwrite some pointers with faster versions.
|
| if (VP8GetCPUInfo != NULL) {
|
| #if defined(WEBP_USE_SSE2)
|
| @@ -761,6 +785,11 @@ WEBP_TSAN_IGNORE_FUNCTION void VP8DspInit(void) {
|
| VP8DspInitMIPSdspR2();
|
| }
|
| #endif
|
| +#if defined(WEBP_USE_MSA)
|
| + if (VP8GetCPUInfo(kMSA)) {
|
| + VP8DspInitMSA();
|
| + }
|
| +#endif
|
| }
|
| dec_last_cpuinfo_used = VP8GetCPUInfo;
|
| }
|
|
|