| Index: third_party/libwebp/enc/frame.c
|
| diff --git a/third_party/libwebp/enc/frame.c b/third_party/libwebp/enc/frame.c
|
| index cdf1dabfcf14ea8e4ccf750f91a7f9bc36f69ddb..5b7a40b9ad0b01ed6e52d7cfd5de68a6e71d1336 100644
|
| --- a/third_party/libwebp/enc/frame.c
|
| +++ b/third_party/libwebp/enc/frame.c
|
| @@ -14,8 +14,9 @@
|
| #include <string.h>
|
| #include <math.h>
|
|
|
| -#include "./vp8enci.h"
|
| #include "./cost.h"
|
| +#include "./vp8enci.h"
|
| +#include "../dsp/dsp.h"
|
| #include "../webp/format_constants.h" // RIFF constants
|
|
|
| #define SEGMENT_VISU 0
|
| @@ -81,11 +82,6 @@ static float ComputeNextQ(PassStats* const s) {
|
| //------------------------------------------------------------------------------
|
| // Tables for level coding
|
|
|
| -const uint8_t VP8EncBands[16 + 1] = {
|
| - 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7,
|
| - 0 // sentinel
|
| -};
|
| -
|
| const uint8_t VP8Cat3[] = { 173, 148, 140 };
|
| const uint8_t VP8Cat4[] = { 176, 155, 140, 135 };
|
| const uint8_t VP8Cat5[] = { 180, 157, 141, 134, 130 };
|
| @@ -96,7 +92,7 @@ const uint8_t VP8Cat6[] =
|
| // Reset the statistics about: number of skips, token proba, level cost,...
|
|
|
| static void ResetStats(VP8Encoder* const enc) {
|
| - VP8Proba* const proba = &enc->proba_;
|
| + VP8EncProba* const proba = &enc->proba_;
|
| VP8CalculateLevelCosts(proba);
|
| proba->nb_skip_ = 0;
|
| }
|
| @@ -112,7 +108,7 @@ static int CalcSkipProba(uint64_t nb, uint64_t total) {
|
|
|
| // Returns the bit-cost for coding the skip probability.
|
| static int FinalizeSkipProba(VP8Encoder* const enc) {
|
| - VP8Proba* const proba = &enc->proba_;
|
| + VP8EncProba* const proba = &enc->proba_;
|
| const int nb_mbs = enc->mb_w_ * enc->mb_h_;
|
| const int nb_events = proba->nb_skip_;
|
| int size;
|
| @@ -140,11 +136,11 @@ static int BranchCost(int nb, int total, int proba) {
|
| }
|
|
|
| static void ResetTokenStats(VP8Encoder* const enc) {
|
| - VP8Proba* const proba = &enc->proba_;
|
| + VP8EncProba* const proba = &enc->proba_;
|
| memset(proba->stats_, 0, sizeof(proba->stats_));
|
| }
|
|
|
| -static int FinalizeTokenProbas(VP8Proba* const proba) {
|
| +static int FinalizeTokenProbas(VP8EncProba* const proba) {
|
| int has_changed = 0;
|
| int size = 0;
|
| int t, b, c, p;
|
| @@ -476,9 +472,9 @@ static void StoreSSE(const VP8EncIterator* const it) {
|
| const uint8_t* const in = it->yuv_in_;
|
| const uint8_t* const out = it->yuv_out_;
|
| // Note: not totally accurate at boundary. And doesn't include in-loop filter.
|
| - enc->sse_[0] += VP8SSE16x16(in + Y_OFF, out + Y_OFF);
|
| - enc->sse_[1] += VP8SSE8x8(in + U_OFF, out + U_OFF);
|
| - enc->sse_[2] += VP8SSE8x8(in + V_OFF, out + V_OFF);
|
| + enc->sse_[0] += VP8SSE16x16(in + Y_OFF_ENC, out + Y_OFF_ENC);
|
| + enc->sse_[1] += VP8SSE8x8(in + U_OFF_ENC, out + U_OFF_ENC);
|
| + enc->sse_[2] += VP8SSE8x8(in + V_OFF_ENC, out + V_OFF_ENC);
|
| enc->sse_count_ += 16 * 16;
|
| }
|
|
|
| @@ -511,9 +507,9 @@ static void StoreSideInfo(const VP8EncIterator* const it) {
|
| }
|
| }
|
| #if SEGMENT_VISU // visualize segments and prediction modes
|
| - SetBlock(it->yuv_out_ + Y_OFF, mb->segment_ * 64, 16);
|
| - SetBlock(it->yuv_out_ + U_OFF, it->preds_[0] * 64, 8);
|
| - SetBlock(it->yuv_out_ + V_OFF, mb->uv_mode_ * 64, 8);
|
| + SetBlock(it->yuv_out_ + Y_OFF_ENC, mb->segment_ * 64, 16);
|
| + SetBlock(it->yuv_out_ + U_OFF_ENC, it->preds_[0] * 64, 8);
|
| + SetBlock(it->yuv_out_ + V_OFF_ENC, mb->uv_mode_ * 64, 8);
|
| #endif
|
| }
|
|
|
| @@ -743,7 +739,7 @@ int VP8EncTokenLoop(VP8Encoder* const enc) {
|
| int num_pass_left = enc->config_->pass;
|
| const int do_search = enc->do_search_;
|
| VP8EncIterator it;
|
| - VP8Proba* const proba = &enc->proba_;
|
| + VP8EncProba* const proba = &enc->proba_;
|
| const VP8RDLevel rd_opt = enc->rd_opt_level_;
|
| const uint64_t pixel_count = enc->mb_w_ * enc->mb_h_ * 384;
|
| PassStats stats;
|
|
|