Commit 4650de8cc1 for ffmpeg

commit 4650de8cc1c6b808799aae858e4e1ec1e369d06f
Author: Niklas Haas <git@haasn.dev>
Date:   Fri Aug 14 10:54:46 2026 +0200

    swscale/uops_tmpl: avoid overflow of intermediate linear products

    Multiplying e.g. uint16_t * uint16_t results in implicit promotion to
    signed integer, which might overflow (undefined behavior). Force an
    explicit cast to an unsigned intermediate type large enough to avoid
    promotion to integer. This shouldn't affect codegen because the
    intermediate result is cast right back to `pixel_t`.

    Sponsored-by: Sovereign Tech Fund
    Signed-off-by: Niklas Haas <git@haasn.dev>

diff --git a/libswscale/uops_tmpl.c b/libswscale/uops_tmpl.c
index c13ef8669d..4d08502609 100644
--- a/libswscale/uops_tmpl.c
+++ b/libswscale/uops_tmpl.c
@@ -30,6 +30,7 @@
 #  define PIXEL_TYPE SWS_PIXEL_F32
 #  define pixel_t    float
 #  define inter_t    float
+#  define uinter_t   float
 #  define vec3_t     v3f32_t
 #  define PX         F32
 #  define px         f32
@@ -38,6 +39,7 @@
 #  define PIXEL_SWAP av_bswap32
 #  define pixel_t    uint32_t
 #  define inter_t    int64_t
+#  define uinter_t   uint64_t
 #  define PX         U32
 #  define px         u32
 #elif BIT_DEPTH == 16
@@ -45,12 +47,14 @@
 #  define PIXEL_SWAP av_bswap16
 #  define pixel_t    uint16_t
 #  define inter_t    int64_t
+#  define uinter_t   uint64_t
 #  define PX         U16
 #  define px         u16
 #elif BIT_DEPTH == 8
 #  define PIXEL_MAX  0xFFu
 #  define pixel_t    uint8_t
 #  define inter_t    int32_t
+#  define uinter_t   uint32_t
 #  define PX         U8
 #  define px         u8
 #else
@@ -834,7 +838,7 @@ DECL_FUNC(linear, const SwsCompMask mask, const uint32_t one, const uint32_t zer
         const pixel_t ww = w[i];

 #define LIN_VAL(I, J, val) \
-    ((one & SWS_MASK(I, J)) ? (val) : c.m[I][J] * (val))
+    ((one & SWS_MASK(I, J)) ? (val) : (uinter_t) c.m[I][J] * (val))

 #define LIN_ROW(I, var) do {                                    \
     pixel_t tmp = (zero & SWS_MASK(I, 4)) ? 0 : c.k[I];         \
@@ -1017,6 +1021,7 @@ SWS_FOR_STRUCT(PX, LUT_3D, DECL_ENTRY, .setup = fn(setup_lut3d) )
 #undef PIXEL_SWAP
 #undef pixel_t
 #undef inter_t
+#undef uinter_t
 #undef vec3_t
 #undef PX
 #undef px