This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit c80bfd962f246f53a6768b16ffe2c504ea5cb83b Author: Zuxy Meng <[email protected]> AuthorDate: Fri Sep 4 21:09:51 2026 -0700 Commit: Zuxy Meng <[email protected]> CommitDate: Thu Oct 1 17:49:31 2026 -0700 avcodec/arm|aarch64/h264dsp: Fix edge cases for weight Add/sub with saturation is used only on log2_denom > 1 path, but with log2_denom == 1 (block[x]*weight + offset << 1) can fall below S16_MIN. Use saturation in all paths for safety. This fixes the weight checkasm test for arm and aarch64 Signed-off-by: Zuxy Meng <[email protected]> --- libavcodec/aarch64/h264dsp_neon.S | 4 ++-- libavcodec/arm/h264dsp_neon.S | 4 ++-- tests/checkasm/h264dsp.c | 7 ------- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/libavcodec/aarch64/h264dsp_neon.S b/libavcodec/aarch64/h264dsp_neon.S index 723b692019..c09db164b6 100644 --- a/libavcodec/aarch64/h264dsp_neon.S +++ b/libavcodec/aarch64/h264dsp_neon.S @@ -810,9 +810,9 @@ function ff_weight_h264_pixels_\w\()_neon, export=1 dup v18.8h, w6 cmp w4, #0 b.lt 10f - weight_\w add + weight_\w sqadd 10: neg w4, w4 - weight_\w sub + weight_\w sqsub endfunc .endm diff --git a/libavcodec/arm/h264dsp_neon.S b/libavcodec/arm/h264dsp_neon.S index 5fed6848d8..975b61c8c0 100644 --- a/libavcodec/arm/h264dsp_neon.S +++ b/libavcodec/arm/h264dsp_neon.S @@ -549,9 +549,9 @@ function ff_weight_h264_pixels_\w\()_neon, export=1 vdup.16 q9, lr cmp r12, #0 blt 10f - weight_\w vadd.s16 + weight_\w vqadd.s16 10: rsb r12, r12, #0 - weight_\w vsub.s16 + weight_\w vqsub.s16 endfunc .endm diff --git a/tests/checkasm/h264dsp.c b/tests/checkasm/h264dsp.c index 30478f2956..a38ee32d9c 100644 --- a/tests/checkasm/h264dsp.c +++ b/tests/checkasm/h264dsp.c @@ -500,10 +500,6 @@ static void check_loop_filter_intra(void) } } -// neon fails at edge cases -#define H264_CHECK_WEIGHT (!ARCH_ARM && !ARCH_AARCH64) - -#if H264_CHECK_WEIGHT static void check_weight(void) { LOCAL_ALIGNED_16(uint8_t, dst, [32 * 32 * 2]); @@ -547,7 +543,6 @@ static void check_weight(void) } } } -#endif // only arch that can pass test #define H264_CHECK_BIWEIGHT ARCH_X86 @@ -634,10 +629,8 @@ void checkasm_check_h264dsp(void) check_loop_filter_intra(); report("loop_filter_intra"); -#if H264_CHECK_WEIGHT check_weight(); report("weight"); -#endif #if H264_CHECK_BIWEIGHT check_biweight(); -- To stop receiving notification emails like this one, please contact [email protected]. _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
