| 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) \
|
|
|