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