mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2026-11-06 05:17:42 +00:00
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>