Index: third_party/WebKit/Source/platform/image-encoders/JPEGImageEncoderTest.cpp |
diff --git a/third_party/WebKit/Source/platform/image-encoders/JPEGImageEncoderTest.cpp b/third_party/WebKit/Source/platform/image-encoders/JPEGImageEncoderTest.cpp |
deleted file mode 100644 |
index bccfc9821924e7db4ac2a3e8f85103eb63e446ea..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/Source/platform/image-encoders/JPEGImageEncoderTest.cpp |
+++ /dev/null |
@@ -1,236 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "base/timer/elapsed_timer.h" |
-#include "platform/image-encoders/RGBAtoRGB.h" |
-#include "platform/wtf/build_config.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace blink { |
- |
-class RGBAtoRGBTest : public ::testing::Test { |
- public: |
- RGBAtoRGBTest() {} |
-}; |
- |
-static const size_t kChannelsRGBA = 4; |
-static const size_t kChannelsRGB = 3; |
- |
-inline size_t CalculateRGBAPixels(size_t input_buffer_size) { |
- size_t pixels = input_buffer_size / kChannelsRGBA; |
- return pixels; |
-} |
- |
-inline size_t CalculateRGBOutputSize(size_t input_buffer_size) { |
- size_t pixels = CalculateRGBAPixels(input_buffer_size); |
- pixels *= kChannelsRGB; |
- return pixels; |
-} |
- |
-TEST_F(RGBAtoRGBTest, testOpaqueCaseEven8pixels) { |
- unsigned char canvas[] = {255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, |
- 255, 255, 0, 0, 255, 0, 255, 0, 255, 0, 255, |
- 0, 255, 0, 255, 0, 255, 0, 255, 0, 255}; |
- |
- unsigned char expected[] = {255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 0, |
- 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0}; |
-// TODO(dcheng): Make this all constexpr. |
-#if OS(WIN) |
- // Windows release bot can't be reasoned with (compiler error C2131). |
- static const constexpr size_t pixels = sizeof(canvas) / kChannelsRGBA; |
- static const constexpr size_t rgb_size = pixels * kChannelsRGB; |
-#else |
- const size_t pixels = CalculateRGBAPixels(sizeof(canvas)); |
- const size_t rgb_size = CalculateRGBOutputSize(sizeof(canvas)); |
-#endif |
- |
- unsigned char output[rgb_size]; |
- memset(output, 0, rgb_size); |
- |
- blink::RGBAtoRGB(canvas, static_cast<unsigned>(pixels), output); |
- |
- EXPECT_EQ(memcmp(expected, output, rgb_size), 0); |
-} |
- |
-#ifdef __ARM_NEON__ |
-TEST_F(RGBAtoRGBTest, testCaseEven16pixels) { |
- unsigned char canvas[] = { |
- 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, |
- 0, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, |
- 0, 255, 0, 255, 0, 255, 0, 0, 255, 128, 0, 0, 255, |
- 128, 0, 0, 255, 128, 0, 0, 255, 128, 128, 128, 128, 128, |
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128}; |
- |
- const size_t pixels = CalculateRGBAPixels(sizeof(canvas)); |
- const size_t rgb_size = CalculateRGBOutputSize(sizeof(canvas)); |
- unsigned char output[rgb_size]; |
- unsigned char expected[rgb_size]; |
- memset(output, 0, rgb_size); |
- memset(expected, 0, rgb_size); |
- |
- blink::RGBAtoRGBScalar(canvas, static_cast<unsigned>(pixels), expected); |
- blink::RGBAtoRGBNeon(canvas, static_cast<unsigned>(pixels), output); |
- |
- EXPECT_EQ(memcmp(expected, output, rgb_size), 0); |
-} |
- |
-TEST_F(RGBAtoRGBTest, testCaseOdd17pixels) { |
- unsigned char canvas[] = { |
- 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, |
- 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, |
- 0, 255, 0, 255, 0, 0, 255, 128, 0, 0, 255, 128, 0, 0, |
- 255, 128, 0, 0, 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, |
- 128, 128, 128, 128, 128, 128, 128, 128, 10, 10, 10, 100}; |
- |
- const size_t pixels = CalculateRGBAPixels(sizeof(canvas)); |
- const size_t rgb_size = CalculateRGBOutputSize(sizeof(canvas)); |
- unsigned char output[rgb_size]; |
- unsigned char expected[rgb_size]; |
- memset(output, 0, rgb_size); |
- memset(expected, 0, rgb_size); |
- |
- blink::RGBAtoRGBScalar(canvas, static_cast<unsigned>(pixels), expected); |
- blink::RGBAtoRGBNeon(canvas, static_cast<unsigned>(pixels), output); |
- |
- EXPECT_EQ(memcmp(expected, output, rgb_size), 0); |
-} |
- |
-TEST_F(RGBAtoRGBTest, testCaseEven32pixels) { |
- unsigned char canvas[] = { |
- 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, |
- 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, |
- 0, 255, 0, 0, 255, 128, 0, 0, 255, 128, 0, 0, 255, 128, 0, |
- 0, 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, |
- 128, 128, 128, 128, 128, 128, 128, 255, 128, 128, 128, 255, 128, 128, 128, |
- 255, 128, 128, 128, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, |
- 0, 255, 255, 0, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, |
- 255, 0, 255, 0, 255, 0, 255, 0, 0, 255, 128, 0, 0, 255, 128, |
- 0, 0, 255, 128, 0, 0, 255, 128}; |
- |
- const size_t pixels = CalculateRGBAPixels(sizeof(canvas)); |
- const size_t rgb_size = CalculateRGBOutputSize(sizeof(canvas)); |
- unsigned char output[rgb_size]; |
- unsigned char expected[rgb_size]; |
- memset(output, 0, rgb_size); |
- memset(expected, 0, rgb_size); |
- |
- blink::RGBAtoRGBScalar(canvas, static_cast<unsigned>(pixels), expected); |
- blink::RGBAtoRGBNeon(canvas, static_cast<unsigned>(pixels), output); |
- |
- EXPECT_EQ(memcmp(expected, output, rgb_size), 0); |
-} |
- |
-static base::TimeDelta TestNpixels(bool fast_path = true, |
- const size_t width = 1024, |
- const size_t height = 1024, |
- bool set_alpha = true) { |
- const size_t pixels = width * height; |
- const size_t canvas_len = kChannelsRGBA * width * height; |
- const size_t output_len = kChannelsRGB * width * height; |
- unsigned char* canvas = new unsigned char[canvas_len]; |
- unsigned char* output = new unsigned char[output_len]; |
- |
- auto cleanup = [&]() { |
- if (canvas) |
- delete[] canvas; |
- if (output) |
- delete[] output; |
- }; |
- |
- if (!canvas || !output) { |
- cleanup(); |
- return base::TimeDelta(); |
- } |
- |
- if (set_alpha) { |
- memset(canvas, 128, canvas_len); |
- } else { |
- memset(canvas, 200, canvas_len); |
- } |
- |
- base::ElapsedTimer run_time; |
- if (fast_path) { |
- blink::RGBAtoRGBNeon(canvas, static_cast<unsigned>(pixels), output); |
- } else { |
- blink::RGBAtoRGBScalar(canvas, static_cast<unsigned>(pixels), output); |
- } |
- |
- auto result = run_time.Elapsed(); |
- cleanup(); |
- return result; |
-} |
- |
-TEST_F(RGBAtoRGBTest, testPerf1k) { |
- auto neon_elapsed = TestNpixels(); |
- auto scalar_elapsed = TestNpixels(false); |
- |
- EXPECT_TRUE(neon_elapsed < scalar_elapsed) |
- << "Neon: " << neon_elapsed << "\tScalar: " << scalar_elapsed |
- << std::endl; |
-} |
- |
-TEST_F(RGBAtoRGBTest, testPerf4k) { |
- auto neon_elapsed = TestNpixels(true, 4000, 4000); |
- auto scalar_elapsed = TestNpixels(false, 4000, 4000); |
- |
- EXPECT_TRUE(neon_elapsed < scalar_elapsed) |
- << "Neon: " << neon_elapsed << "\tScalar: " << scalar_elapsed |
- << std::endl; |
-} |
- |
-// This width will force the tail case, cause width = (16 * 64) + 15. |
-static bool TestRandNpixels(const size_t width = 1039, |
- const size_t height = 1024, |
- bool set_alpha = true) { |
- const size_t pixels = width * height; |
- const size_t canvas_len = kChannelsRGBA * pixels; |
- const size_t output_len = kChannelsRGB * pixels; |
- unsigned char* canvas = new unsigned char[canvas_len]; |
- unsigned char* expected = new unsigned char[output_len]; |
- unsigned char* output = new unsigned char[output_len]; |
- |
- auto cleanup = [&]() { |
- if (canvas) |
- delete[] canvas; |
- if (expected) |
- delete[] expected; |
- if (output) |
- delete[] output; |
- }; |
- |
- if (!canvas || !output || !expected) { |
- cleanup(); |
- return false; |
- } |
- |
- if (set_alpha) { |
- memset(canvas, 128, canvas_len); |
- } else { |
- memset(canvas, 200, canvas_len); |
- } |
- |
- srand(time(0)); |
- unsigned char* ptr = canvas; |
- for (size_t i = 0; i < pixels; ++i) { |
- *ptr++ = static_cast<unsigned char>(rand() % 255); |
- *ptr++ = static_cast<unsigned char>(rand() % 255); |
- *ptr++ = static_cast<unsigned char>(rand() % 255); |
- *ptr++ = static_cast<unsigned char>(rand() % 255); |
- } |
- |
- blink::RGBAtoRGBScalar(canvas, static_cast<unsigned>(pixels), expected); |
- blink::RGBAtoRGBNeon(canvas, static_cast<unsigned>(pixels), output); |
- |
- bool result = memcmp(expected, output, output_len) == 0; |
- |
- cleanup(); |
- return result; |
-} |
- |
-TEST_F(RGBAtoRGBTest, randomPixels) { |
- EXPECT_TRUE(TestRandNpixels()); |
-} |
- |
-#endif |
-} // namespace blink |