Index: unit_test/planar_test.cc |
diff --git a/unit_test/planar_test.cc b/unit_test/planar_test.cc |
index 6bc594f8603a36ff60c93479a11fc23bbe62e74e..1416408f460ce0f9f04302ca33c59b66a14094fe 100644 |
--- a/unit_test/planar_test.cc |
+++ b/unit_test/planar_test.cc |
@@ -859,7 +859,7 @@ TEST_F(LibYUVPlanarTest, TestShade) { |
} |
} |
-TEST_F(LibYUVPlanarTest, TestInterpolate) { |
+TEST_F(LibYUVPlanarTest, TestARGBInterpolate) { |
SIMD_ALIGNED(uint8 orig_pixels_0[1280][4]); |
SIMD_ALIGNED(uint8 orig_pixels_1[1280][4]); |
SIMD_ALIGNED(uint8 interpolate_pixels[1280][4]); |
@@ -940,6 +940,88 @@ TEST_F(LibYUVPlanarTest, TestInterpolate) { |
} |
} |
+ |
+TEST_F(LibYUVPlanarTest, TestInterpolatePlane) { |
+ SIMD_ALIGNED(uint8 orig_pixels_0[1280]); |
+ SIMD_ALIGNED(uint8 orig_pixels_1[1280]); |
+ SIMD_ALIGNED(uint8 interpolate_pixels[1280]); |
+ memset(orig_pixels_0, 0, sizeof(orig_pixels_0)); |
+ memset(orig_pixels_1, 0, sizeof(orig_pixels_1)); |
+ |
+ orig_pixels_0[0] = 16u; |
+ orig_pixels_0[1] = 32u; |
+ orig_pixels_0[2] = 64u; |
+ orig_pixels_0[3] = 128u; |
+ orig_pixels_0[4] = 0u; |
+ orig_pixels_0[5] = 0u; |
+ orig_pixels_0[6] = 0u; |
+ orig_pixels_0[7] = 255u; |
+ orig_pixels_0[8] = 0u; |
+ orig_pixels_0[9] = 0u; |
+ orig_pixels_0[10] = 0u; |
+ orig_pixels_0[11] = 0u; |
+ orig_pixels_0[12] = 0u; |
+ orig_pixels_0[13] = 0u; |
+ orig_pixels_0[14] = 0u; |
+ orig_pixels_0[15] = 0u; |
+ |
+ orig_pixels_1[0] = 0u; |
+ orig_pixels_1[1] = 0u; |
+ orig_pixels_1[2] = 0u; |
+ orig_pixels_1[3] = 0u; |
+ orig_pixels_1[4] = 0u; |
+ orig_pixels_1[5] = 0u; |
+ orig_pixels_1[6] = 0u; |
+ orig_pixels_1[7] = 0u; |
+ orig_pixels_1[8] = 0u; |
+ orig_pixels_1[9] = 0u; |
+ orig_pixels_1[10] = 0u; |
+ orig_pixels_1[11] = 0u; |
+ orig_pixels_1[12] = 255u; |
+ orig_pixels_1[13] = 255u; |
+ orig_pixels_1[14] = 255u; |
+ orig_pixels_1[15] = 255u; |
+ |
+ InterpolatePlane(&orig_pixels_0[0], 0, &orig_pixels_1[0], 0, |
+ &interpolate_pixels[0], 0, 16, 1, 128); |
+ EXPECT_EQ(8u, interpolate_pixels[0]); |
+ EXPECT_EQ(16u, interpolate_pixels[1]); |
+ EXPECT_EQ(32u, interpolate_pixels[2]); |
+ EXPECT_EQ(64u, interpolate_pixels[3]); |
+ EXPECT_EQ(0u, interpolate_pixels[4]); |
+ EXPECT_EQ(0u, interpolate_pixels[5]); |
+ EXPECT_EQ(0u, interpolate_pixels[6]); |
+ EXPECT_NEAR(128u, interpolate_pixels[7], 1); // C = 127, SSE = 128. |
+ EXPECT_EQ(0u, interpolate_pixels[8]); |
+ EXPECT_EQ(0u, interpolate_pixels[9]); |
+ EXPECT_EQ(0u, interpolate_pixels[10]); |
+ EXPECT_EQ(0u, interpolate_pixels[11]); |
+ EXPECT_NEAR(128u, interpolate_pixels[12], 1); |
+ EXPECT_NEAR(128u, interpolate_pixels[13], 1); |
+ EXPECT_NEAR(128u, interpolate_pixels[14], 1); |
+ EXPECT_NEAR(128u, interpolate_pixels[15], 1); |
+ |
+ InterpolatePlane(&orig_pixels_0[0], 0, &orig_pixels_1[0], 0, |
+ &interpolate_pixels[0], 0, 16, 1, 0); |
+ EXPECT_EQ(16u, interpolate_pixels[0]); |
+ EXPECT_EQ(32u, interpolate_pixels[1]); |
+ EXPECT_EQ(64u, interpolate_pixels[2]); |
+ EXPECT_EQ(128u, interpolate_pixels[3]); |
+ |
+ InterpolatePlane(&orig_pixels_0[0], 0, &orig_pixels_1[0], 0, |
+ &interpolate_pixels[0], 0, 16, 1, 192); |
+ |
+ EXPECT_EQ(4u, interpolate_pixels[0]); |
+ EXPECT_EQ(8u, interpolate_pixels[1]); |
+ EXPECT_EQ(16u,interpolate_pixels[2]); |
+ EXPECT_EQ(32u, interpolate_pixels[3]); |
+ |
+ for (int i = 0; i < benchmark_pixels_div1280_; ++i) { |
+ InterpolatePlane(&orig_pixels_0[0], 0, &orig_pixels_1[0], 0, |
+ &interpolate_pixels[0], 0, 1280, 1, 128); |
+ } |
+} |
+ |
#define TESTTERP(FMT_A, BPP_A, STRIDE_A, \ |
FMT_B, BPP_B, STRIDE_B, \ |
W1280, TERP, DIFF, N, NEG, OFF) \ |