OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2004 The WebRTC 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 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 } | 446 } |
447 r1 += pitch1; | 447 r1 += pitch1; |
448 r2 += pitch2; | 448 r2 += pitch2; |
449 } | 449 } |
450 return true; | 450 return true; |
451 } | 451 } |
452 | 452 |
453 static bool IsEqual(const cricket::VideoFrame& frame, | 453 static bool IsEqual(const cricket::VideoFrame& frame, |
454 int width, | 454 int width, |
455 int height, | 455 int height, |
456 int64_t time_stamp, | |
457 const uint8_t* y, | 456 const uint8_t* y, |
458 uint32_t ypitch, | 457 uint32_t ypitch, |
459 const uint8_t* u, | 458 const uint8_t* u, |
460 uint32_t upitch, | 459 uint32_t upitch, |
461 const uint8_t* v, | 460 const uint8_t* v, |
462 uint32_t vpitch, | 461 uint32_t vpitch, |
463 int max_error) { | 462 int max_error) { |
464 return IsSize(frame, width, height) && frame.GetTimeStamp() == time_stamp && | 463 return IsSize(frame, width, height) && |
465 IsPlaneEqual("y", frame.video_frame_buffer()->DataY(), | 464 IsPlaneEqual("y", frame.video_frame_buffer()->DataY(), |
466 frame.video_frame_buffer()->StrideY(), y, ypitch, | 465 frame.video_frame_buffer()->StrideY(), y, ypitch, |
467 static_cast<uint32_t>(width), | 466 static_cast<uint32_t>(width), |
468 static_cast<uint32_t>(height), max_error) && | 467 static_cast<uint32_t>(height), max_error) && |
469 IsPlaneEqual("u", frame.video_frame_buffer()->DataU(), | 468 IsPlaneEqual("u", frame.video_frame_buffer()->DataU(), |
470 frame.video_frame_buffer()->StrideU(), u, upitch, | 469 frame.video_frame_buffer()->StrideU(), u, upitch, |
471 static_cast<uint32_t>((width + 1) / 2), | 470 static_cast<uint32_t>((width + 1) / 2), |
472 static_cast<uint32_t>((height + 1) / 2), max_error) && | 471 static_cast<uint32_t>((height + 1) / 2), max_error) && |
473 IsPlaneEqual("v", frame.video_frame_buffer()->DataV(), | 472 IsPlaneEqual("v", frame.video_frame_buffer()->DataV(), |
474 frame.video_frame_buffer()->StrideV(), v, vpitch, | 473 frame.video_frame_buffer()->StrideV(), v, vpitch, |
475 static_cast<uint32_t>((width + 1) / 2), | 474 static_cast<uint32_t>((width + 1) / 2), |
476 static_cast<uint32_t>((height + 1) / 2), max_error); | 475 static_cast<uint32_t>((height + 1) / 2), max_error); |
477 } | 476 } |
478 | 477 |
479 static bool IsEqual(const cricket::VideoFrame& frame1, | 478 static bool IsEqual(const cricket::VideoFrame& frame1, |
480 const cricket::VideoFrame& frame2, | 479 const cricket::VideoFrame& frame2, |
481 int max_error) { | 480 int max_error) { |
482 return IsEqual(frame1, | 481 return frame1.GetTimeStamp() == frame2.GetTimeStamp() && |
483 frame2.width(), frame2.height(), | 482 IsEqual(frame1, frame2.width(), frame2.height(), |
484 frame2.GetTimeStamp(), | |
485 frame2.video_frame_buffer()->DataY(), | 483 frame2.video_frame_buffer()->DataY(), |
486 frame2.video_frame_buffer()->StrideY(), | 484 frame2.video_frame_buffer()->StrideY(), |
487 frame2.video_frame_buffer()->DataU(), | 485 frame2.video_frame_buffer()->DataU(), |
488 frame2.video_frame_buffer()->StrideU(), | 486 frame2.video_frame_buffer()->StrideU(), |
489 frame2.video_frame_buffer()->DataV(), | 487 frame2.video_frame_buffer()->DataV(), |
490 frame2.video_frame_buffer()->StrideV(), | 488 frame2.video_frame_buffer()->StrideV(), max_error); |
| 489 } |
| 490 |
| 491 static bool IsEqual( |
| 492 const cricket::VideoFrame& frame1, |
| 493 const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& buffer, |
| 494 int max_error) { |
| 495 return IsEqual(frame1, buffer->width(), buffer->height(), |
| 496 buffer->DataY(), buffer->StrideY(), |
| 497 buffer->DataU(), buffer->StrideU(), |
| 498 buffer->DataV(), buffer->StrideV(), |
491 max_error); | 499 max_error); |
492 } | 500 } |
493 | 501 |
494 static bool IsEqualWithCrop(const cricket::VideoFrame& frame1, | 502 static bool IsEqualWithCrop(const cricket::VideoFrame& frame1, |
495 const cricket::VideoFrame& frame2, | 503 const cricket::VideoFrame& frame2, |
496 int hcrop, int vcrop, int max_error) { | 504 int hcrop, int vcrop, int max_error) { |
497 return frame1.width() <= frame2.width() && | 505 return frame1.width() <= frame2.width() && |
498 frame1.height() <= frame2.height() && | 506 frame1.height() <= frame2.height() && |
| 507 frame1.GetTimeStamp() == frame2.GetTimeStamp() && |
499 IsEqual(frame1, | 508 IsEqual(frame1, |
500 frame2.width() - hcrop * 2, | 509 frame2.width() - hcrop * 2, |
501 frame2.height() - vcrop * 2, | 510 frame2.height() - vcrop * 2, |
502 frame2.GetTimeStamp(), | |
503 frame2.video_frame_buffer()->DataY() | 511 frame2.video_frame_buffer()->DataY() |
504 + vcrop * frame2.video_frame_buffer()->StrideY() | 512 + vcrop * frame2.video_frame_buffer()->StrideY() |
505 + hcrop, | 513 + hcrop, |
506 frame2.video_frame_buffer()->StrideY(), | 514 frame2.video_frame_buffer()->StrideY(), |
507 frame2.video_frame_buffer()->DataU() | 515 frame2.video_frame_buffer()->DataU() |
508 + vcrop * frame2.video_frame_buffer()->StrideU() / 2 | 516 + vcrop * frame2.video_frame_buffer()->StrideU() / 2 |
509 + hcrop / 2, | 517 + hcrop / 2, |
510 frame2.video_frame_buffer()->StrideU(), | 518 frame2.video_frame_buffer()->StrideU(), |
511 frame2.video_frame_buffer()->DataV() | 519 frame2.video_frame_buffer()->DataV() |
512 + vcrop * frame2.video_frame_buffer()->StrideV() / 2 | 520 + vcrop * frame2.video_frame_buffer()->StrideV() / 2 |
(...skipping 18 matching lines...) Expand all Loading... |
531 T frame; | 539 T frame; |
532 EXPECT_TRUE(IsNull(frame)); | 540 EXPECT_TRUE(IsNull(frame)); |
533 std::unique_ptr<rtc::MemoryStream> ms( | 541 std::unique_ptr<rtc::MemoryStream> ms( |
534 CreateYuvSample(kWidth, kHeight, 12)); | 542 CreateYuvSample(kWidth, kHeight, 12)); |
535 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_I420, | 543 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_I420, |
536 kWidth, kHeight, &frame)); | 544 kWidth, kHeight, &frame)); |
537 | 545 |
538 const uint8_t* y = reinterpret_cast<uint8_t*>(ms.get()->GetBuffer()); | 546 const uint8_t* y = reinterpret_cast<uint8_t*>(ms.get()->GetBuffer()); |
539 const uint8_t* u = y + kWidth * kHeight; | 547 const uint8_t* u = y + kWidth * kHeight; |
540 const uint8_t* v = u + kWidth * kHeight / 4; | 548 const uint8_t* v = u + kWidth * kHeight / 4; |
541 EXPECT_TRUE(IsEqual(frame, kWidth, kHeight, 0, y, kWidth, u, | 549 EXPECT_TRUE(IsEqual(frame, kWidth, kHeight, y, kWidth, u, kWidth / 2, v, |
542 kWidth / 2, v, kWidth / 2, 0)); | 550 kWidth / 2, 0)); |
543 } | 551 } |
544 | 552 |
545 // Test constructing an image from a YV12 buffer. | 553 // Test constructing an image from a YV12 buffer. |
546 void ConstructYV12() { | 554 void ConstructYV12() { |
547 T frame; | 555 T frame; |
548 std::unique_ptr<rtc::MemoryStream> ms( | 556 std::unique_ptr<rtc::MemoryStream> ms( |
549 CreateYuvSample(kWidth, kHeight, 12)); | 557 CreateYuvSample(kWidth, kHeight, 12)); |
550 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_YV12, | 558 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_YV12, |
551 kWidth, kHeight, &frame)); | 559 kWidth, kHeight, &frame)); |
552 | 560 |
553 const uint8_t* y = reinterpret_cast<uint8_t*>(ms.get()->GetBuffer()); | 561 const uint8_t* y = reinterpret_cast<uint8_t*>(ms.get()->GetBuffer()); |
554 const uint8_t* v = y + kWidth * kHeight; | 562 const uint8_t* v = y + kWidth * kHeight; |
555 const uint8_t* u = v + kWidth * kHeight / 4; | 563 const uint8_t* u = v + kWidth * kHeight / 4; |
556 EXPECT_TRUE(IsEqual(frame, kWidth, kHeight, 0, y, kWidth, u, | 564 EXPECT_TRUE(IsEqual(frame, kWidth, kHeight, y, kWidth, u, kWidth / 2, v, |
557 kWidth / 2, v, kWidth / 2, 0)); | 565 kWidth / 2, 0)); |
558 } | 566 } |
559 | 567 |
560 // Test constructing an image from a I422 buffer. | 568 // Test constructing an image from a I422 buffer. |
561 void ConstructI422() { | 569 void ConstructI422() { |
562 T frame1, frame2; | 570 T frame1, frame2; |
563 ASSERT_TRUE(LoadFrameNoRepeat(&frame1)); | 571 ASSERT_TRUE(LoadFrameNoRepeat(&frame1)); |
564 size_t buf_size = kWidth * kHeight * 2; | 572 size_t buf_size = kWidth * kHeight * 2; |
565 std::unique_ptr<uint8_t[]> buf(new uint8_t[buf_size + kAlignment]); | 573 std::unique_ptr<uint8_t[]> buf(new uint8_t[buf_size + kAlignment]); |
566 uint8_t* y = ALIGNP(buf.get(), kAlignment); | 574 uint8_t* y = ALIGNP(buf.get(), kAlignment); |
567 uint8_t* u = y + kWidth * kHeight; | 575 uint8_t* u = y + kWidth * kHeight; |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 ASSERT_TRUE(frame1); | 772 ASSERT_TRUE(frame1); |
765 T frame2; | 773 T frame2; |
766 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_RAW, | 774 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_RAW, |
767 kWidth, kHeight, &frame2)); | 775 kWidth, kHeight, &frame2)); |
768 EXPECT_TRUE(IsEqual(*frame1, frame2, 2)); | 776 EXPECT_TRUE(IsEqual(*frame1, frame2, 2)); |
769 } | 777 } |
770 | 778 |
771 // Macro to help test different rotations | 779 // Macro to help test different rotations |
772 #define TEST_MIRROR(FOURCC, BPP) \ | 780 #define TEST_MIRROR(FOURCC, BPP) \ |
773 void Construct##FOURCC##Mirror() { \ | 781 void Construct##FOURCC##Mirror() { \ |
774 T frame1, frame2, frame3; \ | 782 T frame1, frame2; \ |
| 783 rtc::scoped_refptr<webrtc::I420Buffer> res_buffer; \ |
775 std::unique_ptr<rtc::MemoryStream> ms( \ | 784 std::unique_ptr<rtc::MemoryStream> ms( \ |
776 CreateYuvSample(kWidth, kHeight, BPP)); \ | 785 CreateYuvSample(kWidth, kHeight, BPP)); \ |
777 ASSERT_TRUE(ms.get() != NULL); \ | 786 ASSERT_TRUE(ms.get() != NULL); \ |
778 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_##FOURCC, kWidth, \ | 787 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_##FOURCC, kWidth, \ |
779 -kHeight, kWidth, kHeight, \ | 788 -kHeight, kWidth, kHeight, \ |
780 webrtc::kVideoRotation_180, &frame1)); \ | 789 webrtc::kVideoRotation_180, &frame1)); \ |
781 size_t data_size; \ | 790 size_t data_size; \ |
782 bool ret = ms->GetSize(&data_size); \ | 791 bool ret = ms->GetSize(&data_size); \ |
783 EXPECT_TRUE(ret); \ | 792 EXPECT_TRUE(ret); \ |
784 EXPECT_TRUE(frame2.Init(cricket::FOURCC_##FOURCC, kWidth, kHeight, kWidth, \ | 793 EXPECT_TRUE(frame2.Init(cricket::FOURCC_##FOURCC, kWidth, kHeight, kWidth, \ |
785 kHeight, \ | 794 kHeight, \ |
786 reinterpret_cast<uint8_t*>(ms->GetBuffer()), \ | 795 reinterpret_cast<uint8_t*>(ms->GetBuffer()), \ |
787 data_size, 0, webrtc::kVideoRotation_0)); \ | 796 data_size, 0, webrtc::kVideoRotation_0)); \ |
788 int width_rotate = frame1.width(); \ | 797 int width_rotate = frame1.width(); \ |
789 int height_rotate = frame1.height(); \ | 798 int height_rotate = frame1.height(); \ |
790 frame3.InitToEmptyBuffer(width_rotate, height_rotate); \ | 799 res_buffer = webrtc::I420Buffer::Create(width_rotate, height_rotate); \ |
791 libyuv::I420Mirror(frame2.video_frame_buffer()->DataY(), \ | 800 libyuv::I420Mirror(frame2.video_frame_buffer()->DataY(), \ |
792 frame2.video_frame_buffer()->StrideY(), \ | 801 frame2.video_frame_buffer()->StrideY(), \ |
793 frame2.video_frame_buffer()->DataU(), \ | 802 frame2.video_frame_buffer()->DataU(), \ |
794 frame2.video_frame_buffer()->StrideU(), \ | 803 frame2.video_frame_buffer()->StrideU(), \ |
795 frame2.video_frame_buffer()->DataV(), \ | 804 frame2.video_frame_buffer()->DataV(), \ |
796 frame2.video_frame_buffer()->StrideV(), \ | 805 frame2.video_frame_buffer()->StrideV(), \ |
797 frame3.video_frame_buffer()->MutableDataY(), \ | 806 res_buffer->MutableDataY(), res_buffer->StrideY(), \ |
798 frame3.video_frame_buffer()->StrideY(), \ | 807 res_buffer->MutableDataU(), res_buffer->StrideU(), \ |
799 frame3.video_frame_buffer()->MutableDataU(), \ | 808 res_buffer->MutableDataV(), res_buffer->StrideV(), \ |
800 frame3.video_frame_buffer()->StrideU(), \ | 809 kWidth, kHeight); \ |
801 frame3.video_frame_buffer()->MutableDataV(), \ | 810 EXPECT_TRUE(IsEqual(frame1, res_buffer, 0)); \ |
802 frame3.video_frame_buffer()->StrideV(), kWidth, \ | |
803 kHeight); \ | |
804 EXPECT_TRUE(IsEqual(frame1, frame3, 0)); \ | |
805 } | 811 } |
806 | 812 |
807 TEST_MIRROR(I420, 420) | 813 TEST_MIRROR(I420, 420) |
808 | 814 |
809 // Macro to help test different rotations | 815 // Macro to help test different rotations |
810 #define TEST_ROTATE(FOURCC, BPP, ROTATE) \ | 816 #define TEST_ROTATE(FOURCC, BPP, ROTATE) \ |
811 void Construct##FOURCC##Rotate##ROTATE() { \ | 817 void Construct##FOURCC##Rotate##ROTATE() { \ |
812 T frame1, frame2, frame3; \ | 818 T frame1, frame2; \ |
| 819 rtc::scoped_refptr<webrtc::I420Buffer> res_buffer; \ |
813 std::unique_ptr<rtc::MemoryStream> ms( \ | 820 std::unique_ptr<rtc::MemoryStream> ms( \ |
814 CreateYuvSample(kWidth, kHeight, BPP)); \ | 821 CreateYuvSample(kWidth, kHeight, BPP)); \ |
815 ASSERT_TRUE(ms.get() != NULL); \ | 822 ASSERT_TRUE(ms.get() != NULL); \ |
816 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_##FOURCC, kWidth, kHeight, \ | 823 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_##FOURCC, kWidth, kHeight, \ |
817 kWidth, kHeight, webrtc::kVideoRotation_##ROTATE, \ | 824 kWidth, kHeight, webrtc::kVideoRotation_##ROTATE, \ |
818 &frame1)); \ | 825 &frame1)); \ |
819 size_t data_size; \ | 826 size_t data_size; \ |
820 bool ret = ms->GetSize(&data_size); \ | 827 bool ret = ms->GetSize(&data_size); \ |
821 EXPECT_TRUE(ret); \ | 828 EXPECT_TRUE(ret); \ |
822 EXPECT_TRUE(frame2.Init(cricket::FOURCC_##FOURCC, kWidth, kHeight, kWidth, \ | 829 EXPECT_TRUE(frame2.Init(cricket::FOURCC_##FOURCC, kWidth, kHeight, kWidth, \ |
823 kHeight, \ | 830 kHeight, \ |
824 reinterpret_cast<uint8_t*>(ms->GetBuffer()), \ | 831 reinterpret_cast<uint8_t*>(ms->GetBuffer()), \ |
825 data_size, 0, webrtc::kVideoRotation_0)); \ | 832 data_size, 0, webrtc::kVideoRotation_0)); \ |
826 int width_rotate = frame1.width(); \ | 833 int width_rotate = frame1.width(); \ |
827 int height_rotate = frame1.height(); \ | 834 int height_rotate = frame1.height(); \ |
828 frame3.InitToEmptyBuffer(width_rotate, height_rotate); \ | 835 res_buffer = webrtc::I420Buffer::Create(width_rotate, height_rotate); \ |
829 libyuv::I420Rotate(frame2.video_frame_buffer()->DataY(), \ | 836 libyuv::I420Rotate(frame2.video_frame_buffer()->DataY(), \ |
830 frame2.video_frame_buffer()->StrideY(), \ | 837 frame2.video_frame_buffer()->StrideY(), \ |
831 frame2.video_frame_buffer()->DataU(), \ | 838 frame2.video_frame_buffer()->DataU(), \ |
832 frame2.video_frame_buffer()->StrideU(), \ | 839 frame2.video_frame_buffer()->StrideU(), \ |
833 frame2.video_frame_buffer()->DataV(), \ | 840 frame2.video_frame_buffer()->DataV(), \ |
834 frame2.video_frame_buffer()->StrideV(), \ | 841 frame2.video_frame_buffer()->StrideV(), \ |
835 frame3.video_frame_buffer()->MutableDataY(), \ | 842 res_buffer->MutableDataY(), res_buffer->StrideY(), \ |
836 frame3.video_frame_buffer()->StrideY(), \ | 843 res_buffer->MutableDataU(), res_buffer->StrideU(), \ |
837 frame3.video_frame_buffer()->MutableDataU(), \ | 844 res_buffer->MutableDataV(), res_buffer->StrideV(), \ |
838 frame3.video_frame_buffer()->StrideU(), \ | 845 kWidth, kHeight, libyuv::kRotate##ROTATE); \ |
839 frame3.video_frame_buffer()->MutableDataV(), \ | 846 EXPECT_TRUE(IsEqual(frame1, res_buffer, 0)); \ |
840 frame3.video_frame_buffer()->StrideV(), kWidth, \ | |
841 kHeight, libyuv::kRotate##ROTATE); \ | |
842 EXPECT_TRUE(IsEqual(frame1, frame3, 0)); \ | |
843 } | 847 } |
844 | 848 |
845 // Test constructing an image with rotation. | 849 // Test constructing an image with rotation. |
846 TEST_ROTATE(I420, 12, 0) | 850 TEST_ROTATE(I420, 12, 0) |
847 TEST_ROTATE(I420, 12, 90) | 851 TEST_ROTATE(I420, 12, 90) |
848 TEST_ROTATE(I420, 12, 180) | 852 TEST_ROTATE(I420, 12, 180) |
849 TEST_ROTATE(I420, 12, 270) | 853 TEST_ROTATE(I420, 12, 270) |
850 TEST_ROTATE(YV12, 12, 0) | 854 TEST_ROTATE(YV12, 12, 0) |
851 TEST_ROTATE(YV12, 12, 90) | 855 TEST_ROTATE(YV12, 12, 90) |
852 TEST_ROTATE(YV12, 12, 180) | 856 TEST_ROTATE(YV12, 12, 180) |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
936 void ConstructI4201Pixel() { | 940 void ConstructI4201Pixel() { |
937 T frame; | 941 T frame; |
938 uint8_t pixel[3] = {1, 2, 3}; | 942 uint8_t pixel[3] = {1, 2, 3}; |
939 for (int i = 0; i < repeat_; ++i) { | 943 for (int i = 0; i < repeat_; ++i) { |
940 EXPECT_TRUE(frame.Init(cricket::FOURCC_I420, 1, 1, 1, 1, pixel, | 944 EXPECT_TRUE(frame.Init(cricket::FOURCC_I420, 1, 1, 1, 1, pixel, |
941 sizeof(pixel), 0, webrtc::kVideoRotation_0)); | 945 sizeof(pixel), 0, webrtc::kVideoRotation_0)); |
942 } | 946 } |
943 const uint8_t* y = pixel; | 947 const uint8_t* y = pixel; |
944 const uint8_t* u = y + 1; | 948 const uint8_t* u = y + 1; |
945 const uint8_t* v = u + 1; | 949 const uint8_t* v = u + 1; |
946 EXPECT_TRUE(IsEqual(frame, 1, 1, 0, y, 1, u, 1, v, 1, 0)); | 950 EXPECT_TRUE(IsEqual(frame, 1, 1, y, 1, u, 1, v, 1, 0)); |
947 } | 951 } |
948 | 952 |
949 // Test 5 pixel edge case image. | 953 // Test 5 pixel edge case image. |
950 void ConstructI4205Pixel() { | 954 void ConstructI4205Pixel() { |
951 T frame; | 955 T frame; |
952 uint8_t pixels5x5[5 * 5 + ((5 + 1) / 2 * (5 + 1) / 2) * 2]; | 956 uint8_t pixels5x5[5 * 5 + ((5 + 1) / 2 * (5 + 1) / 2) * 2]; |
953 memset(pixels5x5, 1, 5 * 5 + ((5 + 1) / 2 * (5 + 1) / 2) * 2); | 957 memset(pixels5x5, 1, 5 * 5 + ((5 + 1) / 2 * (5 + 1) / 2) * 2); |
954 for (int i = 0; i < repeat_; ++i) { | 958 for (int i = 0; i < repeat_; ++i) { |
955 EXPECT_TRUE(frame.Init(cricket::FOURCC_I420, 5, 5, 5, 5, pixels5x5, | 959 EXPECT_TRUE(frame.Init(cricket::FOURCC_I420, 5, 5, 5, 5, pixels5x5, |
956 sizeof(pixels5x5), 0, | 960 sizeof(pixels5x5), 0, |
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1355 EXPECT_TRUE(frame2.Init(cricket::FOURCC_I422, kWidth, kHeight, kWidth, | 1359 EXPECT_TRUE(frame2.Init(cricket::FOURCC_I422, kWidth, kHeight, kWidth, |
1356 kHeight, y, out_size, 1, 1, 0, | 1360 kHeight, y, out_size, 1, 1, 0, |
1357 webrtc::kVideoRotation_0)); | 1361 webrtc::kVideoRotation_0)); |
1358 EXPECT_TRUE(IsEqual(frame1, frame2, 1)); | 1362 EXPECT_TRUE(IsEqual(frame1, frame2, 1)); |
1359 } | 1363 } |
1360 | 1364 |
1361 int repeat_; | 1365 int repeat_; |
1362 }; | 1366 }; |
1363 | 1367 |
1364 #endif // WEBRTC_MEDIA_BASE_VIDEOFRAME_UNITTEST_H_ | 1368 #endif // WEBRTC_MEDIA_BASE_VIDEOFRAME_UNITTEST_H_ |
OLD | NEW |