| Index: third_party/libwebp/enc/cost.h
|
| diff --git a/third_party/libwebp/enc/cost.h b/third_party/libwebp/enc/cost.h
|
| index 20960d6d74c0283688eefde24b3dae7dd62f57b1..ad7959feb41b4c084ed9e54d2f230b283be3c970 100644
|
| --- a/third_party/libwebp/enc/cost.h
|
| +++ b/third_party/libwebp/enc/cost.h
|
| @@ -41,6 +41,20 @@ void VP8InitResidual(int first, int coeff_type,
|
|
|
| int VP8RecordCoeffs(int ctx, const VP8Residual* const res);
|
|
|
| +// Record proba context used.
|
| +static WEBP_INLINE int VP8RecordStats(int bit, proba_t* const stats) {
|
| + proba_t p = *stats;
|
| + // An overflow is inbound. Note we handle this at 0xfffe0000u instead of
|
| + // 0xffff0000u to make sure p + 1u does not overflow.
|
| + if (p >= 0xfffe0000u) {
|
| + p = ((p + 1u) >> 1) & 0x7fff7fffu; // -> divide the stats by 2.
|
| + }
|
| + // record bit count (lower 16 bits) and increment total count (upper 16 bits).
|
| + p += 0x00010000u + bit;
|
| + *stats = p;
|
| + return bit;
|
| +}
|
| +
|
| // Cost of coding one event with probability 'proba'.
|
| static WEBP_INLINE int VP8BitCost(int bit, uint8_t proba) {
|
| return !bit ? VP8EntropyCost[proba] : VP8EntropyCost[255 - proba];
|
|
|