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

Side by Side Diff: webrtc/media/base/videoframe_unittest.h

Issue 2278883002: Move MutableDataY{,U,V} methods to I420Buffer only. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase. 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
OLDNEW
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
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
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
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
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698