diff options
author | Frank Barchard <fbarchard@google.com> | 2019-10-07 15:34:01 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-07 23:01:10 +0000 |
commit | fce0fed542001577e6b10f4cf859e0fa1774974e (patch) | |
tree | ae6c01f2b5ca20242aea4b670963ebc4b79c5105 /unit_test/planar_test.cc | |
parent | e278d4617fe0fd709bef52ef10137edcd85026f6 (diff) | |
download | libyuv-fce0fed542001577e6b10f4cf859e0fa1774974e.tar.gz |
ARGBToY use 8 bit precision instead of 7 bit.
Neon and GCC Intel optimized, but win32 and mips not optimized.
BUG=libyuv:842, b/141482243
Change-Id: Ia56fa85c8cc1db51f374bd0c89b56d21ec94afa7
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/1825642
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
Reviewed-by: Miguel Casas <mcasas@chromium.org>
Reviewed-by: richard winterton <rrwinterton@gmail.com>
Diffstat (limited to 'unit_test/planar_test.cc')
-rw-r--r-- | unit_test/planar_test.cc | 82 |
1 files changed, 48 insertions, 34 deletions
diff --git a/unit_test/planar_test.cc b/unit_test/planar_test.cc index 19232b6f..02cd1fbc 100644 --- a/unit_test/planar_test.cc +++ b/unit_test/planar_test.cc @@ -12,7 +12,6 @@ #include <stdlib.h> #include <time.h> - #include "../unit_test/unit_test.h" #include "libyuv/compare.h" #include "libyuv/convert.h" @@ -281,6 +280,7 @@ TEST_F(LibYUVPlanarTest, TestARGBComputeCumulativeSum) { } } +// near is for legacy platforms. TEST_F(LibYUVPlanarTest, TestARGBGray) { SIMD_ALIGNED(uint8_t orig_pixels[1280][4]); memset(orig_pixels, 0, sizeof(orig_pixels)); @@ -317,17 +317,17 @@ TEST_F(LibYUVPlanarTest, TestARGBGray) { orig_pixels[5][3] = 224u; // Do 16 to test asm version. ARGBGray(&orig_pixels[0][0], 0, 0, 0, 16, 1); - EXPECT_EQ(30u, orig_pixels[0][0]); - EXPECT_EQ(30u, orig_pixels[0][1]); - EXPECT_EQ(30u, orig_pixels[0][2]); + EXPECT_NEAR(29u, orig_pixels[0][0], 1); + EXPECT_NEAR(29u, orig_pixels[0][1], 1); + EXPECT_NEAR(29u, orig_pixels[0][2], 1); EXPECT_EQ(128u, orig_pixels[0][3]); EXPECT_EQ(149u, orig_pixels[1][0]); EXPECT_EQ(149u, orig_pixels[1][1]); EXPECT_EQ(149u, orig_pixels[1][2]); EXPECT_EQ(0u, orig_pixels[1][3]); - EXPECT_EQ(76u, orig_pixels[2][0]); - EXPECT_EQ(76u, orig_pixels[2][1]); - EXPECT_EQ(76u, orig_pixels[2][2]); + EXPECT_NEAR(77u, orig_pixels[2][0], 1); + EXPECT_NEAR(77u, orig_pixels[2][1], 1); + EXPECT_NEAR(77u, orig_pixels[2][2], 1); EXPECT_EQ(255u, orig_pixels[2][3]); EXPECT_EQ(0u, orig_pixels[3][0]); EXPECT_EQ(0u, orig_pixels[3][1]); @@ -337,9 +337,9 @@ TEST_F(LibYUVPlanarTest, TestARGBGray) { EXPECT_EQ(255u, orig_pixels[4][1]); EXPECT_EQ(255u, orig_pixels[4][2]); EXPECT_EQ(255u, orig_pixels[4][3]); - EXPECT_EQ(96u, orig_pixels[5][0]); - EXPECT_EQ(96u, orig_pixels[5][1]); - EXPECT_EQ(96u, orig_pixels[5][2]); + EXPECT_NEAR(97u, orig_pixels[5][0], 1); + EXPECT_NEAR(97u, orig_pixels[5][1], 1); + EXPECT_NEAR(97u, orig_pixels[5][2], 1); EXPECT_EQ(224u, orig_pixels[5][3]); for (int i = 0; i < 1280; ++i) { orig_pixels[i][0] = i; @@ -389,30 +389,30 @@ TEST_F(LibYUVPlanarTest, TestARGBGrayTo) { orig_pixels[5][3] = 224u; // Do 16 to test asm version. ARGBGrayTo(&orig_pixels[0][0], 0, &gray_pixels[0][0], 0, 16, 1); - EXPECT_EQ(30u, gray_pixels[0][0]); - EXPECT_EQ(30u, gray_pixels[0][1]); - EXPECT_EQ(30u, gray_pixels[0][2]); - EXPECT_EQ(128u, gray_pixels[0][3]); - EXPECT_EQ(149u, gray_pixels[1][0]); - EXPECT_EQ(149u, gray_pixels[1][1]); - EXPECT_EQ(149u, gray_pixels[1][2]); - EXPECT_EQ(0u, gray_pixels[1][3]); - EXPECT_EQ(76u, gray_pixels[2][0]); - EXPECT_EQ(76u, gray_pixels[2][1]); - EXPECT_EQ(76u, gray_pixels[2][2]); - EXPECT_EQ(255u, gray_pixels[2][3]); - EXPECT_EQ(0u, gray_pixels[3][0]); - EXPECT_EQ(0u, gray_pixels[3][1]); - EXPECT_EQ(0u, gray_pixels[3][2]); - EXPECT_EQ(255u, gray_pixels[3][3]); - EXPECT_EQ(255u, gray_pixels[4][0]); - EXPECT_EQ(255u, gray_pixels[4][1]); - EXPECT_EQ(255u, gray_pixels[4][2]); - EXPECT_EQ(255u, gray_pixels[4][3]); - EXPECT_EQ(96u, gray_pixels[5][0]); - EXPECT_EQ(96u, gray_pixels[5][1]); - EXPECT_EQ(96u, gray_pixels[5][2]); - EXPECT_EQ(224u, gray_pixels[5][3]); + EXPECT_NEAR(30u, gray_pixels[0][0], 1); + EXPECT_NEAR(30u, gray_pixels[0][1], 1); + EXPECT_NEAR(30u, gray_pixels[0][2], 1); + EXPECT_NEAR(128u, gray_pixels[0][3], 1); + EXPECT_NEAR(149u, gray_pixels[1][0], 1); + EXPECT_NEAR(149u, gray_pixels[1][1], 1); + EXPECT_NEAR(149u, gray_pixels[1][2], 1); + EXPECT_NEAR(0u, gray_pixels[1][3], 1); + EXPECT_NEAR(76u, gray_pixels[2][0], 1); + EXPECT_NEAR(76u, gray_pixels[2][1], 1); + EXPECT_NEAR(76u, gray_pixels[2][2], 1); + EXPECT_NEAR(255u, gray_pixels[2][3], 1); + EXPECT_NEAR(0u, gray_pixels[3][0], 1); + EXPECT_NEAR(0u, gray_pixels[3][1], 1); + EXPECT_NEAR(0u, gray_pixels[3][2], 1); + EXPECT_NEAR(255u, gray_pixels[3][3], 1); + EXPECT_NEAR(255u, gray_pixels[4][0], 1); + EXPECT_NEAR(255u, gray_pixels[4][1], 1); + EXPECT_NEAR(255u, gray_pixels[4][2], 1); + EXPECT_NEAR(255u, gray_pixels[4][3], 1); + EXPECT_NEAR(96u, gray_pixels[5][0], 1); + EXPECT_NEAR(96u, gray_pixels[5][1], 1); + EXPECT_NEAR(96u, gray_pixels[5][2], 1); + EXPECT_NEAR(224u, gray_pixels[5][3], 1); for (int i = 0; i < 1280; ++i) { orig_pixels[i][0] = i; orig_pixels[i][1] = i / 2; @@ -422,6 +422,20 @@ TEST_F(LibYUVPlanarTest, TestARGBGrayTo) { for (int i = 0; i < benchmark_pixels_div1280_; ++i) { ARGBGrayTo(&orig_pixels[0][0], 0, &gray_pixels[0][0], 0, 1280, 1); } + + for (int i = 0; i < 256; ++i) { + orig_pixels[i][0] = i; + orig_pixels[i][1] = i; + orig_pixels[i][2] = i; + orig_pixels[i][3] = i; + } + ARGBGray(&orig_pixels[0][0], 0, 0, 0, 256, 1); + for (int i = 0; i < 256; ++i) { + EXPECT_EQ(i, orig_pixels[i][0]); + EXPECT_EQ(i, orig_pixels[i][1]); + EXPECT_EQ(i, orig_pixels[i][2]); + EXPECT_EQ(i, orig_pixels[i][3]); + } } TEST_F(LibYUVPlanarTest, TestARGBSepia) { |