15976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org/* 25976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * libjingle 35976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * Copyright 2011 Google Inc. 45976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 55976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * Redistribution and use in source and binary forms, with or without 65976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * modification, are permitted provided that the following conditions are met: 75976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 85976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 1. Redistributions of source code must retain the above copyright notice, 95976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * this list of conditions and the following disclaimer. 105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 2. Redistributions in binary form must reproduce the above copyright notice, 115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * this list of conditions and the following disclaimer in the documentation 125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * and/or other materials provided with the distribution. 135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 3. The name of the author may not be used to endorse or promote products 145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * derived from this software without specific prior written permission. 155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org */ 275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/base/flags.h" 295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/media/base/videoframe_unittest.h" 305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/media/webrtc/webrtcvideoframe.h" 315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgextern int FLAG_yuvconverter_repeat; // From lmivideoframe_unittest.cc. 335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass WebRtcVideoFrameTest : public VideoFrameTest<cricket::WebRtcVideoFrame> { 355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org public: 365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org WebRtcVideoFrameTest() { 375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org repeat_ = FLAG_yuvconverter_repeat; 385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void TestInit(int cropped_width, int cropped_height) { 415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const int frame_width = 1920; 425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const int frame_height = 1080; 435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org // Build the CapturedFrame. 455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::CapturedFrame captured_frame; 465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org captured_frame.fourcc = cricket::FOURCC_I420; 475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org captured_frame.pixel_width = 1; 485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org captured_frame.pixel_height = 1; 495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org captured_frame.elapsed_time = 1234; 505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org captured_frame.time_stamp = 5678; 515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org captured_frame.rotation = 0; 525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org captured_frame.width = frame_width; 535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org captured_frame.height = frame_height; 545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org captured_frame.data_size = (frame_width * frame_height) + 555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ((frame_width + 1) / 2) * ((frame_height + 1) / 2) * 2; 56582fe818e571fa2571267f5e369715188472f352wu@webrtc.org talk_base::scoped_ptr<uint8[]> captured_frame_buffer( 575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org new uint8[captured_frame.data_size]); 585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org captured_frame.data = captured_frame_buffer.get(); 595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org // Create the new frame from the CapturedFrame. 615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::WebRtcVideoFrame frame; 625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org EXPECT_TRUE(frame.Init(&captured_frame, cropped_width, cropped_height)); 635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org // Verify the new frame. 655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org EXPECT_EQ(1u, frame.GetPixelWidth()); 665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org EXPECT_EQ(1u, frame.GetPixelHeight()); 675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org EXPECT_EQ(1234, frame.GetElapsedTime()); 685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org EXPECT_EQ(5678, frame.GetTimeStamp()); 695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org EXPECT_EQ(0, frame.GetRotation()); 705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org // The size of the new frame should have been cropped to multiple of 4. 715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org EXPECT_EQ(static_cast<size_t>(cropped_width & ~3), frame.GetWidth()); 725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org EXPECT_EQ(static_cast<size_t>(cropped_height & ~3), frame.GetHeight()); 735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org}; 755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#define TEST_WEBRTCVIDEOFRAME(X) TEST_F(WebRtcVideoFrameTest, X) { \ 775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org VideoFrameTest<cricket::WebRtcVideoFrame>::X(); \ 785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org} 795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructI420) 815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructI422) 825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYuy2) 835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYuy2Unaligned) 845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYuy2Wide) 855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYV12) 865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructUyvy) 875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructM420) 885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructQ420) 895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructNV21) 905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructNV12) 915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructABGR) 925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructARGB) 935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructARGBWide) 945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructBGRA) 955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(Construct24BG) 965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructRaw) 975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructRGB565) 985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructARGB1555) 995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructARGB4444) 1005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructI420Mirror) 1025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructI420Rotate0) 1035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructI420Rotate90) 1045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructI420Rotate180) 1055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructI420Rotate270) 1065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYV12Rotate0) 1075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYV12Rotate90) 1085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYV12Rotate180) 1095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYV12Rotate270) 1105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructNV12Rotate0) 1115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructNV12Rotate90) 1125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructNV12Rotate180) 1135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructNV12Rotate270) 1145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructNV21Rotate0) 1155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructNV21Rotate90) 1165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructNV21Rotate180) 1175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructNV21Rotate270) 1185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructUYVYRotate0) 1195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructUYVYRotate90) 1205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructUYVYRotate180) 1215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructUYVYRotate270) 1225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYUY2Rotate0) 1235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYUY2Rotate90) 1245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYUY2Rotate180) 1255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructYUY2Rotate270) 1265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructI4201Pixel) 1275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructI4205Pixel) 1285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TODO(juberti): WebRtcVideoFrame does not support horizontal crop. 1295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// Re-evaluate once it supports 3 independent planes, since we might want to 1305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// just Init normally and then crop by adjusting pointers. 1315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructI420CropHorizontal) 1325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructI420CropVertical) 1335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TODO(juberti): WebRtcVideoFrame is not currently refcounted. 1345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructCopy) 1355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructCopyIsRef) 1365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConstructBlack) 1375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TODO(fbarchard): Implement Jpeg 1385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructMjpgI420) 1395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructMjpgI422) 1405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructMjpgI444) 1415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructMjpgI411) 1425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructMjpgI400) 1435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ValidateMjpgI420) 1445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ValidateMjpgI422) 1455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ValidateMjpgI444) 1465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ValidateMjpgI411) 1475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ValidateMjpgI400) 1485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ValidateI420) 1495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ValidateI420SmallSize) 1505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ValidateI420LargeSize) 1515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ValidateI420HugeSize) 1525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ValidateMjpgI420InvalidSize) 1535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ValidateI420InvalidSize) 1545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TODO(fbarchard): WebRtcVideoFrame does not support odd sizes. 1565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// Re-evaluate once WebRTC switches to libyuv 1575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructYuy2AllSizes) 1585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructARGBAllSizes) 1595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(Reset) 1605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToABGRBuffer) 1615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToABGRBufferStride) 1625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToABGRBufferInverted) 1635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToARGB1555Buffer) 1645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToARGB1555BufferStride) 1655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToARGB1555BufferInverted) 1665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToARGB4444Buffer) 1675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToARGB4444BufferStride) 1685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToARGB4444BufferInverted) 1695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToARGBBuffer) 1705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToARGBBufferStride) 1715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToARGBBufferInverted) 1725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBGRABuffer) 1735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBGRABufferStride) 1745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBGRABufferInverted) 1755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToRAWBuffer) 1765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToRAWBufferStride) 1775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToRAWBufferInverted) 1785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToRGB24Buffer) 1795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToRGB24BufferStride) 1805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToRGB24BufferInverted) 1815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToRGB565Buffer) 1825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToRGB565BufferStride) 1835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToRGB565BufferInverted) 1845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerBGGRBuffer) 1855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerBGGRBufferStride) 1865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerBGGRBufferInverted) 1875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerGRBGBuffer) 1885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerGRBGBufferStride) 1895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerGRBGBufferInverted) 1905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerGBRGBuffer) 1915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerGBRGBufferStride) 1925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerGBRGBufferInverted) 1935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerRGGBBuffer) 1945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerRGGBBufferStride) 1955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToBayerRGGBBufferInverted) 1965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToI400Buffer) 1975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToI400BufferStride) 1985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToI400BufferInverted) 1995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToYUY2Buffer) 2005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToYUY2BufferStride) 2015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToYUY2BufferInverted) 2025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToUYVYBuffer) 2035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToUYVYBufferStride) 2045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertToUYVYBufferInverted) 2055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromABGRBuffer) 2065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromABGRBufferStride) 2075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromABGRBufferInverted) 2085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromARGB1555Buffer) 2095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromARGB1555BufferStride) 2105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromARGB1555BufferInverted) 2115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromARGB4444Buffer) 2125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromARGB4444BufferStride) 2135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromARGB4444BufferInverted) 2145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromARGBBuffer) 2155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromARGBBufferStride) 2165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromARGBBufferInverted) 2175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBGRABuffer) 2185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBGRABufferStride) 2195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBGRABufferInverted) 2205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromRAWBuffer) 2215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromRAWBufferStride) 2225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromRAWBufferInverted) 2235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromRGB24Buffer) 2245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromRGB24BufferStride) 2255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromRGB24BufferInverted) 2265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromRGB565Buffer) 2275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromRGB565BufferStride) 2285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromRGB565BufferInverted) 2295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerBGGRBuffer) 2305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerBGGRBufferStride) 2315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerBGGRBufferInverted) 2325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerGRBGBuffer) 2335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerGRBGBufferStride) 2345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerGRBGBufferInverted) 2355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerGBRGBuffer) 2365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerGBRGBufferStride) 2375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerGBRGBufferInverted) 2385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerRGGBBuffer) 2395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerRGGBBufferStride) 2405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromBayerRGGBBufferInverted) 2415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromI400Buffer) 2425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromI400BufferStride) 2435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromI400BufferInverted) 2445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromYUY2Buffer) 2455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromYUY2BufferStride) 2465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromYUY2BufferInverted) 2475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromUYVYBuffer) 2485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromUYVYBufferStride) 2495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertFromUYVYBufferInverted) 2505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConvertToI422Buffer) 2515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertARGBToBayerGRBG) 2525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertARGBToBayerGBRG) 2535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertARGBToBayerBGGR) 2545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(ConvertARGBToBayerRGGB) 2555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(CopyToBuffer) 2565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(CopyToFrame) 2575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(Write) 2585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(CopyToBuffer1Pixel) 2595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// TEST_WEBRTCVIDEOFRAME(ConstructARGBBlackWhitePixel) 2605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(StretchToFrame) 2625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(Copy) 2635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(CopyIsRef) 2645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_WEBRTCVIDEOFRAME(MakeExclusive) 2655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// These functions test implementation-specific details. 267a10b9ec8e87a37dbe0ce2f676aaf94a91e376f9ewu@webrtc.orgTEST_F(WebRtcVideoFrameTest, Alias) { 2685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::WebRtcVideoFrame frame1, frame2; 2695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ASSERT_TRUE(LoadFrameNoRepeat(&frame1)); 270a10b9ec8e87a37dbe0ce2f676aaf94a91e376f9ewu@webrtc.org const int64 time_stamp = INT64_C(0x7FFFFFFFFFFFFFF0); 2715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org frame1.SetTimeStamp(time_stamp); 2725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org EXPECT_EQ(time_stamp, frame1.GetTimeStamp()); 273a10b9ec8e87a37dbe0ce2f676aaf94a91e376f9ewu@webrtc.org frame2.Alias(frame1.frame()->Buffer(), frame1.frame()->Size(), 274a10b9ec8e87a37dbe0ce2f676aaf94a91e376f9ewu@webrtc.org kWidth, kHeight, 1, 1, 275a10b9ec8e87a37dbe0ce2f676aaf94a91e376f9ewu@webrtc.org frame1.GetElapsedTime(), frame1.GetTimeStamp(), 0); 2765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org EXPECT_TRUE(IsEqual(frame1, frame2, 0)); 2775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org} 2785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// Tests the Init function with different cropped size. 2805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_F(WebRtcVideoFrameTest, InitEvenSize) { 2815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org TestInit(640, 360); 2825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org} 2835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_F(WebRtcVideoFrameTest, InitOddWidth) { 2855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org TestInit(601, 480); 2865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org} 2875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_F(WebRtcVideoFrameTest, InitOddHeight) { 2895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org TestInit(360, 765); 2905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org} 2915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgTEST_F(WebRtcVideoFrameTest, InitOddWidthHeight) { 2935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org TestInit(355, 1021); 2945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org} 295