| Index: talk/session/media/planarfunctions_unittest.cc
|
| diff --git a/talk/session/media/planarfunctions_unittest.cc b/talk/session/media/planarfunctions_unittest.cc
|
| index e7a666e0b42dc53e246f86c1bef85be0962696d7..886aa590bac4114f2cdb9b457a2d2565e06e641b 100644
|
| --- a/talk/session/media/planarfunctions_unittest.cc
|
| +++ b/talk/session/media/planarfunctions_unittest.cc
|
| @@ -76,21 +76,21 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
|
|
| // Initialize the color band for testing.
|
| void InitializeColorBand() {
|
| - testing_color_y_.reset(new uint8[kTestingColorNum]);
|
| - testing_color_u_.reset(new uint8[kTestingColorNum]);
|
| - testing_color_v_.reset(new uint8[kTestingColorNum]);
|
| - testing_color_r_.reset(new uint8[kTestingColorNum]);
|
| - testing_color_g_.reset(new uint8[kTestingColorNum]);
|
| - testing_color_b_.reset(new uint8[kTestingColorNum]);
|
| + testing_color_y_.reset(new uint8_t[kTestingColorNum]);
|
| + testing_color_u_.reset(new uint8_t[kTestingColorNum]);
|
| + testing_color_v_.reset(new uint8_t[kTestingColorNum]);
|
| + testing_color_r_.reset(new uint8_t[kTestingColorNum]);
|
| + testing_color_g_.reset(new uint8_t[kTestingColorNum]);
|
| + testing_color_b_.reset(new uint8_t[kTestingColorNum]);
|
| int color_counter = 0;
|
| for (int i = 0; i < kTestingColorChannelResolution; ++i) {
|
| - uint8 color_r = static_cast<uint8>(
|
| - i * 255 / (kTestingColorChannelResolution - 1));
|
| + uint8_t color_r =
|
| + static_cast<uint8_t>(i * 255 / (kTestingColorChannelResolution - 1));
|
| for (int j = 0; j < kTestingColorChannelResolution; ++j) {
|
| - uint8 color_g = static_cast<uint8>(
|
| + uint8_t color_g = static_cast<uint8_t>(
|
| j * 255 / (kTestingColorChannelResolution - 1));
|
| for (int k = 0; k < kTestingColorChannelResolution; ++k) {
|
| - uint8 color_b = static_cast<uint8>(
|
| + uint8_t color_b = static_cast<uint8_t>(
|
| k * 255 / (kTestingColorChannelResolution - 1));
|
| testing_color_r_[color_counter] = color_r;
|
| testing_color_g_[color_counter] = color_g;
|
| @@ -107,16 +107,20 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| }
|
| // Simple and slow RGB->YUV conversion. From NTSC standard, c/o Wikipedia.
|
| // (from lmivideoframe_unittest.cc)
|
| - void ConvertRgbPixel(uint8 r, uint8 g, uint8 b,
|
| - uint8* y, uint8* u, uint8* v) {
|
| + void ConvertRgbPixel(uint8_t r,
|
| + uint8_t g,
|
| + uint8_t b,
|
| + uint8_t* y,
|
| + uint8_t* u,
|
| + uint8_t* v) {
|
| *y = ClampUint8(.257 * r + .504 * g + .098 * b + 16);
|
| *u = ClampUint8(-.148 * r - .291 * g + .439 * b + 128);
|
| *v = ClampUint8(.439 * r - .368 * g - .071 * b + 128);
|
| }
|
|
|
| - uint8 ClampUint8(double value) {
|
| + uint8_t ClampUint8(double value) {
|
| value = std::max(0., std::min(255., value));
|
| - uint8 uint8_value = static_cast<uint8>(value);
|
| + uint8_t uint8_value = static_cast<uint8_t>(value);
|
| return uint8_value;
|
| }
|
|
|
| @@ -127,11 +131,13 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| // c2 c3 c4 c5 ...
|
| // ...............
|
| // The size of each chrome block is (block_size) x (block_size).
|
| - uint8* CreateFakeYuvTestingImage(int height, int width, int block_size,
|
| - libyuv::JpegSubsamplingType subsample_type,
|
| - uint8* &y_pointer,
|
| - uint8* &u_pointer,
|
| - uint8* &v_pointer) {
|
| + uint8_t* CreateFakeYuvTestingImage(int height,
|
| + int width,
|
| + int block_size,
|
| + libyuv::JpegSubsamplingType subsample_type,
|
| + uint8_t*& y_pointer,
|
| + uint8_t*& u_pointer,
|
| + uint8_t*& v_pointer) {
|
| if (height <= 0 || width <= 0 || block_size <= 0) { return NULL; }
|
| int y_size = height * width;
|
| int u_size, v_size;
|
| @@ -156,13 +162,13 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| return NULL;
|
| break;
|
| }
|
| - uint8* image_pointer = new uint8[y_size + u_size + v_size + kAlignment];
|
| + uint8_t* image_pointer = new uint8_t[y_size + u_size + v_size + kAlignment];
|
| y_pointer = ALIGNP(image_pointer, kAlignment);
|
| u_pointer = ALIGNP(&image_pointer[y_size], kAlignment);
|
| v_pointer = ALIGNP(&image_pointer[y_size + u_size], kAlignment);
|
| - uint8* current_y_pointer = y_pointer;
|
| - uint8* current_u_pointer = u_pointer;
|
| - uint8* current_v_pointer = v_pointer;
|
| + uint8_t* current_y_pointer = y_pointer;
|
| + uint8_t* current_u_pointer = u_pointer;
|
| + uint8_t* current_v_pointer = v_pointer;
|
| for (int j = 0; j < height; ++j) {
|
| for (int i = 0; i < width; ++i) {
|
| int color = ((i / block_size) + (j / block_size)) % kTestingColorNum;
|
| @@ -184,9 +190,11 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| // c2 c3 c4 c5 ...
|
| // ...............
|
| // The size of each chrome block is (block_size) x (block_size).
|
| - uint8* CreateFakeInterleaveYuvTestingImage(
|
| - int height, int width, int block_size,
|
| - uint8* &yuv_pointer, FourCC fourcc_type) {
|
| + uint8_t* CreateFakeInterleaveYuvTestingImage(int height,
|
| + int width,
|
| + int block_size,
|
| + uint8_t*& yuv_pointer,
|
| + FourCC fourcc_type) {
|
| if (height <= 0 || width <= 0 || block_size <= 0) { return NULL; }
|
| if (fourcc_type != FOURCC_YUY2 && fourcc_type != FOURCC_UYVY) {
|
| LOG(LS_ERROR) << "Format " << static_cast<int>(fourcc_type)
|
| @@ -196,9 +204,9 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| // Regularize the width of the output to be even.
|
| int awidth = (width + 1) & ~1;
|
|
|
| - uint8* image_pointer = new uint8[2 * height * awidth + kAlignment];
|
| + uint8_t* image_pointer = new uint8_t[2 * height * awidth + kAlignment];
|
| yuv_pointer = ALIGNP(image_pointer, kAlignment);
|
| - uint8* current_yuv_pointer = yuv_pointer;
|
| + uint8_t* current_yuv_pointer = yuv_pointer;
|
| switch (fourcc_type) {
|
| case FOURCC_YUY2: {
|
| for (int j = 0; j < height; ++j) {
|
| @@ -209,13 +217,15 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| kTestingColorNum;
|
| current_yuv_pointer[0] = testing_color_y_[color1];
|
| if (i < width) {
|
| - current_yuv_pointer[1] = static_cast<uint8>(
|
| - (static_cast<uint32>(testing_color_u_[color1]) +
|
| - static_cast<uint32>(testing_color_u_[color2])) / 2);
|
| + current_yuv_pointer[1] = static_cast<uint8_t>(
|
| + (static_cast<uint32_t>(testing_color_u_[color1]) +
|
| + static_cast<uint32_t>(testing_color_u_[color2])) /
|
| + 2);
|
| current_yuv_pointer[2] = testing_color_y_[color2];
|
| - current_yuv_pointer[3] = static_cast<uint8>(
|
| - (static_cast<uint32>(testing_color_v_[color1]) +
|
| - static_cast<uint32>(testing_color_v_[color2])) / 2);
|
| + current_yuv_pointer[3] = static_cast<uint8_t>(
|
| + (static_cast<uint32_t>(testing_color_v_[color1]) +
|
| + static_cast<uint32_t>(testing_color_v_[color2])) /
|
| + 2);
|
| } else {
|
| current_yuv_pointer[1] = testing_color_u_[color1];
|
| current_yuv_pointer[2] = 0;
|
| @@ -233,13 +243,15 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| int color2 = (((i + 1) / block_size) + (j / block_size)) %
|
| kTestingColorNum;
|
| if (i < width) {
|
| - current_yuv_pointer[0] = static_cast<uint8>(
|
| - (static_cast<uint32>(testing_color_u_[color1]) +
|
| - static_cast<uint32>(testing_color_u_[color2])) / 2);
|
| + current_yuv_pointer[0] = static_cast<uint8_t>(
|
| + (static_cast<uint32_t>(testing_color_u_[color1]) +
|
| + static_cast<uint32_t>(testing_color_u_[color2])) /
|
| + 2);
|
| current_yuv_pointer[1] = testing_color_y_[color1];
|
| - current_yuv_pointer[2] = static_cast<uint8>(
|
| - (static_cast<uint32>(testing_color_v_[color1]) +
|
| - static_cast<uint32>(testing_color_v_[color2])) / 2);
|
| + current_yuv_pointer[2] = static_cast<uint8_t>(
|
| + (static_cast<uint32_t>(testing_color_v_[color1]) +
|
| + static_cast<uint32_t>(testing_color_v_[color2])) /
|
| + 2);
|
| current_yuv_pointer[3] = testing_color_y_[color2];
|
| } else {
|
| current_yuv_pointer[0] = testing_color_u_[color1];
|
| @@ -263,16 +275,20 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| // c2 c3 c4 c5 ...
|
| // ...............
|
| // The size of each chrome block is (block_size) x (block_size).
|
| - uint8* CreateFakeNV12TestingImage(int height, int width, int block_size,
|
| - uint8* &y_pointer, uint8* &uv_pointer) {
|
| + uint8_t* CreateFakeNV12TestingImage(int height,
|
| + int width,
|
| + int block_size,
|
| + uint8_t*& y_pointer,
|
| + uint8_t*& uv_pointer) {
|
| if (height <= 0 || width <= 0 || block_size <= 0) { return NULL; }
|
|
|
| - uint8* image_pointer = new uint8[height * width +
|
| - ((height + 1) / 2) * ((width + 1) / 2) * 2 + kAlignment];
|
| + uint8_t* image_pointer =
|
| + new uint8_t[height * width +
|
| + ((height + 1) / 2) * ((width + 1) / 2) * 2 + kAlignment];
|
| y_pointer = ALIGNP(image_pointer, kAlignment);
|
| uv_pointer = y_pointer + height * width;
|
| - uint8* current_uv_pointer = uv_pointer;
|
| - uint8* current_y_pointer = y_pointer;
|
| + uint8_t* current_uv_pointer = uv_pointer;
|
| + uint8_t* current_y_pointer = y_pointer;
|
| for (int j = 0; j < height; ++j) {
|
| for (int i = 0; i < width; ++i) {
|
| int color = ((i / block_size) + (j / block_size)) %
|
| @@ -299,14 +315,17 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| // c2 c3 c4 c5 ...
|
| // ...............
|
| // The size of each chrome block is (block_size) x (block_size).
|
| - uint8* CreateFakeM420TestingImage(
|
| - int height, int width, int block_size, uint8* &m420_pointer) {
|
| + uint8_t* CreateFakeM420TestingImage(int height,
|
| + int width,
|
| + int block_size,
|
| + uint8_t*& m420_pointer) {
|
| if (height <= 0 || width <= 0 || block_size <= 0) { return NULL; }
|
|
|
| - uint8* image_pointer = new uint8[height * width +
|
| - ((height + 1) / 2) * ((width + 1) / 2) * 2 + kAlignment];
|
| + uint8_t* image_pointer =
|
| + new uint8_t[height * width +
|
| + ((height + 1) / 2) * ((width + 1) / 2) * 2 + kAlignment];
|
| m420_pointer = ALIGNP(image_pointer, kAlignment);
|
| - uint8* current_m420_pointer = m420_pointer;
|
| + uint8_t* current_m420_pointer = m420_pointer;
|
| for (int j = 0; j < height; ++j) {
|
| for (int i = 0; i < width; ++i) {
|
| int color = ((i / block_size) + (j / block_size)) %
|
| @@ -332,22 +351,25 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| // c2 c3 c4 c5 ...
|
| // ...............
|
| // The size of each chrome block is (block_size) x (block_size).
|
| - uint8* CreateFakeArgbTestingImage(int height, int width, int block_size,
|
| - uint8* &argb_pointer, FourCC fourcc_type) {
|
| + uint8_t* CreateFakeArgbTestingImage(int height,
|
| + int width,
|
| + int block_size,
|
| + uint8_t*& argb_pointer,
|
| + FourCC fourcc_type) {
|
| if (height <= 0 || width <= 0 || block_size <= 0) { return NULL; }
|
| - uint8* image_pointer = NULL;
|
| + uint8_t* image_pointer = NULL;
|
| if (fourcc_type == FOURCC_ABGR || fourcc_type == FOURCC_BGRA ||
|
| fourcc_type == FOURCC_ARGB) {
|
| - image_pointer = new uint8[height * width * 4 + kAlignment];
|
| + image_pointer = new uint8_t[height * width * 4 + kAlignment];
|
| } else if (fourcc_type == FOURCC_RAW || fourcc_type == FOURCC_24BG) {
|
| - image_pointer = new uint8[height * width * 3 + kAlignment];
|
| + image_pointer = new uint8_t[height * width * 3 + kAlignment];
|
| } else {
|
| LOG(LS_ERROR) << "Format " << static_cast<int>(fourcc_type)
|
| << " is not supported.";
|
| return NULL;
|
| }
|
| argb_pointer = ALIGNP(image_pointer, kAlignment);
|
| - uint8* current_pointer = argb_pointer;
|
| + uint8_t* current_pointer = argb_pointer;
|
| switch (fourcc_type) {
|
| case FOURCC_ARGB: {
|
| for (int j = 0; j < height; ++j) {
|
| @@ -422,8 +444,10 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
|
|
| // Check if two memory chunks are equal.
|
| // (tolerate MSE errors within a threshold).
|
| - static bool IsMemoryEqual(const uint8* ibuf, const uint8* obuf,
|
| - int osize, double average_error) {
|
| + static bool IsMemoryEqual(const uint8_t* ibuf,
|
| + const uint8_t* obuf,
|
| + int osize,
|
| + double average_error) {
|
| double sse = cricket::ComputeSumSquareError(ibuf, obuf, osize);
|
| double error = sse / osize; // Mean Squared Error.
|
| double PSNR = cricket::ComputePSNR(sse, osize);
|
| @@ -433,7 +457,7 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| }
|
|
|
| // Returns the index of the first differing byte. Easier to debug than memcmp.
|
| - static int FindDiff(const uint8* buf1, const uint8* buf2, int len) {
|
| + static int FindDiff(const uint8_t* buf1, const uint8_t* buf2, int len) {
|
| int i = 0;
|
| while (i < len && buf1[i] == buf2[i]) {
|
| i++;
|
| @@ -442,12 +466,12 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| }
|
|
|
| // Dump the result image (ARGB format).
|
| - void DumpArgbImage(const uint8* obuf, int width, int height) {
|
| + void DumpArgbImage(const uint8_t* obuf, int width, int height) {
|
| DumpPlanarArgbTestImage(GetTestName(), obuf, width, height);
|
| }
|
|
|
| // Dump the result image (YUV420 format).
|
| - void DumpYuvImage(const uint8* obuf, int width, int height) {
|
| + void DumpYuvImage(const uint8_t* obuf, int width, int height) {
|
| DumpPlanarYuvTestImage(GetTestName(), obuf, width, height);
|
| }
|
|
|
| @@ -462,16 +486,18 @@ class PlanarFunctionsTest : public testing::TestWithParam<int> {
|
| int repeat_;
|
|
|
| // Y, U, V and R, G, B channels of testing colors.
|
| - rtc::scoped_ptr<uint8[]> testing_color_y_;
|
| - rtc::scoped_ptr<uint8[]> testing_color_u_;
|
| - rtc::scoped_ptr<uint8[]> testing_color_v_;
|
| - rtc::scoped_ptr<uint8[]> testing_color_r_;
|
| - rtc::scoped_ptr<uint8[]> testing_color_g_;
|
| - rtc::scoped_ptr<uint8[]> testing_color_b_;
|
| + rtc::scoped_ptr<uint8_t[]> testing_color_y_;
|
| + rtc::scoped_ptr<uint8_t[]> testing_color_u_;
|
| + rtc::scoped_ptr<uint8_t[]> testing_color_v_;
|
| + rtc::scoped_ptr<uint8_t[]> testing_color_r_;
|
| + rtc::scoped_ptr<uint8_t[]> testing_color_g_;
|
| + rtc::scoped_ptr<uint8_t[]> testing_color_b_;
|
| };
|
|
|
| TEST_F(PlanarFunctionsTest, I420Copy) {
|
| - uint8 *y_pointer = NULL, *u_pointer = NULL, *v_pointer = NULL;
|
| + uint8_t* y_pointer = nullptr;
|
| + uint8_t* u_pointer = nullptr;
|
| + uint8_t* v_pointer = nullptr;
|
| int y_pitch = kWidth;
|
| int u_pitch = (kWidth + 1) >> 1;
|
| int v_pitch = (kWidth + 1) >> 1;
|
| @@ -479,16 +505,15 @@ TEST_F(PlanarFunctionsTest, I420Copy) {
|
| int uv_size = ((kHeight + 1) >> 1) * ((kWidth + 1) >> 1);
|
| int block_size = 3;
|
| // Generate a fake input image.
|
| - rtc::scoped_ptr<uint8[]> yuv_input(
|
| - CreateFakeYuvTestingImage(kHeight, kWidth, block_size,
|
| - libyuv::kJpegYuv420,
|
| - y_pointer, u_pointer, v_pointer));
|
| + rtc::scoped_ptr<uint8_t[]> yuv_input(CreateFakeYuvTestingImage(
|
| + kHeight, kWidth, block_size, libyuv::kJpegYuv420, y_pointer, u_pointer,
|
| + v_pointer));
|
| // Allocate space for the output image.
|
| - rtc::scoped_ptr<uint8[]> yuv_output(
|
| - new uint8[I420_SIZE(kHeight, kWidth) + kAlignment]);
|
| - uint8 *y_output_pointer = ALIGNP(yuv_output.get(), kAlignment);
|
| - uint8 *u_output_pointer = y_output_pointer + y_size;
|
| - uint8 *v_output_pointer = u_output_pointer + uv_size;
|
| + rtc::scoped_ptr<uint8_t[]> yuv_output(
|
| + new uint8_t[I420_SIZE(kHeight, kWidth) + kAlignment]);
|
| + uint8_t* y_output_pointer = ALIGNP(yuv_output.get(), kAlignment);
|
| + uint8_t* u_output_pointer = y_output_pointer + y_size;
|
| + uint8_t* v_output_pointer = u_output_pointer + uv_size;
|
|
|
| for (int i = 0; i < repeat_; ++i) {
|
| libyuv::I420Copy(y_pointer, y_pitch,
|
| @@ -508,7 +533,9 @@ TEST_F(PlanarFunctionsTest, I420Copy) {
|
| }
|
|
|
| TEST_F(PlanarFunctionsTest, I422ToI420) {
|
| - uint8 *y_pointer = NULL, *u_pointer = NULL, *v_pointer = NULL;
|
| + uint8_t* y_pointer = nullptr;
|
| + uint8_t* u_pointer = nullptr;
|
| + uint8_t* v_pointer = nullptr;
|
| int y_pitch = kWidth;
|
| int u_pitch = (kWidth + 1) >> 1;
|
| int v_pitch = (kWidth + 1) >> 1;
|
| @@ -516,23 +543,22 @@ TEST_F(PlanarFunctionsTest, I422ToI420) {
|
| int uv_size = ((kHeight + 1) >> 1) * ((kWidth + 1) >> 1);
|
| int block_size = 2;
|
| // Generate a fake input image.
|
| - rtc::scoped_ptr<uint8[]> yuv_input(
|
| - CreateFakeYuvTestingImage(kHeight, kWidth, block_size,
|
| - libyuv::kJpegYuv422,
|
| - y_pointer, u_pointer, v_pointer));
|
| + rtc::scoped_ptr<uint8_t[]> yuv_input(CreateFakeYuvTestingImage(
|
| + kHeight, kWidth, block_size, libyuv::kJpegYuv422, y_pointer, u_pointer,
|
| + v_pointer));
|
| // Allocate space for the output image.
|
| - rtc::scoped_ptr<uint8[]> yuv_output(
|
| - new uint8[I420_SIZE(kHeight, kWidth) + kAlignment]);
|
| - uint8 *y_output_pointer = ALIGNP(yuv_output.get(), kAlignment);
|
| - uint8 *u_output_pointer = y_output_pointer + y_size;
|
| - uint8 *v_output_pointer = u_output_pointer + uv_size;
|
| + rtc::scoped_ptr<uint8_t[]> yuv_output(
|
| + new uint8_t[I420_SIZE(kHeight, kWidth) + kAlignment]);
|
| + uint8_t* y_output_pointer = ALIGNP(yuv_output.get(), kAlignment);
|
| + uint8_t* u_output_pointer = y_output_pointer + y_size;
|
| + uint8_t* v_output_pointer = u_output_pointer + uv_size;
|
| // Generate the expected output.
|
| - uint8 *y_expected_pointer = NULL, *u_expected_pointer = NULL,
|
| - *v_expected_pointer = NULL;
|
| - rtc::scoped_ptr<uint8[]> yuv_output_expected(
|
| - CreateFakeYuvTestingImage(kHeight, kWidth, block_size,
|
| - libyuv::kJpegYuv420,
|
| - y_expected_pointer, u_expected_pointer, v_expected_pointer));
|
| + uint8_t* y_expected_pointer = nullptr;
|
| + uint8_t* u_expected_pointer = nullptr;
|
| + uint8_t* v_expected_pointer = nullptr;
|
| + rtc::scoped_ptr<uint8_t[]> yuv_output_expected(CreateFakeYuvTestingImage(
|
| + kHeight, kWidth, block_size, libyuv::kJpegYuv420, y_expected_pointer,
|
| + u_expected_pointer, v_expected_pointer));
|
|
|
| for (int i = 0; i < repeat_; ++i) {
|
| libyuv::I422ToI420(y_pointer, y_pitch,
|
| @@ -556,7 +582,7 @@ TEST_F(PlanarFunctionsTest, I422ToI420) {
|
| TEST_P(PlanarFunctionsTest, M420ToI420) {
|
| // Get the unalignment offset
|
| int unalignment = GetParam();
|
| - uint8 *m420_pointer = NULL;
|
| + uint8_t* m420_pointer = NULL;
|
| int y_pitch = kWidth;
|
| int m420_pitch = kWidth;
|
| int u_pitch = (kWidth + 1) >> 1;
|
| @@ -565,21 +591,22 @@ TEST_P(PlanarFunctionsTest, M420ToI420) {
|
| int uv_size = ((kHeight + 1) >> 1) * ((kWidth + 1) >> 1);
|
| int block_size = 2;
|
| // Generate a fake input image.
|
| - rtc::scoped_ptr<uint8[]> yuv_input(
|
| + rtc::scoped_ptr<uint8_t[]> yuv_input(
|
| CreateFakeM420TestingImage(kHeight, kWidth, block_size, m420_pointer));
|
| // Allocate space for the output image.
|
| - rtc::scoped_ptr<uint8[]> yuv_output(
|
| - new uint8[I420_SIZE(kHeight, kWidth) + kAlignment + unalignment]);
|
| - uint8 *y_output_pointer = ALIGNP(yuv_output.get(), kAlignment) + unalignment;
|
| - uint8 *u_output_pointer = y_output_pointer + y_size;
|
| - uint8 *v_output_pointer = u_output_pointer + uv_size;
|
| + rtc::scoped_ptr<uint8_t[]> yuv_output(
|
| + new uint8_t[I420_SIZE(kHeight, kWidth) + kAlignment + unalignment]);
|
| + uint8_t* y_output_pointer =
|
| + ALIGNP(yuv_output.get(), kAlignment) + unalignment;
|
| + uint8_t* u_output_pointer = y_output_pointer + y_size;
|
| + uint8_t* v_output_pointer = u_output_pointer + uv_size;
|
| // Generate the expected output.
|
| - uint8 *y_expected_pointer = NULL, *u_expected_pointer = NULL,
|
| - *v_expected_pointer = NULL;
|
| - rtc::scoped_ptr<uint8[]> yuv_output_expected(
|
| - CreateFakeYuvTestingImage(kHeight, kWidth, block_size,
|
| - libyuv::kJpegYuv420,
|
| - y_expected_pointer, u_expected_pointer, v_expected_pointer));
|
| + uint8_t* y_expected_pointer = nullptr;
|
| + uint8_t* u_expected_pointer = nullptr;
|
| + uint8_t* v_expected_pointer = nullptr;
|
| + rtc::scoped_ptr<uint8_t[]> yuv_output_expected(CreateFakeYuvTestingImage(
|
| + kHeight, kWidth, block_size, libyuv::kJpegYuv420, y_expected_pointer,
|
| + u_expected_pointer, v_expected_pointer));
|
|
|
| for (int i = 0; i < repeat_; ++i) {
|
| libyuv::M420ToI420(m420_pointer, m420_pitch,
|
| @@ -600,7 +627,8 @@ TEST_P(PlanarFunctionsTest, M420ToI420) {
|
| TEST_P(PlanarFunctionsTest, NV12ToI420) {
|
| // Get the unalignment offset
|
| int unalignment = GetParam();
|
| - uint8 *y_pointer = NULL, *uv_pointer = NULL;
|
| + uint8_t* y_pointer = nullptr;
|
| + uint8_t* uv_pointer = nullptr;
|
| int y_pitch = kWidth;
|
| int uv_pitch = 2 * ((kWidth + 1) >> 1);
|
| int u_pitch = (kWidth + 1) >> 1;
|
| @@ -609,22 +637,22 @@ TEST_P(PlanarFunctionsTest, NV12ToI420) {
|
| int uv_size = ((kHeight + 1) >> 1) * ((kWidth + 1) >> 1);
|
| int block_size = 2;
|
| // Generate a fake input image.
|
| - rtc::scoped_ptr<uint8[]> yuv_input(
|
| - CreateFakeNV12TestingImage(kHeight, kWidth, block_size,
|
| - y_pointer, uv_pointer));
|
| + rtc::scoped_ptr<uint8_t[]> yuv_input(CreateFakeNV12TestingImage(
|
| + kHeight, kWidth, block_size, y_pointer, uv_pointer));
|
| // Allocate space for the output image.
|
| - rtc::scoped_ptr<uint8[]> yuv_output(
|
| - new uint8[I420_SIZE(kHeight, kWidth) + kAlignment + unalignment]);
|
| - uint8 *y_output_pointer = ALIGNP(yuv_output.get(), kAlignment) + unalignment;
|
| - uint8 *u_output_pointer = y_output_pointer + y_size;
|
| - uint8 *v_output_pointer = u_output_pointer + uv_size;
|
| + rtc::scoped_ptr<uint8_t[]> yuv_output(
|
| + new uint8_t[I420_SIZE(kHeight, kWidth) + kAlignment + unalignment]);
|
| + uint8_t* y_output_pointer =
|
| + ALIGNP(yuv_output.get(), kAlignment) + unalignment;
|
| + uint8_t* u_output_pointer = y_output_pointer + y_size;
|
| + uint8_t* v_output_pointer = u_output_pointer + uv_size;
|
| // Generate the expected output.
|
| - uint8 *y_expected_pointer = NULL, *u_expected_pointer = NULL,
|
| - *v_expected_pointer = NULL;
|
| - rtc::scoped_ptr<uint8[]> yuv_output_expected(
|
| - CreateFakeYuvTestingImage(kHeight, kWidth, block_size,
|
| - libyuv::kJpegYuv420,
|
| - y_expected_pointer, u_expected_pointer, v_expected_pointer));
|
| + uint8_t* y_expected_pointer = nullptr;
|
| + uint8_t* u_expected_pointer = nullptr;
|
| + uint8_t* v_expected_pointer = nullptr;
|
| + rtc::scoped_ptr<uint8_t[]> yuv_output_expected(CreateFakeYuvTestingImage(
|
| + kHeight, kWidth, block_size, libyuv::kJpegYuv420, y_expected_pointer,
|
| + u_expected_pointer, v_expected_pointer));
|
|
|
| for (int i = 0; i < repeat_; ++i) {
|
| libyuv::NV12ToI420(y_pointer, y_pitch,
|
| @@ -644,50 +672,49 @@ TEST_P(PlanarFunctionsTest, NV12ToI420) {
|
| }
|
|
|
| // A common macro for testing converting YUY2/UYVY to I420.
|
| -#define TEST_YUVTOI420(SRC_NAME, MSE, BLOCK_SIZE) \
|
| -TEST_P(PlanarFunctionsTest, SRC_NAME##ToI420) { \
|
| - /* Get the unalignment offset.*/ \
|
| - int unalignment = GetParam(); \
|
| - uint8 *yuv_pointer = NULL; \
|
| - int yuv_pitch = 2 * ((kWidth + 1) & ~1); \
|
| - int y_pitch = kWidth; \
|
| - int u_pitch = (kWidth + 1) >> 1; \
|
| - int v_pitch = (kWidth + 1) >> 1; \
|
| - int y_size = kHeight * kWidth; \
|
| - int uv_size = ((kHeight + 1) >> 1) * ((kWidth + 1) >> 1); \
|
| - int block_size = 2; \
|
| - /* Generate a fake input image.*/ \
|
| - rtc::scoped_ptr<uint8[]> yuv_input( \
|
| - CreateFakeInterleaveYuvTestingImage(kHeight, kWidth, BLOCK_SIZE, \
|
| - yuv_pointer, FOURCC_##SRC_NAME)); \
|
| - /* Allocate space for the output image.*/ \
|
| - rtc::scoped_ptr<uint8[]> yuv_output( \
|
| - new uint8[I420_SIZE(kHeight, kWidth) + kAlignment + unalignment]); \
|
| - uint8 *y_output_pointer = ALIGNP(yuv_output.get(), kAlignment) + \
|
| - unalignment; \
|
| - uint8 *u_output_pointer = y_output_pointer + y_size; \
|
| - uint8 *v_output_pointer = u_output_pointer + uv_size; \
|
| - /* Generate the expected output.*/ \
|
| - uint8 *y_expected_pointer = NULL, *u_expected_pointer = NULL, \
|
| - *v_expected_pointer = NULL; \
|
| - rtc::scoped_ptr<uint8[]> yuv_output_expected( \
|
| - CreateFakeYuvTestingImage(kHeight, kWidth, block_size, \
|
| - libyuv::kJpegYuv420, \
|
| - y_expected_pointer, u_expected_pointer, v_expected_pointer)); \
|
| - for (int i = 0; i < repeat_; ++i) { \
|
| - libyuv::SRC_NAME##ToI420(yuv_pointer, yuv_pitch, \
|
| - y_output_pointer, y_pitch, \
|
| - u_output_pointer, u_pitch, \
|
| - v_output_pointer, v_pitch, \
|
| - kWidth, kHeight); \
|
| - } \
|
| - /* Compare the output frame with what is expected.*/ \
|
| - /* Note: MSE should be set to a larger threshold if an odd block width*/ \
|
| - /* is used, since the conversion will be lossy.*/ \
|
| - EXPECT_TRUE(IsMemoryEqual(y_output_pointer, y_expected_pointer, \
|
| - I420_SIZE(kHeight, kWidth), MSE)); \
|
| - if (dump_) { DumpYuvImage(y_output_pointer, kWidth, kHeight); } \
|
| -} \
|
| +#define TEST_YUVTOI420(SRC_NAME, MSE, BLOCK_SIZE) \
|
| + TEST_P(PlanarFunctionsTest, SRC_NAME##ToI420) { \
|
| + /* Get the unalignment offset.*/ \
|
| + int unalignment = GetParam(); \
|
| + uint8_t* yuv_pointer = nullptr; \
|
| + int yuv_pitch = 2 * ((kWidth + 1) & ~1); \
|
| + int y_pitch = kWidth; \
|
| + int u_pitch = (kWidth + 1) >> 1; \
|
| + int v_pitch = (kWidth + 1) >> 1; \
|
| + int y_size = kHeight * kWidth; \
|
| + int uv_size = ((kHeight + 1) >> 1) * ((kWidth + 1) >> 1); \
|
| + int block_size = 2; \
|
| + /* Generate a fake input image.*/ \
|
| + rtc::scoped_ptr<uint8_t[]> yuv_input(CreateFakeInterleaveYuvTestingImage( \
|
| + kHeight, kWidth, BLOCK_SIZE, yuv_pointer, FOURCC_##SRC_NAME)); \
|
| + /* Allocate space for the output image.*/ \
|
| + rtc::scoped_ptr<uint8_t[]> yuv_output( \
|
| + new uint8_t[I420_SIZE(kHeight, kWidth) + kAlignment + unalignment]); \
|
| + uint8_t* y_output_pointer = \
|
| + ALIGNP(yuv_output.get(), kAlignment) + unalignment; \
|
| + uint8_t* u_output_pointer = y_output_pointer + y_size; \
|
| + uint8_t* v_output_pointer = u_output_pointer + uv_size; \
|
| + /* Generate the expected output.*/ \
|
| + uint8_t* y_expected_pointer = nullptr; \
|
| + uint8_t* u_expected_pointer = nullptr; \
|
| + uint8_t* v_expected_pointer = nullptr; \
|
| + rtc::scoped_ptr<uint8_t[]> yuv_output_expected(CreateFakeYuvTestingImage( \
|
| + kHeight, kWidth, block_size, libyuv::kJpegYuv420, y_expected_pointer, \
|
| + u_expected_pointer, v_expected_pointer)); \
|
| + for (int i = 0; i < repeat_; ++i) { \
|
| + libyuv::SRC_NAME##ToI420(yuv_pointer, yuv_pitch, y_output_pointer, \
|
| + y_pitch, u_output_pointer, u_pitch, \
|
| + v_output_pointer, v_pitch, kWidth, kHeight); \
|
| + } \
|
| + /* Compare the output frame with what is expected.*/ \
|
| + /* Note: MSE should be set to a larger threshold if an odd block width*/ \
|
| + /* is used, since the conversion will be lossy.*/ \
|
| + EXPECT_TRUE(IsMemoryEqual(y_output_pointer, y_expected_pointer, \
|
| + I420_SIZE(kHeight, kWidth), MSE)); \
|
| + if (dump_) { \
|
| + DumpYuvImage(y_output_pointer, kWidth, kHeight); \
|
| + } \
|
| + }
|
|
|
| // TEST_P(PlanarFunctionsTest, YUV2ToI420)
|
| TEST_YUVTOI420(YUY2, 1.e-6, 2);
|
| @@ -695,37 +722,38 @@ TEST_YUVTOI420(YUY2, 1.e-6, 2);
|
| TEST_YUVTOI420(UYVY, 1.e-6, 2);
|
|
|
| // A common macro for testing converting I420 to ARGB, BGRA and ABGR.
|
| -#define TEST_YUVTORGB(SRC_NAME, DST_NAME, JPG_TYPE, MSE, BLOCK_SIZE) \
|
| -TEST_F(PlanarFunctionsTest, SRC_NAME##To##DST_NAME) { \
|
| - uint8 *y_pointer = NULL, *u_pointer = NULL, *v_pointer = NULL; \
|
| - uint8 *argb_expected_pointer = NULL; \
|
| - int y_pitch = kWidth; \
|
| - int u_pitch = (kWidth + 1) >> 1; \
|
| - int v_pitch = (kWidth + 1) >> 1; \
|
| - /* Generate a fake input image.*/ \
|
| - rtc::scoped_ptr<uint8[]> yuv_input( \
|
| - CreateFakeYuvTestingImage(kHeight, kWidth, BLOCK_SIZE, JPG_TYPE, \
|
| - y_pointer, u_pointer, v_pointer)); \
|
| - /* Generate the expected output.*/ \
|
| - rtc::scoped_ptr<uint8[]> argb_expected( \
|
| - CreateFakeArgbTestingImage(kHeight, kWidth, BLOCK_SIZE, \
|
| - argb_expected_pointer, FOURCC_##DST_NAME)); \
|
| - /* Allocate space for the output.*/ \
|
| - rtc::scoped_ptr<uint8[]> argb_output( \
|
| - new uint8[kHeight * kWidth * 4 + kAlignment]); \
|
| - uint8 *argb_pointer = ALIGNP(argb_expected.get(), kAlignment); \
|
| - for (int i = 0; i < repeat_; ++i) { \
|
| - libyuv::SRC_NAME##To##DST_NAME(y_pointer, y_pitch, \
|
| - u_pointer, u_pitch, \
|
| - v_pointer, v_pitch, \
|
| - argb_pointer, \
|
| - kWidth * 4, \
|
| - kWidth, kHeight); \
|
| - } \
|
| - EXPECT_TRUE(IsMemoryEqual(argb_expected_pointer, argb_pointer, \
|
| - kHeight * kWidth * 4, MSE)); \
|
| - if (dump_) { DumpArgbImage(argb_pointer, kWidth, kHeight); } \
|
| -}
|
| +#define TEST_YUVTORGB(SRC_NAME, DST_NAME, JPG_TYPE, MSE, BLOCK_SIZE) \
|
| + TEST_F(PlanarFunctionsTest, SRC_NAME##To##DST_NAME) { \
|
| + uint8_t* y_pointer = nullptr; \
|
| + uint8_t* u_pointer = nullptr; \
|
| + uint8_t* v_pointer = nullptr; \
|
| + uint8_t* argb_expected_pointer = NULL; \
|
| + int y_pitch = kWidth; \
|
| + int u_pitch = (kWidth + 1) >> 1; \
|
| + int v_pitch = (kWidth + 1) >> 1; \
|
| + /* Generate a fake input image.*/ \
|
| + rtc::scoped_ptr<uint8_t[]> yuv_input( \
|
| + CreateFakeYuvTestingImage(kHeight, kWidth, BLOCK_SIZE, JPG_TYPE, \
|
| + y_pointer, u_pointer, v_pointer)); \
|
| + /* Generate the expected output.*/ \
|
| + rtc::scoped_ptr<uint8_t[]> argb_expected( \
|
| + CreateFakeArgbTestingImage(kHeight, kWidth, BLOCK_SIZE, \
|
| + argb_expected_pointer, FOURCC_##DST_NAME)); \
|
| + /* Allocate space for the output.*/ \
|
| + rtc::scoped_ptr<uint8_t[]> argb_output( \
|
| + new uint8_t[kHeight * kWidth * 4 + kAlignment]); \
|
| + uint8_t* argb_pointer = ALIGNP(argb_expected.get(), kAlignment); \
|
| + for (int i = 0; i < repeat_; ++i) { \
|
| + libyuv::SRC_NAME##To##DST_NAME(y_pointer, y_pitch, u_pointer, u_pitch, \
|
| + v_pointer, v_pitch, argb_pointer, \
|
| + kWidth * 4, kWidth, kHeight); \
|
| + } \
|
| + EXPECT_TRUE(IsMemoryEqual(argb_expected_pointer, argb_pointer, \
|
| + kHeight* kWidth * 4, MSE)); \
|
| + if (dump_) { \
|
| + DumpArgbImage(argb_pointer, kWidth, kHeight); \
|
| + } \
|
| + }
|
|
|
| // TEST_F(PlanarFunctionsTest, I420ToARGB)
|
| TEST_YUVTORGB(I420, ARGB, libyuv::kJpegYuv420, 3., 2);
|
| @@ -738,34 +766,35 @@ TEST_YUVTORGB(I422, ARGB, libyuv::kJpegYuv422, 3., 2);
|
| // TEST_F(PlanarFunctionsTest, I444ToARGB)
|
| TEST_YUVTORGB(I444, ARGB, libyuv::kJpegYuv444, 3., 3);
|
| // Note: an empirical MSE tolerance 3.0 is used here for the probable
|
| -// error from float-to-uint8 type conversion.
|
| +// error from float-to-uint8_t type conversion.
|
|
|
| TEST_F(PlanarFunctionsTest, I400ToARGB_Reference) {
|
| - uint8 *y_pointer = NULL, *u_pointer = NULL, *v_pointer = NULL;
|
| + uint8_t* y_pointer = nullptr;
|
| + uint8_t* u_pointer = nullptr;
|
| + uint8_t* v_pointer = nullptr;
|
| int y_pitch = kWidth;
|
| int u_pitch = (kWidth + 1) >> 1;
|
| int v_pitch = (kWidth + 1) >> 1;
|
| int block_size = 3;
|
| // Generate a fake input image.
|
| - rtc::scoped_ptr<uint8[]> yuv_input(
|
| - CreateFakeYuvTestingImage(kHeight, kWidth, block_size,
|
| - libyuv::kJpegYuv420,
|
| - y_pointer, u_pointer, v_pointer));
|
| + rtc::scoped_ptr<uint8_t[]> yuv_input(CreateFakeYuvTestingImage(
|
| + kHeight, kWidth, block_size, libyuv::kJpegYuv420, y_pointer, u_pointer,
|
| + v_pointer));
|
| // As the comparison standard, we convert a grayscale image (by setting both
|
| // U and V channels to be 128) using an I420 converter.
|
| int uv_size = ((kHeight + 1) >> 1) * ((kWidth + 1) >> 1);
|
|
|
| - rtc::scoped_ptr<uint8[]> uv(new uint8[uv_size + kAlignment]);
|
| + rtc::scoped_ptr<uint8_t[]> uv(new uint8_t[uv_size + kAlignment]);
|
| u_pointer = v_pointer = ALIGNP(uv.get(), kAlignment);
|
| memset(u_pointer, 128, uv_size);
|
|
|
| // Allocate space for the output image and generate the expected output.
|
| - rtc::scoped_ptr<uint8[]> argb_expected(
|
| - new uint8[kHeight * kWidth * 4 + kAlignment]);
|
| - rtc::scoped_ptr<uint8[]> argb_output(
|
| - new uint8[kHeight * kWidth * 4 + kAlignment]);
|
| - uint8 *argb_expected_pointer = ALIGNP(argb_expected.get(), kAlignment);
|
| - uint8 *argb_pointer = ALIGNP(argb_output.get(), kAlignment);
|
| + rtc::scoped_ptr<uint8_t[]> argb_expected(
|
| + new uint8_t[kHeight * kWidth * 4 + kAlignment]);
|
| + rtc::scoped_ptr<uint8_t[]> argb_output(
|
| + new uint8_t[kHeight * kWidth * 4 + kAlignment]);
|
| + uint8_t* argb_expected_pointer = ALIGNP(argb_expected.get(), kAlignment);
|
| + uint8_t* argb_pointer = ALIGNP(argb_output.get(), kAlignment);
|
|
|
| libyuv::I420ToARGB(y_pointer, y_pitch,
|
| u_pointer, u_pitch,
|
| @@ -787,35 +816,36 @@ TEST_F(PlanarFunctionsTest, I400ToARGB_Reference) {
|
| TEST_P(PlanarFunctionsTest, I400ToARGB) {
|
| // Get the unalignment offset
|
| int unalignment = GetParam();
|
| - uint8 *y_pointer = NULL, *u_pointer = NULL, *v_pointer = NULL;
|
| + uint8_t* y_pointer = nullptr;
|
| + uint8_t* u_pointer = nullptr;
|
| + uint8_t* v_pointer = nullptr;
|
| int y_pitch = kWidth;
|
| int u_pitch = (kWidth + 1) >> 1;
|
| int v_pitch = (kWidth + 1) >> 1;
|
| int block_size = 3;
|
| // Generate a fake input image.
|
| - rtc::scoped_ptr<uint8[]> yuv_input(
|
| - CreateFakeYuvTestingImage(kHeight, kWidth, block_size,
|
| - libyuv::kJpegYuv420,
|
| - y_pointer, u_pointer, v_pointer));
|
| + rtc::scoped_ptr<uint8_t[]> yuv_input(CreateFakeYuvTestingImage(
|
| + kHeight, kWidth, block_size, libyuv::kJpegYuv420, y_pointer, u_pointer,
|
| + v_pointer));
|
| // As the comparison standard, we convert a grayscale image (by setting both
|
| // U and V channels to be 128) using an I420 converter.
|
| int uv_size = ((kHeight + 1) >> 1) * ((kWidth + 1) >> 1);
|
|
|
| // 1 byte extra if in the unaligned mode.
|
| - rtc::scoped_ptr<uint8[]> uv(new uint8[uv_size * 2 + kAlignment]);
|
| + rtc::scoped_ptr<uint8_t[]> uv(new uint8_t[uv_size * 2 + kAlignment]);
|
| u_pointer = ALIGNP(uv.get(), kAlignment);
|
| v_pointer = u_pointer + uv_size;
|
| memset(u_pointer, 128, uv_size);
|
| memset(v_pointer, 128, uv_size);
|
|
|
| // Allocate space for the output image and generate the expected output.
|
| - rtc::scoped_ptr<uint8[]> argb_expected(
|
| - new uint8[kHeight * kWidth * 4 + kAlignment]);
|
| + rtc::scoped_ptr<uint8_t[]> argb_expected(
|
| + new uint8_t[kHeight * kWidth * 4 + kAlignment]);
|
| // 1 byte extra if in the misalinged mode.
|
| - rtc::scoped_ptr<uint8[]> argb_output(
|
| - new uint8[kHeight * kWidth * 4 + kAlignment + unalignment]);
|
| - uint8 *argb_expected_pointer = ALIGNP(argb_expected.get(), kAlignment);
|
| - uint8 *argb_pointer = ALIGNP(argb_output.get(), kAlignment) + unalignment;
|
| + rtc::scoped_ptr<uint8_t[]> argb_output(
|
| + new uint8_t[kHeight * kWidth * 4 + kAlignment + unalignment]);
|
| + uint8_t* argb_expected_pointer = ALIGNP(argb_expected.get(), kAlignment);
|
| + uint8_t* argb_pointer = ALIGNP(argb_output.get(), kAlignment) + unalignment;
|
|
|
| libyuv::I420ToARGB(y_pointer, y_pitch,
|
| u_pointer, u_pitch,
|
| @@ -839,22 +869,20 @@ TEST_P(PlanarFunctionsTest, ARGBToI400) {
|
| // Get the unalignment offset
|
| int unalignment = GetParam();
|
| // Create a fake ARGB input image.
|
| - uint8 *y_pointer = NULL, *u_pointer = NULL, *v_pointer = NULL;
|
| - uint8 *argb_pointer = NULL;
|
| + uint8_t* y_pointer = NULL, * u_pointer = NULL, * v_pointer = NULL;
|
| + uint8_t* argb_pointer = NULL;
|
| int block_size = 3;
|
| // Generate a fake input image.
|
| - rtc::scoped_ptr<uint8[]> argb_input(
|
| - CreateFakeArgbTestingImage(kHeight, kWidth, block_size,
|
| - argb_pointer, FOURCC_ARGB));
|
| + rtc::scoped_ptr<uint8_t[]> argb_input(CreateFakeArgbTestingImage(
|
| + kHeight, kWidth, block_size, argb_pointer, FOURCC_ARGB));
|
| // Generate the expected output. Only Y channel is used
|
| - rtc::scoped_ptr<uint8[]> yuv_expected(
|
| - CreateFakeYuvTestingImage(kHeight, kWidth, block_size,
|
| - libyuv::kJpegYuv420,
|
| - y_pointer, u_pointer, v_pointer));
|
| + rtc::scoped_ptr<uint8_t[]> yuv_expected(CreateFakeYuvTestingImage(
|
| + kHeight, kWidth, block_size, libyuv::kJpegYuv420, y_pointer, u_pointer,
|
| + v_pointer));
|
| // Allocate space for the Y output.
|
| - rtc::scoped_ptr<uint8[]> y_output(
|
| - new uint8[kHeight * kWidth + kAlignment + unalignment]);
|
| - uint8 *y_output_pointer = ALIGNP(y_output.get(), kAlignment) + unalignment;
|
| + rtc::scoped_ptr<uint8_t[]> y_output(
|
| + new uint8_t[kHeight * kWidth + kAlignment + unalignment]);
|
| + uint8_t* y_output_pointer = ALIGNP(y_output.get(), kAlignment) + unalignment;
|
|
|
| for (int i = 0; i < repeat_; ++i) {
|
| libyuv::ARGBToI400(argb_pointer, kWidth * 4, y_output_pointer, kWidth,
|
| @@ -862,7 +890,7 @@ TEST_P(PlanarFunctionsTest, ARGBToI400) {
|
| }
|
| // Check if the output matches the input Y channel.
|
| // Note: an empirical MSE tolerance 2.0 is used here for the probable
|
| - // error from float-to-uint8 type conversion.
|
| + // error from float-to-uint8_t type conversion.
|
| EXPECT_TRUE(IsMemoryEqual(y_output_pointer, y_pointer,
|
| kHeight * kWidth, 2.));
|
| if (dump_) { DumpArgbImage(argb_pointer, kWidth, kHeight); }
|
| @@ -870,31 +898,32 @@ TEST_P(PlanarFunctionsTest, ARGBToI400) {
|
|
|
| // A common macro for testing converting RAW, BG24, BGRA, and ABGR
|
| // to ARGB.
|
| -#define TEST_ARGB(SRC_NAME, FC_ID, BPP, BLOCK_SIZE) \
|
| -TEST_P(PlanarFunctionsTest, SRC_NAME##ToARGB) { \
|
| - int unalignment = GetParam(); /* Get the unalignment offset.*/ \
|
| - uint8 *argb_expected_pointer = NULL, *src_pointer = NULL; \
|
| - /* Generate a fake input image.*/ \
|
| - rtc::scoped_ptr<uint8[]> src_input( \
|
| - CreateFakeArgbTestingImage(kHeight, kWidth, BLOCK_SIZE, \
|
| - src_pointer, FOURCC_##FC_ID)); \
|
| - /* Generate the expected output.*/ \
|
| - rtc::scoped_ptr<uint8[]> argb_expected( \
|
| - CreateFakeArgbTestingImage(kHeight, kWidth, BLOCK_SIZE, \
|
| - argb_expected_pointer, FOURCC_ARGB)); \
|
| - /* Allocate space for the output; 1 byte extra if in the unaligned mode.*/ \
|
| - rtc::scoped_ptr<uint8[]> argb_output( \
|
| - new uint8[kHeight * kWidth * 4 + kAlignment + unalignment]); \
|
| - uint8 *argb_pointer = ALIGNP(argb_output.get(), kAlignment) + unalignment; \
|
| - for (int i = 0; i < repeat_; ++i) { \
|
| - libyuv:: SRC_NAME##ToARGB(src_pointer, kWidth * (BPP), argb_pointer, \
|
| - kWidth * 4, kWidth, kHeight); \
|
| - } \
|
| - /* Compare the result; expect identical.*/ \
|
| - EXPECT_TRUE(IsMemoryEqual(argb_expected_pointer, argb_pointer, \
|
| - kHeight * kWidth * 4, 1.e-6)); \
|
| - if (dump_) { DumpArgbImage(argb_pointer, kWidth, kHeight); } \
|
| -}
|
| +#define TEST_ARGB(SRC_NAME, FC_ID, BPP, BLOCK_SIZE) \
|
| + TEST_P(PlanarFunctionsTest, SRC_NAME##ToARGB) { \
|
| + int unalignment = GetParam(); /* Get the unalignment offset.*/ \
|
| + uint8_t* argb_expected_pointer = NULL, * src_pointer = NULL; \
|
| + /* Generate a fake input image.*/ \
|
| + rtc::scoped_ptr<uint8_t[]> src_input(CreateFakeArgbTestingImage( \
|
| + kHeight, kWidth, BLOCK_SIZE, src_pointer, FOURCC_##FC_ID)); \
|
| + /* Generate the expected output.*/ \
|
| + rtc::scoped_ptr<uint8_t[]> argb_expected(CreateFakeArgbTestingImage( \
|
| + kHeight, kWidth, BLOCK_SIZE, argb_expected_pointer, FOURCC_ARGB)); \
|
| + /* Allocate space for the output; 1 byte extra if in the unaligned mode.*/ \
|
| + rtc::scoped_ptr<uint8_t[]> argb_output( \
|
| + new uint8_t[kHeight * kWidth * 4 + kAlignment + unalignment]); \
|
| + uint8_t* argb_pointer = \
|
| + ALIGNP(argb_output.get(), kAlignment) + unalignment; \
|
| + for (int i = 0; i < repeat_; ++i) { \
|
| + libyuv::SRC_NAME##ToARGB(src_pointer, kWidth*(BPP), argb_pointer, \
|
| + kWidth * 4, kWidth, kHeight); \
|
| + } \
|
| + /* Compare the result; expect identical.*/ \
|
| + EXPECT_TRUE(IsMemoryEqual(argb_expected_pointer, argb_pointer, \
|
| + kHeight* kWidth * 4, 1.e-6)); \
|
| + if (dump_) { \
|
| + DumpArgbImage(argb_pointer, kWidth, kHeight); \
|
| + } \
|
| + }
|
|
|
| TEST_ARGB(RAW, RAW, 3, 3); // TEST_P(PlanarFunctionsTest, RAWToARGB)
|
| TEST_ARGB(BG24, 24BG, 3, 3); // TEST_P(PlanarFunctionsTest, BG24ToARGB)
|
|
|