| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2015 The LibYuv Project Authors. All rights reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 #define ERROR_J420 4 | 30 #define ERROR_J420 4 |
| 31 #else | 31 #else |
| 32 #define ERROR_R 1 | 32 #define ERROR_R 1 |
| 33 #define ERROR_G 1 | 33 #define ERROR_G 1 |
| 34 #define ERROR_B 3 | 34 #define ERROR_B 3 |
| 35 #define ERROR_FULL 5 | 35 #define ERROR_FULL 5 |
| 36 #define ERROR_J420 3 | 36 #define ERROR_J420 3 |
| 37 #endif | 37 #endif |
| 38 | 38 |
| 39 #define TESTCS(TESTNAME, YUVTOARGB, ARGBTOYUV, HS1, HS, HN, DIFF) \ | 39 #define TESTCS(TESTNAME, YUVTOARGB, ARGBTOYUV, HS1, HS, HN, DIFF) \ |
| 40 TEST_F(LibYUVScaleTest, TESTNAME) { \ | 40 TEST_F(LibYUVScaleTest, DISABLED_ ## TESTNAME) { \ |
| 41 const int kPixels = benchmark_width_ * benchmark_height_; \ | 41 const int kPixels = benchmark_width_ * benchmark_height_; \ |
| 42 const int kHalfPixels = ((benchmark_width_ + 1) / 2) * \ | 42 const int kHalfPixels = ((benchmark_width_ + 1) / 2) * \ |
| 43 ((benchmark_height_ + HS1) / HS); \ | 43 ((benchmark_height_ + HS1) / HS); \ |
| 44 align_buffer_64(orig_y, kPixels); \ | 44 align_buffer_64(orig_y, kPixels); \ |
| 45 align_buffer_64(orig_u, kHalfPixels); \ | 45 align_buffer_64(orig_u, kHalfPixels); \ |
| 46 align_buffer_64(orig_v, kHalfPixels); \ | 46 align_buffer_64(orig_v, kHalfPixels); \ |
| 47 align_buffer_64(orig_pixels, kPixels * 4); \ | 47 align_buffer_64(orig_pixels, kPixels * 4); \ |
| 48 align_buffer_64(temp_y, kPixels); \ | 48 align_buffer_64(temp_y, kPixels); \ |
| 49 align_buffer_64(temp_u, kHalfPixels); \ | 49 align_buffer_64(temp_u, kHalfPixels); \ |
| 50 align_buffer_64(temp_v, kHalfPixels); \ | 50 align_buffer_64(temp_v, kHalfPixels); \ |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 *g = RoundToByte((y - 16) * 1.164 - (u - 128) * 0.391 - (v - 128) * 0.813); | 244 *g = RoundToByte((y - 16) * 1.164 - (u - 128) * 0.391 - (v - 128) * 0.813); |
| 245 *b = RoundToByte((y - 16) * 1.164 - (u - 128) * -2.018); | 245 *b = RoundToByte((y - 16) * 1.164 - (u - 128) * -2.018); |
| 246 } | 246 } |
| 247 | 247 |
| 248 static void YUVJToRGBReference(int y, int u, int v, int* r, int* g, int* b) { | 248 static void YUVJToRGBReference(int y, int u, int v, int* r, int* g, int* b) { |
| 249 *r = RoundToByte(y - (v - 128) * -1.40200); | 249 *r = RoundToByte(y - (v - 128) * -1.40200); |
| 250 *g = RoundToByte(y - (u - 128) * 0.34414 - (v - 128) * 0.71414); | 250 *g = RoundToByte(y - (u - 128) * 0.34414 - (v - 128) * 0.71414); |
| 251 *b = RoundToByte(y - (u - 128) * -1.77200); | 251 *b = RoundToByte(y - (u - 128) * -1.77200); |
| 252 } | 252 } |
| 253 | 253 |
| 254 TEST_F(LibYUVScaleTest, ScaleTestYUV) { | 254 TEST_F(LibYUVScaleTest, DISABLED_ScaleTestYUV) { |
| 255 int r0, g0, b0, r1, g1, b1; | 255 int r0, g0, b0, r1, g1, b1; |
| 256 | 256 |
| 257 // cyan (less red) | 257 // cyan (less red) |
| 258 YUVToRGBReference(240, 255, 0, &r0, &g0, &b0); | 258 YUVToRGBReference(240, 255, 0, &r0, &g0, &b0); |
| 259 EXPECT_EQ(56, r0); | 259 EXPECT_EQ(56, r0); |
| 260 EXPECT_EQ(255, g0); | 260 EXPECT_EQ(255, g0); |
| 261 EXPECT_EQ(255, b0); | 261 EXPECT_EQ(255, b0); |
| 262 | 262 |
| 263 YUVToRGB(240, 255, 0, &r1, &g1, &b1); | 263 YUVToRGB(240, 255, 0, &r1, &g1, &b1); |
| 264 EXPECT_EQ(57, r1); | 264 EXPECT_EQ(57, r1); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 290 EXPECT_NEAR(b0, b1, ERROR_B); | 290 EXPECT_NEAR(b0, b1, ERROR_B); |
| 291 | 291 |
| 292 YUVToRGBReference(i, 0, 255, &r0, &g0, &b0); | 292 YUVToRGBReference(i, 0, 255, &r0, &g0, &b0); |
| 293 YUVToRGB(i, 0, 255, &r1, &g1, &b1); | 293 YUVToRGB(i, 0, 255, &r1, &g1, &b1); |
| 294 EXPECT_NEAR(r0, r1, ERROR_R); | 294 EXPECT_NEAR(r0, r1, ERROR_R); |
| 295 EXPECT_NEAR(g0, g1, ERROR_G); | 295 EXPECT_NEAR(g0, g1, ERROR_G); |
| 296 EXPECT_NEAR(b0, b1, ERROR_B); | 296 EXPECT_NEAR(b0, b1, ERROR_B); |
| 297 } | 297 } |
| 298 } | 298 } |
| 299 | 299 |
| 300 TEST_F(LibYUVScaleTest, ScaleTestGreyYUV) { | 300 TEST_F(LibYUVScaleTest, DISABLED_ScaleTestGreyYUV) { |
| 301 int r0, g0, b0, r1, g1, b1, r2, g2, b2; | 301 int r0, g0, b0, r1, g1, b1, r2, g2, b2; |
| 302 | 302 |
| 303 // black | 303 // black |
| 304 YUVToRGBReference(16, 128, 128, &r0, &g0, &b0); | 304 YUVToRGBReference(16, 128, 128, &r0, &g0, &b0); |
| 305 EXPECT_EQ(0, r0); | 305 EXPECT_EQ(0, r0); |
| 306 EXPECT_EQ(0, g0); | 306 EXPECT_EQ(0, g0); |
| 307 EXPECT_EQ(0, b0); | 307 EXPECT_EQ(0, b0); |
| 308 | 308 |
| 309 YUVToRGB(16, 128, 128, &r1, &g1, &b1); | 309 YUVToRGB(16, 128, 128, &r1, &g1, &b1); |
| 310 EXPECT_EQ(0, r1); | 310 EXPECT_EQ(0, r1); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 } | 369 } |
| 370 printf("\nblue"); | 370 printf("\nblue"); |
| 371 for (i = 0; i < 256; ++i) { | 371 for (i = 0; i < 256; ++i) { |
| 372 if (rh[i] || gh[i] || bh[i]) { | 372 if (rh[i] || gh[i] || bh[i]) { |
| 373 printf("\t%8d", bh[i]); | 373 printf("\t%8d", bh[i]); |
| 374 } | 374 } |
| 375 } | 375 } |
| 376 printf("\n"); | 376 printf("\n"); |
| 377 } | 377 } |
| 378 | 378 |
| 379 TEST_F(LibYUVScaleTest, ScaleTestFullYUV) { | 379 TEST_F(LibYUVScaleTest, DISABLED_ScaleTestFullYUV) { |
| 380 int rh[256] = { 0, }, gh[256] = { 0, }, bh[256] = { 0, }; | 380 int rh[256] = { 0, }, gh[256] = { 0, }, bh[256] = { 0, }; |
| 381 for (int u = 0; u < 256; ++u) { | 381 for (int u = 0; u < 256; ++u) { |
| 382 for (int v = 0; v < 256; ++v) { | 382 for (int v = 0; v < 256; ++v) { |
| 383 for (int y2 = 0; y2 < 256; ++y2) { | 383 for (int y2 = 0; y2 < 256; ++y2) { |
| 384 int r0, g0, b0, r1, g1, b1; | 384 int r0, g0, b0, r1, g1, b1; |
| 385 int y = RANDOM256(y2); | 385 int y = RANDOM256(y2); |
| 386 YUVToRGBReference(y, u, v, &r0, &g0, &b0); | 386 YUVToRGBReference(y, u, v, &r0, &g0, &b0); |
| 387 YUVToRGB(y, u, v, &r1, &g1, &b1); | 387 YUVToRGB(y, u, v, &r1, &g1, &b1); |
| 388 EXPECT_NEAR(r0, r1, ERROR_R); | 388 EXPECT_NEAR(r0, r1, ERROR_R); |
| 389 EXPECT_NEAR(g0, g1, ERROR_G); | 389 EXPECT_NEAR(g0, g1, ERROR_G); |
| 390 EXPECT_NEAR(b0, b1, ERROR_B); | 390 EXPECT_NEAR(b0, b1, ERROR_B); |
| 391 ++rh[r1 - r0 + 128]; | 391 ++rh[r1 - r0 + 128]; |
| 392 ++gh[g1 - g0 + 128]; | 392 ++gh[g1 - g0 + 128]; |
| 393 ++bh[b1 - b0 + 128]; | 393 ++bh[b1 - b0 + 128]; |
| 394 } | 394 } |
| 395 } | 395 } |
| 396 } | 396 } |
| 397 ScalePrintHistogram(rh, gh, bh); | 397 ScalePrintHistogram(rh, gh, bh); |
| 398 } | 398 } |
| 399 | 399 |
| 400 TEST_F(LibYUVScaleTest, ScaleTestFullYUVJ) { | 400 TEST_F(LibYUVScaleTest, DISABLED_ScaleTestFullYUVJ) { |
| 401 int rh[256] = { 0, }, gh[256] = { 0, }, bh[256] = { 0, }; | 401 int rh[256] = { 0, }, gh[256] = { 0, }, bh[256] = { 0, }; |
| 402 for (int u = 0; u < 256; ++u) { | 402 for (int u = 0; u < 256; ++u) { |
| 403 for (int v = 0; v < 256; ++v) { | 403 for (int v = 0; v < 256; ++v) { |
| 404 for (int y2 = 0; y2 < 256; ++y2) { | 404 for (int y2 = 0; y2 < 256; ++y2) { |
| 405 int r0, g0, b0, r1, g1, b1; | 405 int r0, g0, b0, r1, g1, b1; |
| 406 int y = RANDOM256(y2); | 406 int y = RANDOM256(y2); |
| 407 YUVJToRGBReference(y, u, v, &r0, &g0, &b0); | 407 YUVJToRGBReference(y, u, v, &r0, &g0, &b0); |
| 408 YUVJToRGB(y, u, v, &r1, &g1, &b1); | 408 YUVJToRGB(y, u, v, &r1, &g1, &b1); |
| 409 EXPECT_NEAR(r0, r1, 1); | 409 EXPECT_NEAR(r0, r1, 1); |
| 410 EXPECT_NEAR(g0, g1, 1); | 410 EXPECT_NEAR(g0, g1, 1); |
| 411 EXPECT_NEAR(b0, b1, 1); | 411 EXPECT_NEAR(b0, b1, 1); |
| 412 ++rh[r1 - r0 + 128]; | 412 ++rh[r1 - r0 + 128]; |
| 413 ++gh[g1 - g0 + 128]; | 413 ++gh[g1 - g0 + 128]; |
| 414 ++bh[b1 - b0 + 128]; | 414 ++bh[b1 - b0 + 128]; |
| 415 } | 415 } |
| 416 } | 416 } |
| 417 } | 417 } |
| 418 ScalePrintHistogram(rh, gh, bh); | 418 ScalePrintHistogram(rh, gh, bh); |
| 419 } | 419 } |
| 420 | 420 |
| 421 TEST_F(LibYUVScaleTest, ScaleTestGreyYUVJ) { | 421 TEST_F(LibYUVScaleTest, DISABLED_ScaleTestGreyYUVJ) { |
| 422 int r0, g0, b0, r1, g1, b1, r2, g2, b2; | 422 int r0, g0, b0, r1, g1, b1, r2, g2, b2; |
| 423 | 423 |
| 424 // black | 424 // black |
| 425 YUVJToRGBReference(0, 128, 128, &r0, &g0, &b0); | 425 YUVJToRGBReference(0, 128, 128, &r0, &g0, &b0); |
| 426 EXPECT_EQ(0, r0); | 426 EXPECT_EQ(0, r0); |
| 427 EXPECT_EQ(0, g0); | 427 EXPECT_EQ(0, g0); |
| 428 EXPECT_EQ(0, b0); | 428 EXPECT_EQ(0, b0); |
| 429 | 429 |
| 430 YUVJToRGB(0, 128, 128, &r1, &g1, &b1); | 430 YUVJToRGB(0, 128, 128, &r1, &g1, &b1); |
| 431 EXPECT_EQ(0, r1); | 431 EXPECT_EQ(0, r1); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 461 EXPECT_EQ(r0, r1); | 461 EXPECT_EQ(r0, r1); |
| 462 EXPECT_EQ(g0, g1); | 462 EXPECT_EQ(g0, g1); |
| 463 EXPECT_EQ(b0, b1); | 463 EXPECT_EQ(b0, b1); |
| 464 EXPECT_EQ(r0, r2); | 464 EXPECT_EQ(r0, r2); |
| 465 EXPECT_EQ(g0, g2); | 465 EXPECT_EQ(g0, g2); |
| 466 EXPECT_EQ(b0, b2); | 466 EXPECT_EQ(b0, b2); |
| 467 } | 467 } |
| 468 } | 468 } |
| 469 | 469 |
| 470 } // namespace libyuv | 470 } // namespace libyuv |
| OLD | NEW |