Index: third_party/libwebp/utils/rescaler.c |
diff --git a/third_party/libwebp/utils/rescaler.c b/third_party/libwebp/utils/rescaler.c |
index 00c9300bfbdd5009e88f87e45b9a59f158584884..d2278a52ffb86690c4b90e63c62f86b7414924f3 100644 |
--- a/third_party/libwebp/utils/rescaler.c |
+++ b/third_party/libwebp/utils/rescaler.c |
@@ -48,11 +48,15 @@ void WebPRescalerInit(WebPRescaler* const wrk, int src_width, int src_height, |
wrk->y_sub = wrk->y_expand ? y_sub - 1 : y_sub; |
wrk->y_accum = wrk->y_expand ? wrk->y_sub : wrk->y_add; |
if (!wrk->y_expand) { |
- // this is WEBP_RESCALER_FRAC(dst_height, x_add * y_add) without the cast. |
+ // This is WEBP_RESCALER_FRAC(dst_height, x_add * y_add) without the cast. |
+ // Its value is <= WEBP_RESCALER_ONE, because dst_height <= wrk->y_add, and |
+ // wrk->x_add >= 1; |
const uint64_t ratio = |
(uint64_t)dst_height * WEBP_RESCALER_ONE / (wrk->x_add * wrk->y_add); |
if (ratio != (uint32_t)ratio) { |
- // We can't represent the ratio with the current fixed-point precision. |
+ // When ratio == WEBP_RESCALER_ONE, we can't represent the ratio with the |
+ // current fixed-point precision. This happens when src_height == |
+ // wrk->y_add (which == src_height), and wrk->x_add == 1. |
// => We special-case fxy_scale = 0, in WebPRescalerExportRow(). |
wrk->fxy_scale = 0; |
} else { |