| 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 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 828 webrtc::kVideoRotation_180, &frame1)); \ | 828 webrtc::kVideoRotation_180, &frame1)); \ |
| 829 size_t data_size; \ | 829 size_t data_size; \ |
| 830 bool ret = ms->GetSize(&data_size); \ | 830 bool ret = ms->GetSize(&data_size); \ |
| 831 EXPECT_TRUE(ret); \ | 831 EXPECT_TRUE(ret); \ |
| 832 EXPECT_TRUE(frame2.Init(cricket::FOURCC_##FOURCC, kWidth, kHeight, kWidth, \ | 832 EXPECT_TRUE(frame2.Init(cricket::FOURCC_##FOURCC, kWidth, kHeight, kWidth, \ |
| 833 kHeight, \ | 833 kHeight, \ |
| 834 reinterpret_cast<uint8_t*>(ms->GetBuffer()), \ | 834 reinterpret_cast<uint8_t*>(ms->GetBuffer()), \ |
| 835 data_size, 0, webrtc::kVideoRotation_0)); \ | 835 data_size, 0, webrtc::kVideoRotation_0)); \ |
| 836 int width_rotate = frame1.width(); \ | 836 int width_rotate = frame1.width(); \ |
| 837 int height_rotate = frame1.height(); \ | 837 int height_rotate = frame1.height(); \ |
| 838 frame3.InitToEmptyBuffer(width_rotate, height_rotate); \ | 838 frame3.InitToEmptyBuffer(width_rotate, height_rotate, 0); \ |
| 839 libyuv::I420Mirror(frame2.video_frame_buffer()->DataY(), \ | 839 libyuv::I420Mirror(frame2.video_frame_buffer()->DataY(), \ |
| 840 frame2.video_frame_buffer()->StrideY(), \ | 840 frame2.video_frame_buffer()->StrideY(), \ |
| 841 frame2.video_frame_buffer()->DataU(), \ | 841 frame2.video_frame_buffer()->DataU(), \ |
| 842 frame2.video_frame_buffer()->StrideU(), \ | 842 frame2.video_frame_buffer()->StrideU(), \ |
| 843 frame2.video_frame_buffer()->DataV(), \ | 843 frame2.video_frame_buffer()->DataV(), \ |
| 844 frame2.video_frame_buffer()->StrideV(), \ | 844 frame2.video_frame_buffer()->StrideV(), \ |
| 845 frame3.video_frame_buffer()->MutableDataY(), \ | 845 frame3.video_frame_buffer()->MutableDataY(), \ |
| 846 frame3.video_frame_buffer()->StrideY(), \ | 846 frame3.video_frame_buffer()->StrideY(), \ |
| 847 frame3.video_frame_buffer()->MutableDataU(), \ | 847 frame3.video_frame_buffer()->MutableDataU(), \ |
| 848 frame3.video_frame_buffer()->StrideU(), \ | 848 frame3.video_frame_buffer()->StrideU(), \ |
| 849 frame3.video_frame_buffer()->MutableDataV(), \ | 849 frame3.video_frame_buffer()->MutableDataV(), \ |
| 850 frame3.video_frame_buffer()->StrideV(), kWidth, \ | 850 frame3.video_frame_buffer()->StrideV(), \ |
| 851 kHeight); \ | 851 kWidth, kHeight); \ |
| 852 EXPECT_TRUE(IsEqual(frame1, frame3, 0)); \ | 852 EXPECT_TRUE(IsEqual(frame1, frame3, 0)); \ |
| 853 } | 853 } |
| 854 | 854 |
| 855 TEST_MIRROR(I420, 420) | 855 TEST_MIRROR(I420, 420) |
| 856 | 856 |
| 857 // Macro to help test different rotations | 857 // Macro to help test different rotations |
| 858 #define TEST_ROTATE(FOURCC, BPP, ROTATE) \ | 858 #define TEST_ROTATE(FOURCC, BPP, ROTATE) \ |
| 859 void Construct##FOURCC##Rotate##ROTATE() { \ | 859 void Construct##FOURCC##Rotate##ROTATE() { \ |
| 860 T frame1, frame2, frame3; \ | 860 T frame1, frame2, frame3; \ |
| 861 std::unique_ptr<rtc::MemoryStream> ms( \ | 861 std::unique_ptr<rtc::MemoryStream> ms( \ |
| 862 CreateYuvSample(kWidth, kHeight, BPP)); \ | 862 CreateYuvSample(kWidth, kHeight, BPP)); \ |
| 863 ASSERT_TRUE(ms.get() != NULL); \ | 863 ASSERT_TRUE(ms.get() != NULL); \ |
| 864 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_##FOURCC, kWidth, kHeight, \ | 864 EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_##FOURCC, kWidth, kHeight, \ |
| 865 kWidth, kHeight, webrtc::kVideoRotation_##ROTATE, \ | 865 kWidth, kHeight, webrtc::kVideoRotation_##ROTATE, \ |
| 866 &frame1)); \ | 866 &frame1)); \ |
| 867 size_t data_size; \ | 867 size_t data_size; \ |
| 868 bool ret = ms->GetSize(&data_size); \ | 868 bool ret = ms->GetSize(&data_size); \ |
| 869 EXPECT_TRUE(ret); \ | 869 EXPECT_TRUE(ret); \ |
| 870 EXPECT_TRUE(frame2.Init(cricket::FOURCC_##FOURCC, kWidth, kHeight, kWidth, \ | 870 EXPECT_TRUE(frame2.Init(cricket::FOURCC_##FOURCC, kWidth, kHeight, kWidth, \ |
| 871 kHeight, \ | 871 kHeight, \ |
| 872 reinterpret_cast<uint8_t*>(ms->GetBuffer()), \ | 872 reinterpret_cast<uint8_t*>(ms->GetBuffer()), \ |
| 873 data_size, 0, webrtc::kVideoRotation_0)); \ | 873 data_size, 0, webrtc::kVideoRotation_0)); \ |
| 874 int width_rotate = frame1.width(); \ | 874 int width_rotate = frame1.width(); \ |
| 875 int height_rotate = frame1.height(); \ | 875 int height_rotate = frame1.height(); \ |
| 876 frame3.InitToEmptyBuffer(width_rotate, height_rotate); \ | 876 frame3.InitToEmptyBuffer(width_rotate, height_rotate, 0); \ |
| 877 libyuv::I420Rotate(frame2.video_frame_buffer()->DataY(), \ | 877 libyuv::I420Rotate(frame2.video_frame_buffer()->DataY(), \ |
| 878 frame2.video_frame_buffer()->StrideY(), \ | 878 frame2.video_frame_buffer()->StrideY(), \ |
| 879 frame2.video_frame_buffer()->DataU(), \ | 879 frame2.video_frame_buffer()->DataU(), \ |
| 880 frame2.video_frame_buffer()->StrideU(), \ | 880 frame2.video_frame_buffer()->StrideU(), \ |
| 881 frame2.video_frame_buffer()->DataV(), \ | 881 frame2.video_frame_buffer()->DataV(), \ |
| 882 frame2.video_frame_buffer()->StrideV(), \ | 882 frame2.video_frame_buffer()->StrideV(), \ |
| 883 frame3.video_frame_buffer()->MutableDataY(), \ | 883 frame3.video_frame_buffer()->MutableDataY(), \ |
| 884 frame3.video_frame_buffer()->StrideY(), \ | 884 frame3.video_frame_buffer()->StrideY(), \ |
| 885 frame3.video_frame_buffer()->MutableDataU(), \ | 885 frame3.video_frame_buffer()->MutableDataU(), \ |
| 886 frame3.video_frame_buffer()->StrideU(), \ | 886 frame3.video_frame_buffer()->StrideU(), \ |
| 887 frame3.video_frame_buffer()->MutableDataV(), \ | 887 frame3.video_frame_buffer()->MutableDataV(), \ |
| 888 frame3.video_frame_buffer()->StrideV(), kWidth, \ | 888 frame3.video_frame_buffer()->StrideV(), \ |
| 889 kHeight, libyuv::kRotate##ROTATE); \ | 889 kWidth, kHeight, libyuv::kRotate##ROTATE); \ |
| 890 EXPECT_TRUE(IsEqual(frame1, frame3, 0)); \ | 890 EXPECT_TRUE(IsEqual(frame1, frame3, 0)); \ |
| 891 } | 891 } |
| 892 | 892 |
| 893 // Test constructing an image with rotation. | 893 // Test constructing an image with rotation. |
| 894 TEST_ROTATE(I420, 12, 0) | 894 TEST_ROTATE(I420, 12, 0) |
| 895 TEST_ROTATE(I420, 12, 90) | 895 TEST_ROTATE(I420, 12, 90) |
| 896 TEST_ROTATE(I420, 12, 180) | 896 TEST_ROTATE(I420, 12, 180) |
| 897 TEST_ROTATE(I420, 12, 270) | 897 TEST_ROTATE(I420, 12, 270) |
| 898 TEST_ROTATE(YV12, 12, 0) | 898 TEST_ROTATE(YV12, 12, 0) |
| 899 TEST_ROTATE(YV12, 12, 90) | 899 TEST_ROTATE(YV12, 12, 90) |
| (...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1473 out += (kHeight - 1) * stride; // Point to last row. | 1473 out += (kHeight - 1) * stride; // Point to last row. |
| 1474 stride = -stride; | 1474 stride = -stride; |
| 1475 } | 1475 } |
| 1476 ASSERT_TRUE(LoadFrameNoRepeat(&frame1)); | 1476 ASSERT_TRUE(LoadFrameNoRepeat(&frame1)); |
| 1477 | 1477 |
| 1478 for (int i = 0; i < repeat_to; ++i) { | 1478 for (int i = 0; i < repeat_to; ++i) { |
| 1479 EXPECT_EQ(out_size, frame1.ConvertToRgbBuffer(fourcc, | 1479 EXPECT_EQ(out_size, frame1.ConvertToRgbBuffer(fourcc, |
| 1480 out, | 1480 out, |
| 1481 out_size, stride)); | 1481 out_size, stride)); |
| 1482 } | 1482 } |
| 1483 frame2.InitToEmptyBuffer(kWidth, kHeight); | 1483 frame2.InitToEmptyBuffer(kWidth, kHeight, 0); |
| 1484 for (int i = 0; i < repeat_from; ++i) { | 1484 for (int i = 0; i < repeat_from; ++i) { |
| 1485 EXPECT_EQ(0, RGBToI420(out, stride, | 1485 EXPECT_EQ(0, RGBToI420(out, stride, |
| 1486 frame2.video_frame_buffer()->MutableDataY(), | 1486 frame2.video_frame_buffer()->MutableDataY(), |
| 1487 frame2.video_frame_buffer()->StrideY(), | 1487 frame2.video_frame_buffer()->StrideY(), |
| 1488 frame2.video_frame_buffer()->MutableDataU(), | 1488 frame2.video_frame_buffer()->MutableDataU(), |
| 1489 frame2.video_frame_buffer()->StrideU(), | 1489 frame2.video_frame_buffer()->StrideU(), |
| 1490 frame2.video_frame_buffer()->MutableDataV(), | 1490 frame2.video_frame_buffer()->MutableDataV(), |
| 1491 frame2.video_frame_buffer()->StrideV(), | 1491 frame2.video_frame_buffer()->StrideV(), |
| 1492 kWidth, kHeight)); | 1492 kWidth, kHeight)); |
| 1493 } | 1493 } |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1830 target.reset(source->Copy()); | 1830 target.reset(source->Copy()); |
| 1831 EXPECT_TRUE(IsEqual(*source, *target, 0)); | 1831 EXPECT_TRUE(IsEqual(*source, *target, 0)); |
| 1832 const T* const_source = source.get(); | 1832 const T* const_source = source.get(); |
| 1833 EXPECT_EQ(const_source->video_frame_buffer(), target->video_frame_buffer()); | 1833 EXPECT_EQ(const_source->video_frame_buffer(), target->video_frame_buffer()); |
| 1834 } | 1834 } |
| 1835 | 1835 |
| 1836 int repeat_; | 1836 int repeat_; |
| 1837 }; | 1837 }; |
| 1838 | 1838 |
| 1839 #endif // WEBRTC_MEDIA_BASE_VIDEOFRAME_UNITTEST_H_ | 1839 #endif // WEBRTC_MEDIA_BASE_VIDEOFRAME_UNITTEST_H_ |
| OLD | NEW |