mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2026-10-28 18:07:12 +08:00
1. Fix TestCpuFlag(A | B) multi-bit checks in AYUVToNV12, AYUVToNV21,
NV12ToRGB24Matrix, RAWToRGBARow, MergeRGBRow, and MergeXR30Row so
that all required ISA flags are verified (== (A | B)) instead of
matching when only one flag is present.
2. Fix 2-byte heap buffer overflow on odd widths in
I422ToARGB1555Row_SVE_SC and I422ToARGB4444Row_SVE_SC by replacing
st1h on interleaved lanes with trn1/trn2 + st2b under per-pixel byte
predicates.
3. Fix ARGBPolynomialRow_SSE2 clamping outputs to <= 127 (packssdw
before packuswb instead of double packuswb) and add missing
vzeroupper to SplitRGBRow_AVX2.
4. Fix AR64ShuffleRow_C processing only half the row (loop bound width
instead of width / 2).
5. Fix negative-height crashes and orientation errors in
ConvertFromI420, SplitARGBPlane (when dst_a == NULL), I422Rotate,
I010Rotate, and I210Rotate.
6. Fix signed 16.16 fixed-point coordinate handling for negative x/dx
in ScaleFilterCols_NEON (asr + 64-bit sign-extended x64/dx64) and
ScaleAddCols1_16_C (x >>= 16).
7. Fix ConvertToARGB odd crop_x UV alignment for NV12/NV21, src_u
offset calculation on odd sample widths for I420/YV12/J420/H420/U420,
and FOURCC_U422 BT.2020 matrix dispatch (U422ToARGB).
8. Remove dead 14-instruction block before loop label 1: in
ScaleRowUp2_Bilinear_16_SSE2.
9. Fix SIMD feature macros, dead dispatches, and SVE2 loop tail
branches:
- Define HAS_SCALECOLSUP2_SSE2 in scale.cc for 32-bit x86.
- Guard TransposeWx4_32_SVE2 in rotate_argb.cc with
HAS_TRANSPOSEWX4_32_SVE2.
- Restrict HAS_UYVYTOARGBROW_SME and HAS_SCALEUVROWDOWN2_SME to
Clang >= 20 to match their implementations.
- Add AB64ToARGBRow_Any_NEON/SSE2/AVX2/AVX512BW wrappers so unaligned
widths use SIMD + C tail.
- Remove duplicate macro definitions in include/libyuv/row.h.
- Replace b.lt 2f / b.ge 1b with b.gt 1b in SVE2 row loops so one
redundant tail iteration is not executed when width % vl == 0.
R=rrwinterton@gmail.com
Bug: libyuv:574714081, b/574714081
Test: out/Release/libyuv_unittest && out/asan/libyuv_unittest
Change-Id: Iec3ae5c58d52bee3ef13cf9b765ac84b733aa576
|
||
|---|---|---|
| .. | ||
| compare_common.cc | ||
| compare_gcc.cc | ||
| compare_neon64.cc | ||
| compare_neon.cc | ||
| compare_wasm.cc | ||
| compare_win.cc | ||
| compare.cc | ||
| convert_argb.cc | ||
| convert_from_argb.cc | ||
| convert_from.cc | ||
| convert_jpeg.cc | ||
| convert_to_argb.cc | ||
| convert_to_i420.cc | ||
| convert.cc | ||
| cpu_id.cc | ||
| mjpeg_decoder.cc | ||
| mjpeg_validate.cc | ||
| planar_functions.cc | ||
| rotate_any.cc | ||
| rotate_argb.cc | ||
| rotate_common.cc | ||
| rotate_gcc.cc | ||
| rotate_lasx.cc | ||
| rotate_lsx.cc | ||
| rotate_neon64.cc | ||
| rotate_neon.cc | ||
| rotate_rvv.cc | ||
| rotate_sme.cc | ||
| rotate_sve.cc | ||
| rotate_wasm.cc | ||
| rotate_win.cc | ||
| rotate.cc | ||
| row_any.cc | ||
| row_common.cc | ||
| row_gcc.cc | ||
| row_lasx.cc | ||
| row_lsx.cc | ||
| row_neon64.cc | ||
| row_neon.cc | ||
| row_rvv.cc | ||
| row_sme.cc | ||
| row_sve.cc | ||
| row_wasm.cc | ||
| row_win.cc | ||
| scale_any.cc | ||
| scale_argb.cc | ||
| scale_common.cc | ||
| scale_gcc.cc | ||
| scale_lsx.cc | ||
| scale_neon64.cc | ||
| scale_neon.cc | ||
| scale_rgb.cc | ||
| scale_rvv.cc | ||
| scale_sme.cc | ||
| scale_uv.cc | ||
| scale_wasm.cc | ||
| scale_win.cc | ||
| scale.cc | ||
| test.sh | ||
| video_common.cc | ||