From 122abdfec3124bfc92a2918a70ca8150eee68338 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Date: Sun, 14 Dec 2025 13:28:02 +0100 Subject: [PATCH] video/out/aspect: don't overflow intermediate values in scaling calc This fixes calculation of scaling bounds with extreme video zoom levels. Fixes: https://github.com/mpv-player/mpv/discussions/17123 --- video/out/aspect.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/video/out/aspect.c b/video/out/aspect.c index a1f4c9fd71..55c595096c 100644 --- a/video/out/aspect.c +++ b/video/out/aspect.c @@ -74,7 +74,7 @@ static void clamp_size(int size, int *start, int *end) } static void src_dst_split_scaling(int src_size, int dst_size, - int scaled_src_size, + int64_t scaled_src_size, float zoom, float align, float pan, float scale, bool recenter, int *src_start, int *src_end, @@ -95,8 +95,8 @@ static void src_dst_split_scaling(int src_size, int dst_size, *osd_margin_b = dst_size - *dst_end; // Clip to screen - int s_src = *src_end - *src_start; - int s_dst = *dst_end - *dst_start; + int64_t s_src = (int64_t)*src_end - *src_start; + int64_t s_dst = (int64_t)*dst_end - *dst_start; if (*dst_start < 0) { int border = -(*dst_start) * s_src / s_dst; *src_start += border;