Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(620)

Side by Side Diff: unit_test/convert_test.cc

Issue 2276703002: NV12 allow NULL for Y (Closed) Base URL: https://chromium.googlesource.com/libyuv/libyuv@master
Patch Set: document planar formats Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/convert.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. 2 * Copyright 2011 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 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 420 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
421 benchmark_width_, _Invert, -, 0) \ 421 benchmark_width_, _Invert, -, 0) \
422 TESTPLANARTOBPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \ 422 TESTPLANARTOBPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \
423 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 423 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
424 benchmark_width_, _Opt, +, 0) 424 benchmark_width_, _Opt, +, 0)
425 425
426 TESTPLANARTOBP(I420, 2, 2, NV12, 2, 2) 426 TESTPLANARTOBP(I420, 2, 2, NV12, 2, 2)
427 TESTPLANARTOBP(I420, 2, 2, NV21, 2, 2) 427 TESTPLANARTOBP(I420, 2, 2, NV21, 2, 2)
428 428
429 #define TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \ 429 #define TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \
430 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, W1280, N, NEG, OFF) \ 430 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, W1280, N, NEG, OFF, \
431 DOY) \
431 TEST_F(LibYUVConvertTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \ 432 TEST_F(LibYUVConvertTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \
432 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \ 433 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \
433 const int kHeight = benchmark_height_; \ 434 const int kHeight = benchmark_height_; \
434 align_buffer_page_end(src_y, kWidth * kHeight + OFF); \ 435 align_buffer_page_end(src_y, kWidth * kHeight + OFF); \
435 align_buffer_page_end(src_uv, 2 * SUBSAMPLE(kWidth, SRC_SUBSAMP_X) * \ 436 align_buffer_page_end(src_uv, 2 * SUBSAMPLE(kWidth, SRC_SUBSAMP_X) * \
436 SUBSAMPLE(kHeight, SRC_SUBSAMP_Y) + OFF); \ 437 SUBSAMPLE(kHeight, SRC_SUBSAMP_Y) + OFF); \
437 align_buffer_page_end(dst_y_c, kWidth * kHeight); \ 438 align_buffer_page_end(dst_y_c, kWidth * kHeight); \
438 align_buffer_page_end(dst_u_c, \ 439 align_buffer_page_end(dst_u_c, \
439 SUBSAMPLE(kWidth, SUBSAMP_X) * \ 440 SUBSAMPLE(kWidth, SUBSAMP_X) * \
440 SUBSAMPLE(kHeight, SUBSAMP_Y)); \ 441 SUBSAMPLE(kHeight, SUBSAMP_Y)); \
(...skipping 23 matching lines...) Expand all
464 SUBSAMPLE(kHeight, SUBSAMP_Y)); \ 465 SUBSAMPLE(kHeight, SUBSAMP_Y)); \
465 memset(dst_y_opt, 101, kWidth * kHeight); \ 466 memset(dst_y_opt, 101, kWidth * kHeight); \
466 memset(dst_u_opt, 102, SUBSAMPLE(kWidth, SUBSAMP_X) * \ 467 memset(dst_u_opt, 102, SUBSAMPLE(kWidth, SUBSAMP_X) * \
467 SUBSAMPLE(kHeight, SUBSAMP_Y)); \ 468 SUBSAMPLE(kHeight, SUBSAMP_Y)); \
468 memset(dst_v_opt, 103, SUBSAMPLE(kWidth, SUBSAMP_X) * \ 469 memset(dst_v_opt, 103, SUBSAMPLE(kWidth, SUBSAMP_X) * \
469 SUBSAMPLE(kHeight, SUBSAMP_Y)); \ 470 SUBSAMPLE(kHeight, SUBSAMP_Y)); \
470 MaskCpuFlags(disable_cpu_flags_); \ 471 MaskCpuFlags(disable_cpu_flags_); \
471 SRC_FMT_PLANAR##To##FMT_PLANAR(src_y + OFF, kWidth, \ 472 SRC_FMT_PLANAR##To##FMT_PLANAR(src_y + OFF, kWidth, \
472 src_uv + OFF, \ 473 src_uv + OFF, \
473 2 * SUBSAMPLE(kWidth, SRC_SUBSAMP_X), \ 474 2 * SUBSAMPLE(kWidth, SRC_SUBSAMP_X), \
474 dst_y_c, kWidth, \ 475 DOY ? dst_y_c : NULL, kWidth, \
475 dst_u_c, SUBSAMPLE(kWidth, SUBSAMP_X), \ 476 dst_u_c, SUBSAMPLE(kWidth, SUBSAMP_X), \
476 dst_v_c, SUBSAMPLE(kWidth, SUBSAMP_X), \ 477 dst_v_c, SUBSAMPLE(kWidth, SUBSAMP_X), \
477 kWidth, NEG kHeight); \ 478 kWidth, NEG kHeight); \
478 MaskCpuFlags(benchmark_cpu_info_); \ 479 MaskCpuFlags(benchmark_cpu_info_); \
479 for (int i = 0; i < benchmark_iterations_; ++i) { \ 480 for (int i = 0; i < benchmark_iterations_; ++i) { \
480 SRC_FMT_PLANAR##To##FMT_PLANAR(src_y + OFF, kWidth, \ 481 SRC_FMT_PLANAR##To##FMT_PLANAR(src_y + OFF, kWidth, \
481 src_uv + OFF, \ 482 src_uv + OFF, \
482 2 * SUBSAMPLE(kWidth, SRC_SUBSAMP_X), \ 483 2 * SUBSAMPLE(kWidth, SRC_SUBSAMP_X), \
483 dst_y_opt, kWidth, \ 484 DOY ? dst_y_opt : NULL, kWidth, \
484 dst_u_opt, SUBSAMPLE(kWidth, SUBSAMP_X), \ 485 dst_u_opt, SUBSAMPLE(kWidth, SUBSAMP_X), \
485 dst_v_opt, SUBSAMPLE(kWidth, SUBSAMP_X), \ 486 dst_v_opt, SUBSAMPLE(kWidth, SUBSAMP_X), \
486 kWidth, NEG kHeight); \ 487 kWidth, NEG kHeight); \
487 } \ 488 } \
488 int max_diff = 0; \ 489 int max_diff = 0; \
489 for (int i = 0; i < kHeight; ++i) { \ 490 if (DOY) { \
490 for (int j = 0; j < kWidth; ++j) { \ 491 for (int i = 0; i < kHeight; ++i) { \
491 int abs_diff = \ 492 for (int j = 0; j < kWidth; ++j) { \
492 abs(static_cast<int>(dst_y_c[i * kWidth + j]) - \ 493 int abs_diff = \
493 static_cast<int>(dst_y_opt[i * kWidth + j])); \ 494 abs(static_cast<int>(dst_y_c[i * kWidth + j]) - \
494 if (abs_diff > max_diff) { \ 495 static_cast<int>(dst_y_opt[i * kWidth + j])); \
495 max_diff = abs_diff; \ 496 if (abs_diff > max_diff) { \
497 max_diff = abs_diff; \
498 } \
496 } \ 499 } \
497 } \ 500 } \
501 EXPECT_LE(max_diff, 1); \
498 } \ 502 } \
499 EXPECT_LE(max_diff, 1); \
500 for (int i = 0; i < SUBSAMPLE(kHeight, SUBSAMP_Y); ++i) { \ 503 for (int i = 0; i < SUBSAMPLE(kHeight, SUBSAMP_Y); ++i) { \
501 for (int j = 0; j < SUBSAMPLE(kWidth, SUBSAMP_X); ++j) { \ 504 for (int j = 0; j < SUBSAMPLE(kWidth, SUBSAMP_X); ++j) { \
502 int abs_diff = \ 505 int abs_diff = \
503 abs(static_cast<int>(dst_u_c[i * \ 506 abs(static_cast<int>(dst_u_c[i * \
504 SUBSAMPLE(kWidth, SUBSAMP_X) + j]) - \ 507 SUBSAMPLE(kWidth, SUBSAMP_X) + j]) - \
505 static_cast<int>(dst_u_opt[i * \ 508 static_cast<int>(dst_u_opt[i * \
506 SUBSAMPLE(kWidth, SUBSAMP_X) + j])); \ 509 SUBSAMPLE(kWidth, SUBSAMP_X) + j])); \
507 if (abs_diff > max_diff) { \ 510 if (abs_diff > max_diff) { \
508 max_diff = abs_diff; \ 511 max_diff = abs_diff; \
509 } \ 512 } \
(...skipping 20 matching lines...) Expand all
530 free_aligned_buffer_page_end(dst_u_opt); \ 533 free_aligned_buffer_page_end(dst_u_opt); \
531 free_aligned_buffer_page_end(dst_v_opt); \ 534 free_aligned_buffer_page_end(dst_v_opt); \
532 free_aligned_buffer_page_end(src_y); \ 535 free_aligned_buffer_page_end(src_y); \
533 free_aligned_buffer_page_end(src_uv); \ 536 free_aligned_buffer_page_end(src_uv); \
534 } 537 }
535 538
536 #define TESTBIPLANARTOP(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \ 539 #define TESTBIPLANARTOP(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \
537 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y) \ 540 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y) \
538 TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \ 541 TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \
539 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 542 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
540 benchmark_width_ - 4, _Any, +, 0) \ 543 benchmark_width_ - 4, _Any, +, 0, 1) \
541 TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \ 544 TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \
542 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 545 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
543 benchmark_width_, _Unaligned, +, 1) \ 546 benchmark_width_, _Unaligned, +, 1, 1) \
544 TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \ 547 TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \
545 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 548 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
546 benchmark_width_, _Invert, -, 0) \ 549 benchmark_width_, _Invert, -, 0, 1) \
547 TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \ 550 TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \
548 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 551 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
549 benchmark_width_, _Opt, +, 0) 552 benchmark_width_, _Opt, +, 0, 1) \
553 TESTBIPLANARTOPI(SRC_FMT_PLANAR, SRC_SUBSAMP_X, SRC_SUBSAMP_Y, \
554 FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
555 benchmark_width_, _NullY, +, 0, 0)
550 556
551 TESTBIPLANARTOP(NV12, 2, 2, I420, 2, 2) 557 TESTBIPLANARTOP(NV12, 2, 2, I420, 2, 2)
552 TESTBIPLANARTOP(NV21, 2, 2, I420, 2, 2) 558 TESTBIPLANARTOP(NV21, 2, 2, I420, 2, 2)
553 559
554 #define ALIGNINT(V, ALIGN) (((V) + (ALIGN) - 1) / (ALIGN) * (ALIGN)) 560 #define ALIGNINT(V, ALIGN) (((V) + (ALIGN) - 1) / (ALIGN) * (ALIGN))
555 561
556 #define TESTPLANARTOBI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, ALIGN, \ 562 #define TESTPLANARTOBI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, ALIGN, \
557 YALIGN, W1280, DIFF, N, NEG, OFF, FMT_C, BPP_C) \ 563 YALIGN, W1280, DIFF, N, NEG, OFF, FMT_C, BPP_C) \
558 TEST_F(LibYUVConvertTest, FMT_PLANAR##To##FMT_B##N) { \ 564 TEST_F(LibYUVConvertTest, FMT_PLANAR##To##FMT_B##N) { \
559 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \ 565 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \
(...skipping 1436 matching lines...) Expand 10 before | Expand all | Expand 10 after
1996 benchmark_width_, _Invert, -, 0, FMT_C, BPP_C, 0) \ 2002 benchmark_width_, _Invert, -, 0, FMT_C, BPP_C, 0) \
1997 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ 2003 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \
1998 benchmark_width_, _Opt, +, 0, FMT_C, BPP_C, 0) \ 2004 benchmark_width_, _Opt, +, 0, FMT_C, BPP_C, 0) \
1999 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ 2005 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \
2000 benchmark_width_, _Premult, +, 0, FMT_C, BPP_C, 1) 2006 benchmark_width_, _Premult, +, 0, FMT_C, BPP_C, 1)
2001 2007
2002 TESTQPLANARTOE(I420Alpha, 2, 2, ARGB, 1, 4, ABGR, 4) 2008 TESTQPLANARTOE(I420Alpha, 2, 2, ARGB, 1, 4, ABGR, 4)
2003 TESTQPLANARTOE(I420Alpha, 2, 2, ABGR, 1, 4, ARGB, 4) 2009 TESTQPLANARTOE(I420Alpha, 2, 2, ABGR, 1, 4, ARGB, 4)
2004 2010
2005 } // namespace libyuv 2011 } // namespace libyuv
OLDNEW
« no previous file with comments | « source/convert.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698