aboutsummaryrefslogtreecommitdiff
path: root/unit_test
diff options
context:
space:
mode:
authorFrank Barchard <fbarchard@google.com>2020-05-05 11:16:59 -0700
committerCommit Bot <commit-bot@chromium.org>2020-05-06 22:24:55 +0000
commit0b8bb60f2e489b239ae75840554f592433900edb (patch)
treeb89d313f28beec22b13959020f96d5d036b0de8f /unit_test
parent7a61759f78e37113221cfe7c40c522aa505280af (diff)
downloadlibyuv-0b8bb60f2e489b239ae75840554f592433900edb.tar.gz
ARGBToI420 C version match SIMD
Bug: libyuv:447 Change-Id: Iafb28cf635b355837caf41c26baee665642f4f95 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/2181779 Reviewed-by: richard winterton <rrwinterton@gmail.com> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
Diffstat (limited to 'unit_test')
-rw-r--r--unit_test/convert_test.cc43
-rw-r--r--unit_test/planar_test.cc15
2 files changed, 26 insertions, 32 deletions
diff --git a/unit_test/convert_test.cc b/unit_test/convert_test.cc
index 323f8d22..5c95d931 100644
--- a/unit_test/convert_test.cc
+++ b/unit_test/convert_test.cc
@@ -32,8 +32,9 @@
#endif
#if defined(__arm__) || defined(__aarch64__)
-// arm version subsamples by summing 4 pixels then multiplying by matrix with
-// 4x smaller coefficients which are rounded to nearest integer.
+// arm version subsamples by summing 4 pixels, rounding divide by 2, then
+// multiplying by matrix with 2x smaller coefficients which are rounded
+// to nearest integer.
#define ARM_YUV_ERROR 4
#else
#define ARM_YUV_ERROR 0
@@ -246,7 +247,7 @@ TESTPLANARTOP(H420, uint8_t, 1, 2, 2, H010, uint16_t, 2, 2, 2)
} \
} \
} \
- EXPECT_LE(max_diff, 3); \
+ EXPECT_LE(max_diff, 0); \
for (int i = 0; i < SUBSAMPLE(kHeight, SUBSAMP_Y); ++i) { \
for (int j = 0; j < SUBSAMPLE(kWidth, SUBSAMP_X); ++j) { \
int abs_diff = abs( \
@@ -1008,30 +1009,28 @@ TESTBIPLANARTOB(NV21, 2, 2, YUV24, RAW, 3, 2)
TESTATOPLANARI(FMT_A, BPP_A, YALIGN, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
benchmark_width_, DIFF, _Opt, +, 0)
-TESTATOPLANAR(ABGR, 4, 1, I420, 2, 2, 4)
-TESTATOPLANAR(ARGB, 4, 1, I420, 2, 2, 4)
-TESTATOPLANAR(ARGB, 4, 1, I422, 2, 1, 2)
-TESTATOPLANAR(ARGB, 4, 1, I444, 1, 1, 2)
+TESTATOPLANAR(ABGR, 4, 1, I420, 2, 2, 0)
+TESTATOPLANAR(ARGB, 4, 1, I420, 2, 2, 0)
+TESTATOPLANAR(ARGB, 4, 1, I422, 2, 1, 0)
+TESTATOPLANAR(ARGB, 4, 1, I444, 1, 1, 0)
TESTATOPLANAR(ARGB, 4, 1, J420, 2, 2, ARM_YUV_ERROR)
TESTATOPLANAR(ARGB, 4, 1, J422, 2, 1, ARM_YUV_ERROR)
#ifdef INTEL_TEST
TESTATOPLANAR(ARGB1555, 2, 1, I420, 2, 2, 15)
TESTATOPLANAR(ARGB4444, 2, 1, I420, 2, 2, 17)
-#endif
-TESTATOPLANAR(BGRA, 4, 1, I420, 2, 2, 4)
-TESTATOPLANAR(I400, 1, 1, I420, 2, 2, 2)
-TESTATOPLANAR(J400, 1, 1, J420, 2, 2, 2)
-TESTATOPLANAR(RAW, 3, 1, I420, 2, 2, 4)
-TESTATOPLANAR(RGB24, 3, 1, I420, 2, 2, 4)
-TESTATOPLANAR(RGB24, 3, 1, J420, 2, 2, ARM_YUV_ERROR)
-#ifdef INTEL_TEST
TESTATOPLANAR(RGB565, 2, 1, I420, 2, 2, 5)
#endif
-TESTATOPLANAR(RGBA, 4, 1, I420, 2, 2, 4)
-TESTATOPLANAR(UYVY, 2, 1, I420, 2, 2, 2)
-TESTATOPLANAR(UYVY, 2, 1, I422, 2, 1, 2)
-TESTATOPLANAR(YUY2, 2, 1, I420, 2, 2, 2)
-TESTATOPLANAR(YUY2, 2, 1, I422, 2, 1, 2)
+TESTATOPLANAR(BGRA, 4, 1, I420, 2, 2, 0)
+TESTATOPLANAR(I400, 1, 1, I420, 2, 2, 0)
+TESTATOPLANAR(J400, 1, 1, J420, 2, 2, 0)
+TESTATOPLANAR(RAW, 3, 1, I420, 2, 2, 0)
+TESTATOPLANAR(RGB24, 3, 1, I420, 2, 2, 0)
+TESTATOPLANAR(RGB24, 3, 1, J420, 2, 2, ARM_YUV_ERROR)
+TESTATOPLANAR(RGBA, 4, 1, I420, 2, 2, 0)
+TESTATOPLANAR(UYVY, 2, 1, I420, 2, 2, 0)
+TESTATOPLANAR(UYVY, 2, 1, I422, 2, 1, 0)
+TESTATOPLANAR(YUY2, 2, 1, I420, 2, 2, 0)
+TESTATOPLANAR(YUY2, 2, 1, I422, 2, 1, 0)
#define TESTATOBIPLANARI(FMT_A, SUB_A, BPP_A, FMT_PLANAR, SUBSAMP_X, \
SUBSAMP_Y, W1280, N, NEG, OFF) \
@@ -1072,7 +1071,7 @@ TESTATOPLANAR(YUY2, 2, 1, I422, 2, 1, 2)
} \
} \
} \
- EXPECT_LE(max_diff, 4); \
+ EXPECT_LE(max_diff, 0); \
for (int i = 0; i < SUBSAMPLE(kHeight, SUBSAMP_Y); ++i) { \
for (int j = 0; j < kStrideUV * 2; ++j) { \
int abs_diff = \
@@ -1083,7 +1082,7 @@ TESTATOPLANAR(YUY2, 2, 1, I422, 2, 1, 2)
} \
} \
} \
- EXPECT_LE(max_diff, 4); \
+ EXPECT_LE(max_diff, 0); \
free_aligned_buffer_page_end(dst_y_c); \
free_aligned_buffer_page_end(dst_uv_c); \
free_aligned_buffer_page_end(dst_y_opt); \
diff --git a/unit_test/planar_test.cc b/unit_test/planar_test.cc
index 50bca4e4..736e478a 100644
--- a/unit_test/planar_test.cc
+++ b/unit_test/planar_test.cc
@@ -3512,7 +3512,6 @@ TEST_F(LibYUVPlanarTest, TestGaussPlane_F32) {
}
TEST_F(LibYUVPlanarTest, HalfMergeUVPlane_Opt) {
- // Round count up to multiple of 16
int dst_width = (benchmark_width_ + 1) / 2;
int dst_height = (benchmark_height_ + 1) / 2;
align_buffer_page_end(src_pixels_u, benchmark_width_ * benchmark_height_);
@@ -3529,15 +3528,11 @@ TEST_F(LibYUVPlanarTest, HalfMergeUVPlane_Opt) {
MemRandomize(dst_pixels_uv_opt, dst_width * 2 * dst_height);
MemRandomize(dst_pixels_uv_c, dst_width * 2 * dst_height);
- ScalePlane(src_pixels_u, benchmark_width_, benchmark_width_,
- benchmark_height_,
-
- tmp_pixels_u, dst_width, dst_width, dst_height, kFilterBilinear);
- ScalePlane(src_pixels_v, benchmark_width_, benchmark_width_,
- benchmark_height_, tmp_pixels_v, dst_width, dst_width, dst_height,
- kFilterBilinear);
- MergeUVPlane(tmp_pixels_u, dst_width, tmp_pixels_v, dst_width,
- dst_pixels_uv_c, dst_width * 2, dst_width, dst_height);
+ MaskCpuFlags(disable_cpu_flags_);
+ HalfMergeUVPlane(src_pixels_u, benchmark_width_, src_pixels_v,
+ benchmark_width_, dst_pixels_uv_c, dst_width * 2,
+ benchmark_width_, benchmark_height_);
+ MaskCpuFlags(benchmark_cpu_info_);
for (int i = 0; i < benchmark_iterations_; ++i) {
HalfMergeUVPlane(src_pixels_u, benchmark_width_, src_pixels_v,