diff options
author | Frank Barchard <fbarchard@google.com> | 2020-05-05 11:16:59 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-05-06 22:24:55 +0000 |
commit | 0b8bb60f2e489b239ae75840554f592433900edb (patch) | |
tree | b89d313f28beec22b13959020f96d5d036b0de8f /unit_test | |
parent | 7a61759f78e37113221cfe7c40c522aa505280af (diff) | |
download | libyuv-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.cc | 43 | ||||
-rw-r--r-- | unit_test/planar_test.cc | 15 |
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, |