Roll chromium_revision 8af41b3..dcb0929 (324854:325030)
This is a major libyuv update (almost 200 revisions):
https://chromium.googlesource.com/external/libyuv/+log/d204db6..32ad6e0
Relevant changes:
* src/third_party/libyuv: d204db6..32ad6e0
* src/third_party/nss: d1edb68..9506806
Details: https://chromium.googlesource.com/chromium/src/+/8af41b3..dcb0929/DEPS
Since bayer and Q420 format support have been removed from libyuv, all tests related to those format are removed.
Clang version was not updated in this roll.
R=kjellander@webrtc.org
TBR=tommi
Review URL: https://webrtc-codereview.appspot.com/48989004
Cr-Commit-Position: refs/heads/master@{#9008}
diff --git a/DEPS b/DEPS
index 2a4dc3d..52d2c74 100644
--- a/DEPS
+++ b/DEPS
@@ -6,7 +6,7 @@
vars = {
'extra_gyp_flag': '-Dextra_gyp_flag=0',
'chromium_git': 'https://chromium.googlesource.com',
- 'chromium_revision': '8af41b356f3d3f97b7cbde771b039a0a46bff0de',
+ 'chromium_revision': 'dcb092938514169fb8e285ac0286d2dcddf1ff78',
}
# NOTE: Prefer revision numbers to tags for svn deps. Use http rather than
diff --git a/talk/media/base/videocommon.h b/talk/media/base/videocommon.h
index 4e12e19..56e5f14 100644
--- a/talk/media/base/videocommon.h
+++ b/talk/media/base/videocommon.h
@@ -83,7 +83,6 @@
// 2 Secondary YUV formats: row biplanar.
FOURCC_M420 = FOURCC('M', '4', '2', '0'),
- FOURCC_Q420 = FOURCC('Q', '4', '2', '0'),
// 9 Primary RGB formats: 4 32 bpp, 2 24 bpp, 3 16 bpp.
FOURCC_ARGB = FOURCC('A', 'R', 'G', 'B'),
diff --git a/talk/media/base/videoframe.cc b/talk/media/base/videoframe.cc
index aba9449..79f52fc 100644
--- a/talk/media/base/videoframe.cc
+++ b/talk/media/base/videoframe.cc
@@ -276,7 +276,6 @@
case FOURCC_YU12:
case FOURCC_YV12:
case FOURCC_M420:
- case FOURCC_Q420:
case FOURCC_NV21:
case FOURCC_NV12:
expected_bpp = 12;
diff --git a/talk/media/base/videoframe_unittest.h b/talk/media/base/videoframe_unittest.h
index 75d144f..07b3910 100644
--- a/talk/media/base/videoframe_unittest.h
+++ b/talk/media/base/videoframe_unittest.h
@@ -33,7 +33,6 @@
#include "libyuv/convert.h"
#include "libyuv/convert_from.h"
-#include "libyuv/format_conversion.h"
#include "libyuv/planar_functions.h"
#include "libyuv/rotate.h"
#include "talk/media/base/testutils.h"
@@ -630,15 +629,6 @@
kWidth, kHeight, &frame));
}
- void ConstructQ420() {
- T frame;
- rtc::scoped_ptr<rtc::MemoryStream> ms(
- CreateYuvSample(kWidth, kHeight, 12));
- ASSERT_TRUE(ms.get() != NULL);
- EXPECT_TRUE(LoadFrame(ms.get(), cricket::FOURCC_Q420,
- kWidth, kHeight, &frame));
- }
-
void ConstructNV21() {
T frame;
rtc::scoped_ptr<rtc::MemoryStream> ms(
@@ -789,38 +779,6 @@
EXPECT_TRUE(IsEqual(frame1, frame2, 20));
}
- // Macro to help test different Bayer formats.
- // Error threshold of 60 allows for Bayer format subsampling.
- // TODO(fbarchard): Refactor this test to go from Bayer to I420 and
- // back to bayer, which would be less lossy.
- #define TEST_BYR(NAME, BAYER) \
- void NAME() { \
- size_t bayer_size = kWidth * kHeight; \
- rtc::scoped_ptr<uint8[]> bayerbuf(new uint8[ \
- bayer_size + kAlignment]); \
- uint8* bayer = ALIGNP(bayerbuf.get(), kAlignment); \
- T frame1, frame2; \
- rtc::scoped_ptr<rtc::MemoryStream> ms( \
- CreateRgbSample(cricket::FOURCC_ARGB, kWidth, kHeight)); \
- ASSERT_TRUE(ms.get() != NULL); \
- libyuv::ARGBToBayer##BAYER(reinterpret_cast<uint8* >(ms->GetBuffer()), \
- kWidth * 4, \
- bayer, kWidth, \
- kWidth, kHeight); \
- EXPECT_TRUE(LoadFrame(bayer, bayer_size, cricket::FOURCC_##BAYER, \
- kWidth, kHeight, &frame1)); \
- EXPECT_TRUE(ConvertRgb(ms.get(), cricket::FOURCC_ARGB, kWidth, kHeight, \
- &frame2)); \
- EXPECT_TRUE(IsEqual(frame1, frame2, 60)); \
- }
-
- // Test constructing an image from Bayer formats.
- TEST_BYR(ConstructBayerGRBG, GRBG)
- TEST_BYR(ConstructBayerGBRG, GBRG)
- TEST_BYR(ConstructBayerBGGR, BGGR)
- TEST_BYR(ConstructBayerRGGB, RGGB)
-
-
// Macro to help test different rotations
#define TEST_MIRROR(FOURCC, BPP) \
void Construct##FOURCC##Mirror() { \
@@ -1547,22 +1505,6 @@
ConvertToBuffer(2, 0, false, TO, kError,
cricket::FOURCC_R444, libyuv::ARGB4444ToI420);
}
- void ConvertToBayerBGGRBuffer() {
- ConvertToBuffer(1, 0, false, TO, kErrorHigh,
- cricket::FOURCC_BGGR, libyuv::BayerBGGRToI420);
- }
- void ConvertToBayerGBRGBuffer() {
- ConvertToBuffer(1, 0, false, TO, kErrorHigh,
- cricket::FOURCC_GBRG, libyuv::BayerGBRGToI420);
- }
- void ConvertToBayerGRBGBuffer() {
- ConvertToBuffer(1, 0, false, TO, kErrorHigh,
- cricket::FOURCC_GRBG, libyuv::BayerGRBGToI420);
- }
- void ConvertToBayerRGGBBuffer() {
- ConvertToBuffer(1, 0, false, TO, kErrorHigh,
- cricket::FOURCC_RGGB, libyuv::BayerRGGBToI420);
- }
void ConvertToI400Buffer() {
ConvertToBuffer(1, 0, false, TO, 128,
cricket::FOURCC_I400, libyuv::I400ToI420);
@@ -1609,22 +1551,6 @@
ConvertToBuffer(2, kOddStride, false, TO, kError,
cricket::FOURCC_R444, libyuv::ARGB4444ToI420);
}
- void ConvertToBayerBGGRBufferStride() {
- ConvertToBuffer(1, kOddStride, false, TO, kErrorHigh,
- cricket::FOURCC_BGGR, libyuv::BayerBGGRToI420);
- }
- void ConvertToBayerGBRGBufferStride() {
- ConvertToBuffer(1, kOddStride, false, TO, kErrorHigh,
- cricket::FOURCC_GBRG, libyuv::BayerGBRGToI420);
- }
- void ConvertToBayerGRBGBufferStride() {
- ConvertToBuffer(1, kOddStride, false, TO, kErrorHigh,
- cricket::FOURCC_GRBG, libyuv::BayerGRBGToI420);
- }
- void ConvertToBayerRGGBBufferStride() {
- ConvertToBuffer(1, kOddStride, false, TO, kErrorHigh,
- cricket::FOURCC_RGGB, libyuv::BayerRGGBToI420);
- }
void ConvertToI400BufferStride() {
ConvertToBuffer(1, kOddStride, false, TO, 128,
cricket::FOURCC_I400, libyuv::I400ToI420);
@@ -1671,22 +1597,6 @@
ConvertToBuffer(2, 0, true, TO, kError,
cricket::FOURCC_R444, libyuv::ARGB4444ToI420);
}
- void ConvertToBayerBGGRBufferInverted() {
- ConvertToBuffer(1, 0, true, TO, kErrorHigh,
- cricket::FOURCC_BGGR, libyuv::BayerBGGRToI420);
- }
- void ConvertToBayerGBRGBufferInverted() {
- ConvertToBuffer(1, 0, true, TO, kErrorHigh,
- cricket::FOURCC_GBRG, libyuv::BayerGBRGToI420);
- }
- void ConvertToBayerGRBGBufferInverted() {
- ConvertToBuffer(1, 0, true, TO, kErrorHigh,
- cricket::FOURCC_GRBG, libyuv::BayerGRBGToI420);
- }
- void ConvertToBayerRGGBBufferInverted() {
- ConvertToBuffer(1, 0, true, TO, kErrorHigh,
- cricket::FOURCC_RGGB, libyuv::BayerRGGBToI420);
- }
void ConvertToI400BufferInverted() {
ConvertToBuffer(1, 0, true, TO, 128,
cricket::FOURCC_I400, libyuv::I400ToI420);
@@ -1733,22 +1643,6 @@
ConvertToBuffer(2, 0, false, FROM, kError,
cricket::FOURCC_R444, libyuv::ARGB4444ToI420);
}
- void ConvertFromBayerBGGRBuffer() {
- ConvertToBuffer(1, 0, false, FROM, kErrorHigh,
- cricket::FOURCC_BGGR, libyuv::BayerBGGRToI420);
- }
- void ConvertFromBayerGBRGBuffer() {
- ConvertToBuffer(1, 0, false, FROM, kErrorHigh,
- cricket::FOURCC_GBRG, libyuv::BayerGBRGToI420);
- }
- void ConvertFromBayerGRBGBuffer() {
- ConvertToBuffer(1, 0, false, FROM, kErrorHigh,
- cricket::FOURCC_GRBG, libyuv::BayerGRBGToI420);
- }
- void ConvertFromBayerRGGBBuffer() {
- ConvertToBuffer(1, 0, false, FROM, kErrorHigh,
- cricket::FOURCC_RGGB, libyuv::BayerRGGBToI420);
- }
void ConvertFromI400Buffer() {
ConvertToBuffer(1, 0, false, FROM, 128,
cricket::FOURCC_I400, libyuv::I400ToI420);
@@ -1795,22 +1689,6 @@
ConvertToBuffer(2, kOddStride, false, FROM, kError,
cricket::FOURCC_R444, libyuv::ARGB4444ToI420);
}
- void ConvertFromBayerBGGRBufferStride() {
- ConvertToBuffer(1, kOddStride, false, FROM, kErrorHigh,
- cricket::FOURCC_BGGR, libyuv::BayerBGGRToI420);
- }
- void ConvertFromBayerGBRGBufferStride() {
- ConvertToBuffer(1, kOddStride, false, FROM, kErrorHigh,
- cricket::FOURCC_GBRG, libyuv::BayerGBRGToI420);
- }
- void ConvertFromBayerGRBGBufferStride() {
- ConvertToBuffer(1, kOddStride, false, FROM, kErrorHigh,
- cricket::FOURCC_GRBG, libyuv::BayerGRBGToI420);
- }
- void ConvertFromBayerRGGBBufferStride() {
- ConvertToBuffer(1, kOddStride, false, FROM, kErrorHigh,
- cricket::FOURCC_RGGB, libyuv::BayerRGGBToI420);
- }
void ConvertFromI400BufferStride() {
ConvertToBuffer(1, kOddStride, false, FROM, 128,
cricket::FOURCC_I400, libyuv::I400ToI420);
@@ -1857,22 +1735,6 @@
ConvertToBuffer(2, 0, true, FROM, kError,
cricket::FOURCC_R444, libyuv::ARGB4444ToI420);
}
- void ConvertFromBayerBGGRBufferInverted() {
- ConvertToBuffer(1, 0, true, FROM, kErrorHigh,
- cricket::FOURCC_BGGR, libyuv::BayerBGGRToI420);
- }
- void ConvertFromBayerGBRGBufferInverted() {
- ConvertToBuffer(1, 0, true, FROM, kErrorHigh,
- cricket::FOURCC_GBRG, libyuv::BayerGBRGToI420);
- }
- void ConvertFromBayerGRBGBufferInverted() {
- ConvertToBuffer(1, 0, true, FROM, kErrorHigh,
- cricket::FOURCC_GRBG, libyuv::BayerGRBGToI420);
- }
- void ConvertFromBayerRGGBBufferInverted() {
- ConvertToBuffer(1, 0, true, FROM, kErrorHigh,
- cricket::FOURCC_RGGB, libyuv::BayerRGGBToI420);
- }
void ConvertFromI400BufferInverted() {
ConvertToBuffer(1, 0, true, FROM, 128,
cricket::FOURCC_I400, libyuv::I400ToI420);
@@ -1910,110 +1772,6 @@
EXPECT_TRUE(IsEqual(frame1, frame2, 1));
}
- #define TEST_TOBYR(NAME, BAYER) \
- void NAME() { \
- size_t bayer_size = kWidth * kHeight; \
- rtc::scoped_ptr<uint8[]> bayerbuf(new uint8[ \
- bayer_size + kAlignment]); \
- uint8* bayer = ALIGNP(bayerbuf.get(), kAlignment); \
- T frame; \
- rtc::scoped_ptr<rtc::MemoryStream> ms( \
- CreateRgbSample(cricket::FOURCC_ARGB, kWidth, kHeight)); \
- ASSERT_TRUE(ms.get() != NULL); \
- for (int i = 0; i < repeat_; ++i) { \
- libyuv::ARGBToBayer##BAYER(reinterpret_cast<uint8*>(ms->GetBuffer()), \
- kWidth * 4, \
- bayer, kWidth, \
- kWidth, kHeight); \
- } \
- rtc::scoped_ptr<rtc::MemoryStream> ms2( \
- CreateRgbSample(cricket::FOURCC_ARGB, kWidth, kHeight)); \
- size_t data_size; \
- bool ret = ms2->GetSize(&data_size); \
- EXPECT_TRUE(ret); \
- libyuv::Bayer##BAYER##ToARGB(bayer, kWidth, \
- reinterpret_cast<uint8*>(ms2->GetBuffer()), \
- kWidth * 4, \
- kWidth, kHeight); \
- EXPECT_TRUE(IsPlaneEqual("argb", \
- reinterpret_cast<uint8*>(ms->GetBuffer()), kWidth * 4, \
- reinterpret_cast<uint8*>(ms2->GetBuffer()), kWidth * 4, \
- kWidth * 4, kHeight, 240)); \
- } \
- void NAME##Unaligned() { \
- size_t bayer_size = kWidth * kHeight; \
- rtc::scoped_ptr<uint8[]> bayerbuf(new uint8[ \
- bayer_size + 1 + kAlignment]); \
- uint8* bayer = ALIGNP(bayerbuf.get(), kAlignment) + 1; \
- T frame; \
- rtc::scoped_ptr<rtc::MemoryStream> ms( \
- CreateRgbSample(cricket::FOURCC_ARGB, kWidth, kHeight)); \
- ASSERT_TRUE(ms.get() != NULL); \
- for (int i = 0; i < repeat_; ++i) { \
- libyuv::ARGBToBayer##BAYER(reinterpret_cast<uint8*>(ms->GetBuffer()), \
- kWidth * 4, \
- bayer, kWidth, \
- kWidth, kHeight); \
- } \
- rtc::scoped_ptr<rtc::MemoryStream> ms2( \
- CreateRgbSample(cricket::FOURCC_ARGB, kWidth, kHeight)); \
- size_t data_size; \
- bool ret = ms2->GetSize(&data_size); \
- EXPECT_TRUE(ret); \
- libyuv::Bayer##BAYER##ToARGB(bayer, kWidth, \
- reinterpret_cast<uint8*>(ms2->GetBuffer()), \
- kWidth * 4, \
- kWidth, kHeight); \
- EXPECT_TRUE(IsPlaneEqual("argb", \
- reinterpret_cast<uint8*>(ms->GetBuffer()), kWidth * 4, \
- reinterpret_cast<uint8*>(ms2->GetBuffer()), kWidth * 4, \
- kWidth * 4, kHeight, 240)); \
- }
-
- // Tests ARGB to Bayer formats.
- TEST_TOBYR(ConvertARGBToBayerGRBG, GRBG)
- TEST_TOBYR(ConvertARGBToBayerGBRG, GBRG)
- TEST_TOBYR(ConvertARGBToBayerBGGR, BGGR)
- TEST_TOBYR(ConvertARGBToBayerRGGB, RGGB)
-
- #define TEST_BYRTORGB(NAME, BAYER) \
- void NAME() { \
- size_t bayer_size = kWidth * kHeight; \
- rtc::scoped_ptr<uint8[]> bayerbuf(new uint8[ \
- bayer_size + kAlignment]); \
- uint8* bayer1 = ALIGNP(bayerbuf.get(), kAlignment); \
- for (int i = 0; i < kWidth * kHeight; ++i) { \
- bayer1[i] = static_cast<uint8>(i * 33u + 183u); \
- } \
- T frame; \
- rtc::scoped_ptr<rtc::MemoryStream> ms( \
- CreateRgbSample(cricket::FOURCC_ARGB, kWidth, kHeight)); \
- ASSERT_TRUE(ms.get() != NULL); \
- for (int i = 0; i < repeat_; ++i) { \
- libyuv::Bayer##BAYER##ToARGB(bayer1, kWidth, \
- reinterpret_cast<uint8*>(ms->GetBuffer()), \
- kWidth * 4, \
- kWidth, kHeight); \
- } \
- rtc::scoped_ptr<uint8[]> bayer2buf(new uint8[ \
- bayer_size + kAlignment]); \
- uint8* bayer2 = ALIGNP(bayer2buf.get(), kAlignment); \
- libyuv::ARGBToBayer##BAYER(reinterpret_cast<uint8*>(ms->GetBuffer()), \
- kWidth * 4, \
- bayer2, kWidth, \
- kWidth, kHeight); \
- EXPECT_TRUE(IsPlaneEqual("bayer", \
- bayer1, kWidth, \
- bayer2, kWidth, \
- kWidth, kHeight, 0)); \
- }
-
- // Tests Bayer formats to ARGB.
- TEST_BYRTORGB(ConvertBayerGRBGToARGB, GRBG)
- TEST_BYRTORGB(ConvertBayerGBRGToARGB, GBRG)
- TEST_BYRTORGB(ConvertBayerBGGRToARGB, BGGR)
- TEST_BYRTORGB(ConvertBayerRGGBToARGB, RGGB)
-
///////////////////
// General tests //
///////////////////
diff --git a/talk/media/webrtc/webrtcvideoframe_unittest.cc b/talk/media/webrtc/webrtcvideoframe_unittest.cc
index e3c4311..7386f51 100644
--- a/talk/media/webrtc/webrtcvideoframe_unittest.cc
+++ b/talk/media/webrtc/webrtcvideoframe_unittest.cc
@@ -120,7 +120,6 @@
TEST_WEBRTCVIDEOFRAME(ConstructYV12)
TEST_WEBRTCVIDEOFRAME(ConstructUyvy)
TEST_WEBRTCVIDEOFRAME(ConstructM420)
-TEST_WEBRTCVIDEOFRAME(ConstructQ420)
TEST_WEBRTCVIDEOFRAME(ConstructNV21)
TEST_WEBRTCVIDEOFRAME(ConstructNV12)
TEST_WEBRTCVIDEOFRAME(ConstructABGR)
@@ -217,18 +216,6 @@
TEST_WEBRTCVIDEOFRAME(ConvertToRGB565Buffer)
TEST_WEBRTCVIDEOFRAME(ConvertToRGB565BufferStride)
TEST_WEBRTCVIDEOFRAME(ConvertToRGB565BufferInverted)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerBGGRBuffer)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerBGGRBufferStride)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerBGGRBufferInverted)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerGRBGBuffer)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerGRBGBufferStride)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerGRBGBufferInverted)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerGBRGBuffer)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerGBRGBufferStride)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerGBRGBufferInverted)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerRGGBBuffer)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerRGGBBufferStride)
-TEST_WEBRTCVIDEOFRAME(ConvertToBayerRGGBBufferInverted)
TEST_WEBRTCVIDEOFRAME(ConvertToI400Buffer)
TEST_WEBRTCVIDEOFRAME(ConvertToI400BufferStride)
TEST_WEBRTCVIDEOFRAME(ConvertToI400BufferInverted)
@@ -262,18 +249,6 @@
TEST_WEBRTCVIDEOFRAME(ConvertFromRGB565Buffer)
TEST_WEBRTCVIDEOFRAME(ConvertFromRGB565BufferStride)
TEST_WEBRTCVIDEOFRAME(ConvertFromRGB565BufferInverted)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerBGGRBuffer)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerBGGRBufferStride)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerBGGRBufferInverted)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerGRBGBuffer)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerGRBGBufferStride)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerGRBGBufferInverted)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerGBRGBuffer)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerGBRGBufferStride)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerGBRGBufferInverted)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerRGGBBuffer)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerRGGBBufferStride)
-TEST_WEBRTCVIDEOFRAME(ConvertFromBayerRGGBBufferInverted)
TEST_WEBRTCVIDEOFRAME(ConvertFromI400Buffer)
TEST_WEBRTCVIDEOFRAME(ConvertFromI400BufferStride)
TEST_WEBRTCVIDEOFRAME(ConvertFromI400BufferInverted)
@@ -284,10 +259,6 @@
TEST_WEBRTCVIDEOFRAME(ConvertFromUYVYBufferStride)
TEST_WEBRTCVIDEOFRAME(ConvertFromUYVYBufferInverted)
// TEST_WEBRTCVIDEOFRAME(ConvertToI422Buffer)
-TEST_WEBRTCVIDEOFRAME(ConvertARGBToBayerGRBG)
-TEST_WEBRTCVIDEOFRAME(ConvertARGBToBayerGBRG)
-TEST_WEBRTCVIDEOFRAME(ConvertARGBToBayerBGGR)
-TEST_WEBRTCVIDEOFRAME(ConvertARGBToBayerRGGB)
TEST_WEBRTCVIDEOFRAME(CopyToBuffer)
TEST_WEBRTCVIDEOFRAME(CopyToFrame)
TEST_WEBRTCVIDEOFRAME(Write)
diff --git a/talk/session/media/planarfunctions_unittest.cc b/talk/session/media/planarfunctions_unittest.cc
index 19b1475..e7a666e 100644
--- a/talk/session/media/planarfunctions_unittest.cc
+++ b/talk/session/media/planarfunctions_unittest.cc
@@ -30,7 +30,6 @@
#include "libyuv/convert.h"
#include "libyuv/convert_from.h"
#include "libyuv/convert_from_argb.h"
-#include "libyuv/format_conversion.h"
#include "libyuv/mjpeg_decoder.h"
#include "libyuv/planar_functions.h"
#include "talk/media/base/testutils.h"
@@ -255,57 +254,6 @@
}
return image_pointer;
}
- // Generate a Red-Green-Blue inter-weaving chessboard-like
- // Q420 testing image.
- // The pattern looks like c0 c1 c2 c3 ...
- // c1 c2 c3 c4 ...
- // c2 c3 c4 c5 ...
- // ...............
- // The size of each chrome block is (block_size) x (block_size).
- uint8* CreateFakeQ420TestingImage(int height, int width, int block_size,
- uint8* &y_pointer, uint8* &yuy2_pointer) {
- if (height <= 0 || width <= 0 || block_size <= 0) { return NULL; }
- // Regularize the width of the output to be even.
- int awidth = (width + 1) & ~1;
-
- uint8* image_pointer = new uint8[(height / 2) * awidth * 2 +
- ((height + 1) / 2) * width + kAlignment];
- y_pointer = ALIGNP(image_pointer, kAlignment);
- yuy2_pointer = y_pointer + ((height + 1) / 2) * width;
- uint8* current_yuy2_pointer = yuy2_pointer;
- uint8* current_y_pointer = y_pointer;
- for (int j = 0; j < height; ++j) {
- if (j % 2 == 0) {
- for (int i = 0; i < width; ++i) {
- int color = ((i / block_size) + (j / block_size)) %
- kTestingColorNum;
- *(current_y_pointer++) = testing_color_y_[color];
- }
- } else {
- for (int i = 0; i < awidth; i += 2, current_yuy2_pointer += 4) {
- int color1 = ((i / block_size) + (j / block_size)) %
- kTestingColorNum;
- int color2 = (((i + 1) / block_size) + (j / block_size)) %
- kTestingColorNum;
- current_yuy2_pointer[0] = testing_color_y_[color1];
- if (i < width) {
- current_yuy2_pointer[1] = static_cast<uint8>(
- (static_cast<uint32>(testing_color_u_[color1]) +
- static_cast<uint32>(testing_color_u_[color2])) / 2);
- current_yuy2_pointer[2] = testing_color_y_[color2];
- current_yuy2_pointer[3] = static_cast<uint8>(
- (static_cast<uint32>(testing_color_v_[color1]) +
- static_cast<uint32>(testing_color_v_[color2])) / 2);
- } else {
- current_yuy2_pointer[1] = testing_color_u_[color1];
- current_yuy2_pointer[2] = 0;
- current_yuy2_pointer[3] = testing_color_v_[color1];
- }
- }
- }
- }
- return image_pointer;
- }
// Generate a Red-Green-Blue inter-weaving chessboard-like
// NV12 testing image.
@@ -605,53 +553,6 @@
if (dump_) { DumpYuvImage(y_output_pointer, kWidth, kHeight); }
}
-TEST_P(PlanarFunctionsTest, Q420ToI420) {
- // Get the unalignment offset
- int unalignment = GetParam();
- uint8 *y_pointer = NULL, *yuy2_pointer = NULL;
- int y_pitch = kWidth;
- int yuy2_pitch = 2 * ((kWidth + 1) & ~1);
- int u_pitch = (kWidth + 1) >> 1;
- int v_pitch = (kWidth + 1) >> 1;
- int y_size = kHeight * kWidth;
- int uv_size = ((kHeight + 1) >> 1) * ((kWidth + 1) >> 1);
- int block_size = 2;
- // Generate a fake input image.
- rtc::scoped_ptr<uint8[]> yuv_input(
- CreateFakeQ420TestingImage(kHeight, kWidth, block_size,
- y_pointer, yuy2_pointer));
- // Allocate space for the output image.
- rtc::scoped_ptr<uint8[]> yuv_output(
- new uint8[I420_SIZE(kHeight, kWidth) + kAlignment + unalignment]);
- uint8 *y_output_pointer = ALIGNP(yuv_output.get(), kAlignment) +
- unalignment;
- uint8 *u_output_pointer = y_output_pointer + y_size;
- uint8 *v_output_pointer = u_output_pointer + uv_size;
- // Generate the expected output.
- uint8 *y_expected_pointer = NULL, *u_expected_pointer = NULL,
- *v_expected_pointer = NULL;
- rtc::scoped_ptr<uint8[]> yuv_output_expected(
- CreateFakeYuvTestingImage(kHeight, kWidth, block_size,
- libyuv::kJpegYuv420,
- y_expected_pointer, u_expected_pointer, v_expected_pointer));
-
- for (int i = 0; i < repeat_; ++i) {
- libyuv::Q420ToI420(y_pointer, y_pitch,
- yuy2_pointer, yuy2_pitch,
- y_output_pointer, y_pitch,
- u_output_pointer, u_pitch,
- v_output_pointer, v_pitch,
- kWidth, kHeight);
- }
- // Compare the output frame with what is expected; expect exactly the same.
- // Note: MSE should be set to a larger threshold if an odd block width
- // is used, since the conversion will be lossy.
- EXPECT_TRUE(IsMemoryEqual(y_output_pointer, y_expected_pointer,
- I420_SIZE(kHeight, kWidth), 1.e-6));
-
- if (dump_) { DumpYuvImage(y_output_pointer, kWidth, kHeight); }
-}
-
TEST_P(PlanarFunctionsTest, M420ToI420) {
// Get the unalignment offset
int unalignment = GetParam();