Commit 91197c6f1c for aom
commit 91197c6f1c9eb50831113c92571c9688b865730e
Author: Lin Zheng <linzhen@google.com>
Date: Wed Sep 9 23:29:29 2026 +0000
Use correct VMAF Gussian blur filter in the unit test
In commit 8e7b6a567d, the VmafPreprocessing unit test introduced
an 8-tap kGaussFilter with a positive tap 0, and NEON_I8MM and SVE2
triggered an underflow in the 8-tap horizontal i8mm kernel (which
assumes negative tap 0).
The actual filter used by tune vmaf mode has an zero taps 0 and 7, so we
update kGaussFilter in the VmafPreprocessing unit test to match the real
filter in tune_vmaf.c, which allows NEON_I8MM and SVE2 to take the
valid 6-tap convolution path and pass.
Also allocate 9 elements with 16-byte alignment matching gauss_filter
in tune_vmaf.c to avoid global-buffer-overflow in prepare_coeffs_6t().
Bug: 558679217
Change-Id: Ic00d31e5e56fbaee2854f819728358b77444e2b4
diff --git a/test/av1_convolve_test.cc b/test/av1_convolve_test.cc
index bbc80152c7..4b444bdff0 100644
--- a/test/av1_convolve_test.cc
+++ b/test/av1_convolve_test.cc
@@ -1378,7 +1378,10 @@ class AV1Convolve2DTest : public AV1ConvolveTest<convolve_2d_func> {
void TestConvolveVmaf() {
// 8-tap Gaussian blur filter used by tune=vmaf_with_preprocessing
// in av1/encoder/tune_vmaf.c.
- static const int16_t kGaussFilter[8] = { 2, 8, 24, 60, 24, 8, 2, 0 };
+ // The array is of size 9 to allow passing kGaussFilter + 1 to
+ // _mm_loadu_si128() in prepare_coeffs_6t().
+ DECLARE_ALIGNED(16, static const int16_t,
+ kGaussFilter[9]) = { 0, 8, 30, 52, 30, 8, 0, 0, 0 };
const InterpFilterParams filter_params = { kGaussFilter, 8,
EIGHTTAP_REGULAR };
const int width = GetParam().Block().Width();
@@ -1696,7 +1699,10 @@ class AV1Convolve2DHighbdTest
private:
void TestConvolveVmaf() {
- static const int16_t kGaussFilter[8] = { 2, 8, 24, 60, 24, 8, 2, 0 };
+ // The array is of size 9 to allow passing kGaussFilter + 1 to
+ // _mm_loadu_si128() in prepare_coeffs_6t().
+ DECLARE_ALIGNED(16, static const int16_t,
+ kGaussFilter[9]) = { 0, 8, 30, 52, 30, 8, 0, 0, 0 };
const InterpFilterParams filter_params = { kGaussFilter, 8,
EIGHTTAP_REGULAR };
const int width = GetParam().Block().Width();