| Index: media/base/yuv_convert_unittest.cc
|
| diff --git a/media/base/yuv_convert_unittest.cc b/media/base/yuv_convert_unittest.cc
|
| index 729efa264cbfaf290cd52a3de001923cb3feb15e..28e1f1cfb9cf5d1ba74e017722489f5dc1927bea 100644
|
| --- a/media/base/yuv_convert_unittest.cc
|
| +++ b/media/base/yuv_convert_unittest.cc
|
| @@ -23,7 +23,18 @@ static const int kWidth = 640;
|
| static const int kHeight = 360;
|
| static const int kBpp = 4;
|
|
|
| -TEST(YuvConvertTest, Basic) {
|
| +// Surface sizes.
|
| +static const size_t kYUV12Size = kWidth * kHeight * 12 / 8;
|
| +static const size_t kYUV16Size = kWidth * kHeight * 16 / 8;
|
| +static const size_t kRGBSize = kWidth * kHeight * kBpp;
|
| +static const size_t kRGBSizeConverted = kWidth * kHeight * kBpp;
|
| +
|
| +TEST(YUVConvertTest, YV12) {
|
| + // Allocate all surfaces.
|
| + scoped_array<uint8> yuv_bytes(new uint8[kYUV12Size]);
|
| + scoped_array<uint8> rgb_bytes(new uint8[kRGBSize]);
|
| + scoped_array<uint8> rgb_converted_bytes(new uint8[kRGBSizeConverted]);
|
| +
|
| // Read YUV reference data from file.
|
| FilePath yuv_url;
|
| EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &yuv_url));
|
| @@ -31,12 +42,10 @@ TEST(YuvConvertTest, Basic) {
|
| .Append(FILE_PATH_LITERAL("test"))
|
| .Append(FILE_PATH_LITERAL("data"))
|
| .Append(FILE_PATH_LITERAL("bali.yv12.640_360.yuv"));
|
| - const size_t size_of_yuv = kWidth * kHeight * 12 / 8; // 12 bpp.
|
| - uint8* yuv_bytes = new uint8[size_of_yuv];
|
| - EXPECT_EQ(static_cast<int>(size_of_yuv),
|
| + EXPECT_EQ(static_cast<int>(kYUV12Size),
|
| file_util::ReadFile(yuv_url,
|
| - reinterpret_cast<char*>(yuv_bytes),
|
| - static_cast<int>(size_of_yuv)));
|
| + reinterpret_cast<char*>(yuv_bytes.get()),
|
| + static_cast<int>(kYUV12Size)));
|
|
|
| // Read RGB reference data from file.
|
| FilePath rgb_url;
|
| @@ -45,33 +54,33 @@ TEST(YuvConvertTest, Basic) {
|
| .Append(FILE_PATH_LITERAL("test"))
|
| .Append(FILE_PATH_LITERAL("data"))
|
| .Append(FILE_PATH_LITERAL("bali.yv12.640_360.rgb"));
|
| - const size_t size_of_rgb = kWidth * kHeight * kBpp;
|
| - uint8* rgb_bytes = new uint8[size_of_rgb];
|
| - EXPECT_EQ(static_cast<int>(size_of_rgb),
|
| + EXPECT_EQ(static_cast<int>(kRGBSize),
|
| file_util::ReadFile(rgb_url,
|
| - reinterpret_cast<char*>(rgb_bytes),
|
| - static_cast<int>(size_of_rgb)));
|
| + reinterpret_cast<char*>(rgb_bytes.get()),
|
| + static_cast<int>(kRGBSize)));
|
|
|
| // Convert a frame of YUV to 32 bit ARGB.
|
| - const size_t size_of_rgb_converted = kWidth * kHeight * kBpp;
|
| - uint8* rgb_converted_bytes = new uint8[size_of_rgb_converted];
|
| -
|
| - media::ConvertYV12ToRGB32(yuv_bytes, // Y plane
|
| - yuv_bytes + kWidth * kHeight, // U plane
|
| - yuv_bytes + kWidth * kHeight * 5 / 4, // V plane
|
| - rgb_converted_bytes, // Rgb output
|
| + media::ConvertYV12ToRGB32(yuv_bytes.get(), // Y
|
| + yuv_bytes.get() + kWidth * kHeight, // U
|
| + yuv_bytes.get() + kWidth * kHeight * 5 / 4, // V
|
| + rgb_converted_bytes.get(), // RGB output
|
| kWidth, kHeight, // Dimensions
|
| kWidth, // YStride
|
| - kWidth / 2, // UvStride
|
| - kWidth * kBpp); // RgbStride
|
| + kWidth / 2, // UVStride
|
| + kWidth * kBpp); // RGBStride
|
|
|
| // Compare converted YUV to reference conversion file.
|
| - int rgb_diff = memcmp(rgb_converted_bytes, rgb_bytes, size_of_rgb);
|
| + int rgb_diff = memcmp(rgb_converted_bytes.get(), rgb_bytes.get(), kRGBSize);
|
|
|
| EXPECT_EQ(rgb_diff, 0);
|
| }
|
|
|
| -TEST(YV16ConvertTest, Basic) {
|
| +TEST(YUVConvertTest, YV16) {
|
| + // Allocate all surfaces.
|
| + scoped_array<uint8> yuv_bytes(new uint8[kYUV16Size]);
|
| + scoped_array<uint8> rgb_bytes(new uint8[kRGBSize]);
|
| + scoped_array<uint8> rgb_converted_bytes(new uint8[kRGBSizeConverted]);
|
| +
|
| // Read YV16 reference data from file.
|
| FilePath yuv_url;
|
| EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &yuv_url));
|
| @@ -79,12 +88,10 @@ TEST(YV16ConvertTest, Basic) {
|
| .Append(FILE_PATH_LITERAL("test"))
|
| .Append(FILE_PATH_LITERAL("data"))
|
| .Append(FILE_PATH_LITERAL("bali.yv16.640_360.yuv"));
|
| - const size_t size_of_yuv = kWidth * kHeight * 16 / 8; // 16 bpp.
|
| - uint8* yuv_bytes = new uint8[size_of_yuv];
|
| - EXPECT_EQ(static_cast<int>(size_of_yuv),
|
| + EXPECT_EQ(static_cast<int>(kYUV16Size),
|
| file_util::ReadFile(yuv_url,
|
| - reinterpret_cast<char*>(yuv_bytes),
|
| - static_cast<int>(size_of_yuv)));
|
| + reinterpret_cast<char*>(yuv_bytes.get()),
|
| + static_cast<int>(kYUV16Size)));
|
|
|
| // Read RGB reference data from file.
|
| FilePath rgb_url;
|
| @@ -93,28 +100,23 @@ TEST(YV16ConvertTest, Basic) {
|
| .Append(FILE_PATH_LITERAL("test"))
|
| .Append(FILE_PATH_LITERAL("data"))
|
| .Append(FILE_PATH_LITERAL("bali.yv16.640_360.rgb"));
|
| - const size_t size_of_rgb = kWidth * kHeight * kBpp;
|
| - uint8* rgb_bytes = new uint8[size_of_rgb];
|
| - EXPECT_EQ(static_cast<int>(size_of_rgb),
|
| + EXPECT_EQ(static_cast<int>(kRGBSize),
|
| file_util::ReadFile(rgb_url,
|
| - reinterpret_cast<char*>(rgb_bytes),
|
| - static_cast<int>(size_of_rgb)));
|
| + reinterpret_cast<char*>(rgb_bytes.get()),
|
| + static_cast<int>(kRGBSize)));
|
|
|
| // Convert a frame of YUV to 32 bit ARGB.
|
| - const size_t size_of_rgb_converted = kWidth * kHeight * kBpp;
|
| - uint8* rgb_converted_bytes = new uint8[size_of_rgb_converted];
|
| -
|
| - media::ConvertYV16ToRGB32(yuv_bytes, // Y plane
|
| - yuv_bytes + kWidth * kHeight, // U plane
|
| - yuv_bytes + kWidth * kHeight * 3 / 2, // V plane
|
| - rgb_converted_bytes, // Rgb output
|
| + media::ConvertYV16ToRGB32(yuv_bytes.get(), // Y
|
| + yuv_bytes.get() + kWidth * kHeight, // U
|
| + yuv_bytes.get() + kWidth * kHeight * 3 / 2, // V
|
| + rgb_converted_bytes.get(), // RGB output
|
| kWidth, kHeight, // Dimensions
|
| kWidth, // YStride
|
| - kWidth / 2, // UvStride
|
| - kWidth * kBpp); // RgbStride
|
| + kWidth / 2, // UVStride
|
| + kWidth * kBpp); // RGBStride
|
|
|
| // Compare converted YUV to reference conversion file.
|
| - int rgb_diff = memcmp(rgb_converted_bytes, rgb_bytes, size_of_rgb);
|
| + int rgb_diff = memcmp(rgb_converted_bytes.get(), rgb_bytes.get(), kRGBSize);
|
|
|
| EXPECT_EQ(rgb_diff, 0);
|
| }
|
|
|