| Index: third_party/libwebp/enc/cost.c
|
| diff --git a/third_party/libwebp/enc/cost.c b/third_party/libwebp/enc/cost.c
|
| index ae7fe0138843326c2d0fe6d5611527cb5eda84a8..87f89378a78d0907dc928ac2e653c3578eb21f8a 100644
|
| --- a/third_party/libwebp/enc/cost.c
|
| +++ b/third_party/libwebp/enc/cost.c
|
| @@ -281,18 +281,6 @@ int VP8GetCostUV(VP8EncIterator* const it, const VP8ModeScore* const rd) {
|
| //------------------------------------------------------------------------------
|
| // Recording of token probabilities.
|
|
|
| -// Record proba context used
|
| -static int Record(int bit, proba_t* const stats) {
|
| - proba_t p = *stats;
|
| - if (p >= 0xffff0000u) { // an overflow is inbound.
|
| - 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;
|
| -}
|
| -
|
| // We keep the table-free variant around for reference, in case.
|
| #define USE_LEVEL_CODE_TABLE
|
|
|
| @@ -303,31 +291,31 @@ int VP8RecordCoeffs(int ctx, const VP8Residual* const res) {
|
| // should be stats[VP8EncBands[n]], but it's equivalent for n=0 or 1
|
| proba_t* s = res->stats[n][ctx];
|
| if (res->last < 0) {
|
| - Record(0, s + 0);
|
| + VP8RecordStats(0, s + 0);
|
| return 0;
|
| }
|
| while (n <= res->last) {
|
| int v;
|
| - Record(1, s + 0); // order of record doesn't matter
|
| + VP8RecordStats(1, s + 0); // order of record doesn't matter
|
| while ((v = res->coeffs[n++]) == 0) {
|
| - Record(0, s + 1);
|
| + VP8RecordStats(0, s + 1);
|
| s = res->stats[VP8EncBands[n]][0];
|
| }
|
| - Record(1, s + 1);
|
| - if (!Record(2u < (unsigned int)(v + 1), s + 2)) { // v = -1 or 1
|
| + VP8RecordStats(1, s + 1);
|
| + if (!VP8RecordStats(2u < (unsigned int)(v + 1), s + 2)) { // v = -1 or 1
|
| s = res->stats[VP8EncBands[n]][1];
|
| } else {
|
| v = abs(v);
|
| #if !defined(USE_LEVEL_CODE_TABLE)
|
| - if (!Record(v > 4, s + 3)) {
|
| - if (Record(v != 2, s + 4))
|
| - Record(v == 4, s + 5);
|
| - } else if (!Record(v > 10, s + 6)) {
|
| - Record(v > 6, s + 7);
|
| - } else if (!Record((v >= 3 + (8 << 2)), s + 8)) {
|
| - Record((v >= 3 + (8 << 1)), s + 9);
|
| + if (!VP8RecordStats(v > 4, s + 3)) {
|
| + if (VP8RecordStats(v != 2, s + 4))
|
| + VP8RecordStats(v == 4, s + 5);
|
| + } else if (!VP8RecordStats(v > 10, s + 6)) {
|
| + VP8RecordStats(v > 6, s + 7);
|
| + } else if (!VP8RecordStats((v >= 3 + (8 << 2)), s + 8)) {
|
| + VP8RecordStats((v >= 3 + (8 << 1)), s + 9);
|
| } else {
|
| - Record((v >= 3 + (8 << 3)), s + 10);
|
| + VP8RecordStats((v >= 3 + (8 << 3)), s + 10);
|
| }
|
| #else
|
| if (v > MAX_VARIABLE_LEVEL) {
|
| @@ -340,14 +328,14 @@ int VP8RecordCoeffs(int ctx, const VP8Residual* const res) {
|
| int i;
|
| for (i = 0; (pattern >>= 1) != 0; ++i) {
|
| const int mask = 2 << i;
|
| - if (pattern & 1) Record(!!(bits & mask), s + 3 + i);
|
| + if (pattern & 1) VP8RecordStats(!!(bits & mask), s + 3 + i);
|
| }
|
| }
|
| #endif
|
| s = res->stats[VP8EncBands[n]][2];
|
| }
|
| }
|
| - if (n < 16) Record(0, s + 0);
|
| + if (n < 16) VP8RecordStats(0, s + 0);
|
| return 1;
|
| }
|
|
|
|
|