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 |