Sida Zhu ae48f8dd61 Fix same-width vertical point upsampling
ScalePlane's same-width vertical fast path used the endpoint-oriented
FixedDiv1 step for all upsampling. That stepping is appropriate for
bilinear interpolation, but not for point sampling, where source rows
should cover equally sized destination cells.

Use the same centered FixedDiv stepping as the generic point sampler.
Allow the point path to select the final source row while passing a
zero interpolation stride so row kernels cannot form a pointer beyond
it. Add 8-bit and 16-bit point regression coverage and verify that
bilinear upsampling remains unchanged.

Bug: 537818862
Change-Id: I7bee21b85913b31c146ecf7fe9f5f08608a8a17d
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/8264449
Reviewed-by: Wan-Teh Chang <wtc@google.com>
Commit-Queue: Wan-Teh Chang <wtc@google.com>
Reviewed-by: Frank Barchard <fbarchard@google.com>
2026-08-24 19:28:50 -07:00
..
compare_common.cc clang-tidy applied 2021-04-01 21:42:47 +00:00
compare_gcc.cc ARGBToJ444 use 256 for fixed point scale UV 2025-02-27 13:04:15 -08:00
compare_neon64.cc BGRAToI420 use BgraConstants for a direct conversion using AVX512BW 2026-06-08 12:21:47 -07:00
compare_neon.cc Apply format with no code changes 2025-02-24 23:57:01 -08:00
compare_win.cc BGRAToI420 use BgraConstants for a direct conversion using AVX512BW 2026-06-08 12:21:47 -07:00
compare.cc Don't coalesce rows if width*height would overflow 2026-05-29 11:57:47 -07:00
convert_argb.cc STORERGB24 macros for avx512 2026-08-18 14:18:47 -07:00
convert_from_argb.cc Revert "Add the ARGBToRGB565Row_SSE2() function back" 2026-08-17 14:43:10 -07:00
convert_from.cc Harden I21xToI420 against oversize heights 2026-08-08 12:11:18 -07:00
convert_jpeg.cc PlaneScale, UVScale and ARGBScale test 3x and 4x down sample. 2020-10-28 20:41:59 +00:00
convert_to_argb.cc Fix Coverity Control flow issues (DEADCODE) 2026-07-01 10:39:22 -07:00
convert_to_i420.cc Fix int negation overflow in ConvertToARGB/I420 2026-06-05 12:34:38 -07:00
convert.cc I410ToI420 use 1 step HalfWidthRow function for UV 2026-08-10 18:19:25 -07:00
cpu_id.cc add bmm detect and vdpphps in util/cpuid 2026-06-09 14:52:48 -07:00
mjpeg_decoder.cc Document why MJPEG databuf size cannot overflow 2026-08-06 12:25:21 -07:00
mjpeg_validate.cc Update to r1732 for more robust jpeg 2019-07-01 22:32:36 +00:00
planar_functions.cc SVE2 row functions needed for multipass image functions 2026-08-06 12:40:26 -07:00
rotate_any.cc Check rotate_any.cc and scale_any.cc for overflows 2026-08-24 11:40:53 -07:00
rotate_argb.cc SVE2 row functions needed for multipass image functions 2026-08-06 12:40:26 -07:00
rotate_common.cc Remove redundant #include <stddef.h> 2026-05-28 17:10:22 -07:00
rotate_gcc.cc Use ptrdiff_t for buffer offsets 2026-04-28 18:21:42 -07:00
rotate_lsx.cc [AArch64] Use full vectors in TransposeWx{8 => 16}_NEON 2024-05-21 07:46:42 +00:00
rotate_neon64.cc Fix integer overflow in multiplications of stride 2026-05-28 14:12:37 -07:00
rotate_neon.cc Fix integer overflow in multiplications of stride 2026-05-28 14:12:37 -07:00
rotate_sme.cc [AArch64] Re-enable SME only for Linux and new versions of Clang 2024-09-23 09:29:53 +00:00
rotate_win.cc BGRAToI420 use BgraConstants for a direct conversion using AVX512BW 2026-06-08 12:21:47 -07:00
rotate.cc SVE2 row functions needed for multipass image functions 2026-08-06 12:40:26 -07:00
row_any.cc STORERGB24 macros for avx512 2026-08-18 14:18:47 -07:00
row_common.cc Fix off by 32 rounding for I420ToAR30 2026-08-24 13:52:04 -07:00
row_gcc.cc Fix off by 32 rounding for I420ToAR30 2026-08-24 13:52:04 -07:00
row_lasx.cc Change all 1 use wrappers to matrix calls 2026-07-31 17:29:30 -07:00
row_lsx.cc Change all 1 use wrappers to matrix calls 2026-07-31 17:29:30 -07:00
row_neon64.cc Fix off by 32 rounding for I420ToAR30 2026-08-24 13:52:04 -07:00
row_neon.cc Fix undeclared register clobbers in x86 and NEON assembly 2026-08-20 20:31:22 -07:00
row_rvv.cc I410ToI420 use 1 step HalfWidthRow function for UV 2026-08-10 18:19:25 -07:00
row_sme.cc I410ToI420 use 1 step HalfWidthRow function for UV 2026-08-10 18:19:25 -07:00
row_sve.cc AArch64: Avoid INCP in {YUY2,UYVY}ToUVRow_SVE2 2026-08-19 11:25:07 -07:00
row_win.cc Remove four unused macros in row_win.cc 2026-08-24 19:27:06 -07:00
scale_any.cc Check rotate_any.cc and scale_any.cc for overflows 2026-08-24 11:40:53 -07:00
scale_argb.cc Scale*BilinearUp: Add invariants assertions and simplify loop 2026-08-13 14:20:11 -07:00
scale_common.cc Fix same-width vertical point upsampling 2026-08-24 19:28:50 -07:00
scale_gcc.cc Refactor multi-stage SSSE3 scalers into single asm blocks 2026-08-24 18:05:48 -07:00
scale_lsx.cc DetilePlane and unittest for NEON 2022-01-31 20:05:55 +00:00
scale_neon64.cc Apply format with no code changes 2025-02-24 23:57:01 -08:00
scale_neon.cc Apply format with no code changes 2025-02-24 23:57:01 -08:00
scale_rgb.cc Fix Coverity Control flow issues (DEADCODE) 2026-07-01 10:39:22 -07:00
scale_rvv.cc Replace RAWToY/RGB24ToY with RGBToYMatrix 2026-04-21 17:11:14 -07:00
scale_sme.cc Apply clang format 2025-01-02 13:31:20 -08:00
scale_uv.cc Scale*BilinearUp: Add invariants assertions and simplify loop 2026-08-13 14:20:11 -07:00
scale_win.cc BGRAToI420 use BgraConstants for a direct conversion using AVX512BW 2026-06-08 12:21:47 -07:00
scale.cc Fix same-width vertical point upsampling 2026-08-24 19:28:50 -07:00
test.sh Optimze ABGRToI420 for AVX2 2020-06-04 18:24:45 +00:00
video_common.cc Lint cleanup after C99 change CL 2018-01-24 19:16:03 +00:00