Commit dace243da8 for ffmpeg

commit dace243da83ff60c8c21026f99d8239d0458fc47
Author: Greg Falcon <gfalcon@google.com>
Date:   Tue Oct 27 12:58:57 2026 -0400

    swscale/aarch64: fix signed load in yuv2planeX_10

    The horizontal scaler intermediate buffer holds signed 16-bit samples
    that can be negative when scaling with filters that have negative lobes
    (such as bicubic). The 16-pixel and 8-pixel NEON vector loops in
    ff_yuv2planeX_10_neon treat src as signed int16_t via smlal, but the
    scalar tail loop for remaining (dstW % 8) pixels used unsigned ldrh
    before sxtw, interpreting negative intermediate values as large positive
    values around 65536 and saturating output pixels.

    Use ldrsh instead of ldrh so negative intermediate samples are properly
    sign-extended in the scalar tail loop.

    Signed-off-by: Marvin Scholz <epirat07@gmail.com>

diff --git a/libswscale/aarch64/output.S b/libswscale/aarch64/output.S
index a650d72f54..2e559ba1e5 100644
--- a/libswscale/aarch64/output.S
+++ b/libswscale/aarch64/output.S
@@ -165,7 +165,7 @@ function ff_yuv2planeX_10_neon, export=1
         ldr             x14, [x12], #8                  // Load src pointer
         ldrsh           w15, [x13], #2                  // Load filter coefficient
         add             x14, x14, x7, lsl #1            // Add pixel offset
-        ldrh            w16, [x14]
+        ldrsh           w16, [x14]

         sxtw            x16, w16
         sxtw            x15, w15