[x265] [PATCH 3/3] testbench: Fix pixel harness weight_sp function input value range
Gerda Zsejke More
gerdazsejke.more at arm.com
Wed Jul 9 11:48:58 UTC 2025
The existing unit tests assumes that the weight_sp function's input
data is in the range [SMIN, SMAX]. However running real encodings
show that values outside of this range can be input values.
Set the tested value range to [SHORT_MIN, SHORT_MAX].
Change-Id: If83bfacb4232dacf53dacbf52ee874a53415bd59
---
source/test/pixelharness.cpp | 9 ++++++---
source/test/pixelharness.h | 1 +
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/source/test/pixelharness.cpp b/source/test/pixelharness.cpp
index e37ae3cb7..c396623ef 100644
--- a/source/test/pixelharness.cpp
+++ b/source/test/pixelharness.cpp
@@ -39,6 +39,7 @@ PixelHarness::PixelHarness()
short_test_buff[0][i] = (rand() % (2 * SMAX + 1)) - SMAX - 1; // max(SHORT_MIN, min(rand(), SMAX));
short_test_buff1[0][i] = rand() & PIXEL_MAX; // For block copy only
short_test_buff2[0][i] = rand() % 16383; // for addAvg
+ short_test_buff3[0][i] = rand() % SHORT_MAX; // for weight_sp
int_test_buff[0][i] = rand() % SHORT_MAX;
ushort_test_buff[0][i] = rand() % ((1 << 16) - 1);
uchar_test_buff[0][i] = rand() % ((1 << 8) - 1);
@@ -48,6 +49,7 @@ PixelHarness::PixelHarness()
short_test_buff[1][i] = (int16_t)SMIN;
short_test_buff1[1][i] = PIXEL_MIN;
short_test_buff2[1][i] = -16384;
+ short_test_buff3[1][i] = SHORT_MIN;
int_test_buff[1][i] = SHORT_MIN;
ushort_test_buff[1][i] = PIXEL_MIN;
uchar_test_buff[1][i] = PIXEL_MIN;
@@ -58,6 +60,7 @@ PixelHarness::PixelHarness()
short_test_buff[2][i] = SMAX;
short_test_buff1[2][i] = PIXEL_MAX;
short_test_buff2[2][i] = 16383;
+ short_test_buff3[2][i] = SHORT_MAX;
int_test_buff[2][i] = SHORT_MAX;
ushort_test_buff[2][i] = ((1 << 16) - 1);
uchar_test_buff[2][i] = 255;
@@ -308,12 +311,12 @@ bool PixelHarness::check_weightp(weightp_sp_t ref, weightp_sp_t opt)
for (int i = 0; i < ITERS; i++)
{
int index = i % TEST_CASES;
- checked(opt, short_test_buff[index] + j, opt_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
- ref(short_test_buff[index] + j, ref_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
+ checked(opt, short_test_buff3[index] + j, opt_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
+ ref(short_test_buff3[index] + j, ref_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)))
{
- opt(short_test_buff[index] + j, opt_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
+ opt(short_test_buff3[index] + j, opt_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
return false;
}
diff --git a/source/test/pixelharness.h b/source/test/pixelharness.h
index 5dd354029..1067bf774 100644
--- a/source/test/pixelharness.h
+++ b/source/test/pixelharness.h
@@ -63,6 +63,7 @@ protected:
ALIGN_VAR_64(int16_t, short_test_buff[TEST_CASES][BUFFSIZE]);
ALIGN_VAR_64(int16_t, short_test_buff1[TEST_CASES][BUFFSIZE]);
ALIGN_VAR_64(int16_t, short_test_buff2[TEST_CASES][BUFFSIZE]);
+ ALIGN_VAR_64(int16_t, short_test_buff3[TEST_CASES][BUFFSIZE]);
ALIGN_VAR_64(int, int_test_buff[TEST_CASES][BUFFSIZE]);
ALIGN_VAR_64(uint16_t, ushort_test_buff[TEST_CASES][BUFFSIZE]);
ALIGN_VAR_64(uint8_t, uchar_test_buff[TEST_CASES][BUFFSIZE]);
--
2.39.5 (Apple Git-154)
-------------- next part --------------
>From ab57fd8df883cb73a464592738fef0da114f4719 Mon Sep 17 00:00:00 2001
Message-Id: <ab57fd8df883cb73a464592738fef0da114f4719.1752060897.git.gerdazsejke.more at arm.com>
In-Reply-To: <cover.1752060897.git.gerdazsejke.more at arm.com>
References: <cover.1752060897.git.gerdazsejke.more at arm.com>
From: Gerda Zsejke More <gerdazsejke.more at arm.com>
Date: Wed, 2 Jul 2025 09:53:47 +0200
Subject: [PATCH 3/3] testbench: Fix pixel harness weight_sp function input
value range
The existing unit tests assumes that the weight_sp function's input
data is in the range [SMIN, SMAX]. However running real encodings
show that values outside of this range can be input values.
Set the tested value range to [SHORT_MIN, SHORT_MAX].
Change-Id: If83bfacb4232dacf53dacbf52ee874a53415bd59
---
source/test/pixelharness.cpp | 9 ++++++---
source/test/pixelharness.h | 1 +
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/source/test/pixelharness.cpp b/source/test/pixelharness.cpp
index e37ae3cb7..c396623ef 100644
--- a/source/test/pixelharness.cpp
+++ b/source/test/pixelharness.cpp
@@ -39,6 +39,7 @@ PixelHarness::PixelHarness()
short_test_buff[0][i] = (rand() % (2 * SMAX + 1)) - SMAX - 1; // max(SHORT_MIN, min(rand(), SMAX));
short_test_buff1[0][i] = rand() & PIXEL_MAX; // For block copy only
short_test_buff2[0][i] = rand() % 16383; // for addAvg
+ short_test_buff3[0][i] = rand() % SHORT_MAX; // for weight_sp
int_test_buff[0][i] = rand() % SHORT_MAX;
ushort_test_buff[0][i] = rand() % ((1 << 16) - 1);
uchar_test_buff[0][i] = rand() % ((1 << 8) - 1);
@@ -48,6 +49,7 @@ PixelHarness::PixelHarness()
short_test_buff[1][i] = (int16_t)SMIN;
short_test_buff1[1][i] = PIXEL_MIN;
short_test_buff2[1][i] = -16384;
+ short_test_buff3[1][i] = SHORT_MIN;
int_test_buff[1][i] = SHORT_MIN;
ushort_test_buff[1][i] = PIXEL_MIN;
uchar_test_buff[1][i] = PIXEL_MIN;
@@ -58,6 +60,7 @@ PixelHarness::PixelHarness()
short_test_buff[2][i] = SMAX;
short_test_buff1[2][i] = PIXEL_MAX;
short_test_buff2[2][i] = 16383;
+ short_test_buff3[2][i] = SHORT_MAX;
int_test_buff[2][i] = SHORT_MAX;
ushort_test_buff[2][i] = ((1 << 16) - 1);
uchar_test_buff[2][i] = 255;
@@ -308,12 +311,12 @@ bool PixelHarness::check_weightp(weightp_sp_t ref, weightp_sp_t opt)
for (int i = 0; i < ITERS; i++)
{
int index = i % TEST_CASES;
- checked(opt, short_test_buff[index] + j, opt_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
- ref(short_test_buff[index] + j, ref_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
+ checked(opt, short_test_buff3[index] + j, opt_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
+ ref(short_test_buff3[index] + j, ref_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)))
{
- opt(short_test_buff[index] + j, opt_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
+ opt(short_test_buff3[index] + j, opt_dest, stride, stride + 1, width, height, w0, round << correction, shift + correction, offset);
return false;
}
diff --git a/source/test/pixelharness.h b/source/test/pixelharness.h
index 5dd354029..1067bf774 100644
--- a/source/test/pixelharness.h
+++ b/source/test/pixelharness.h
@@ -63,6 +63,7 @@ protected:
ALIGN_VAR_64(int16_t, short_test_buff[TEST_CASES][BUFFSIZE]);
ALIGN_VAR_64(int16_t, short_test_buff1[TEST_CASES][BUFFSIZE]);
ALIGN_VAR_64(int16_t, short_test_buff2[TEST_CASES][BUFFSIZE]);
+ ALIGN_VAR_64(int16_t, short_test_buff3[TEST_CASES][BUFFSIZE]);
ALIGN_VAR_64(int, int_test_buff[TEST_CASES][BUFFSIZE]);
ALIGN_VAR_64(uint16_t, ushort_test_buff[TEST_CASES][BUFFSIZE]);
ALIGN_VAR_64(uint8_t, uchar_test_buff[TEST_CASES][BUFFSIZE]);
--
2.39.5 (Apple Git-154)
More information about the x265-devel
mailing list