Index: third_party/libwebp/enc/analysis.c |
diff --git a/third_party/libwebp/enc/analysis.c b/third_party/libwebp/enc/analysis.c |
index b55128fd4880631ea52d7e6a86233b0af4f473bd..136c331289092af1e301ff12bbec133577ef201d 100644 |
--- a/third_party/libwebp/enc/analysis.c |
+++ b/third_party/libwebp/enc/analysis.c |
@@ -307,6 +307,7 @@ static int MBAnalyzeBestIntra4Mode(VP8EncIterator* const it, |
static int MBAnalyzeBestUVMode(VP8EncIterator* const it) { |
int best_alpha = DEFAULT_ALPHA; |
+ int smallest_alpha = 0; |
int best_mode = 0; |
const int max_mode = MAX_UV_MODE; |
int mode; |
@@ -322,6 +323,10 @@ static int MBAnalyzeBestUVMode(VP8EncIterator* const it) { |
alpha = GetAlpha(&histo); |
if (IS_BETTER_ALPHA(alpha, best_alpha)) { |
best_alpha = alpha; |
+ } |
+ // The best prediction mode tends to be the one with the smallest alpha. |
+ if (mode == 0 || alpha < smallest_alpha) { |
+ smallest_alpha = alpha; |
best_mode = mode; |
} |
} |