| Index: media/gpu/video_decode_accelerator_unittest.cc
|
| diff --git a/media/gpu/video_decode_accelerator_unittest.cc b/media/gpu/video_decode_accelerator_unittest.cc
|
| index 991394b37ace2c5fa050def69f3da60a6d9f33f3..7174f7a14d20b5d9c3aef44cb6223597a718b0a3 100644
|
| --- a/media/gpu/video_decode_accelerator_unittest.cc
|
| +++ b/media/gpu/video_decode_accelerator_unittest.cc
|
| @@ -1527,16 +1527,33 @@ TEST_P(VideoDecodeAcceleratorParamTest, TestSimpleDecode) {
|
| }
|
|
|
| if (render_as_thumbnails) {
|
| - std::vector<unsigned char> rgb;
|
| - bool alpha_solid;
|
| + std::vector<unsigned char> rgba;
|
| base::WaitableEvent done(base::WaitableEvent::ResetPolicy::AUTOMATIC,
|
| base::WaitableEvent::InitialState::NOT_SIGNALED);
|
| g_env->GetRenderingTaskRunner()->PostTask(
|
| - FROM_HERE, base::Bind(&RenderingHelper::GetThumbnailsAsRGB,
|
| - base::Unretained(&rendering_helper_), &rgb,
|
| - &alpha_solid, &done));
|
| + FROM_HERE,
|
| + base::Bind(&RenderingHelper::GetThumbnailsAsRGBA,
|
| + base::Unretained(&rendering_helper_), &rgba, &done));
|
| done.Wait();
|
|
|
| + std::vector<unsigned char> rgb;
|
| + size_t num_pixels = rgba.size() / 4;
|
| +
|
| + rgb.resize(num_pixels * 3);
|
| + // Drop the alpha channel, but check as we go that it is all 0xff.
|
| + bool solid = true;
|
| + unsigned char* rgb_ptr = &rgb[0];
|
| + unsigned char* rgba_ptr = &rgba[0];
|
| + for (size_t i = 0; i < num_pixels; i++) {
|
| + *rgb_ptr++ = *rgba_ptr++;
|
| + *rgb_ptr++ = *rgba_ptr++;
|
| + *rgb_ptr++ = *rgba_ptr++;
|
| + solid = solid && (*rgba_ptr == 0xff);
|
| + rgba_ptr++;
|
| + }
|
| +
|
| + EXPECT_EQ(solid, true) << "RGBA frame had incorrect alpha";
|
| +
|
| std::vector<std::string> golden_md5s;
|
| std::string md5_string = base::MD5String(
|
| base::StringPiece(reinterpret_cast<char*>(&rgb[0]), rgb.size()));
|
| @@ -1544,15 +1561,12 @@ TEST_P(VideoDecodeAcceleratorParamTest, TestSimpleDecode) {
|
| std::vector<std::string>::iterator match =
|
| find(golden_md5s.begin(), golden_md5s.end(), md5_string);
|
| if (match == golden_md5s.end()) {
|
| - // Convert raw RGB into PNG for export.
|
| + // Convert raw RGBA into PNG for export.
|
| std::vector<unsigned char> png;
|
| - gfx::PNGCodec::Encode(&rgb[0],
|
| - gfx::PNGCodec::FORMAT_RGB,
|
| + gfx::PNGCodec::Encode(&rgba[0], gfx::PNGCodec::FORMAT_RGBA,
|
| kThumbnailsPageSize,
|
| - kThumbnailsPageSize.width() * 3,
|
| - true,
|
| - std::vector<gfx::PNGCodec::Comment>(),
|
| - &png);
|
| + kThumbnailsPageSize.width() * 4, true,
|
| + std::vector<gfx::PNGCodec::Comment>(), &png);
|
|
|
| LOG(ERROR) << "Unknown thumbnails MD5: " << md5_string;
|
|
|
| @@ -1577,7 +1591,6 @@ TEST_P(VideoDecodeAcceleratorParamTest, TestSimpleDecode) {
|
| EXPECT_EQ(num_bytes, static_cast<int>(png.size()));
|
| }
|
| EXPECT_NE(match, golden_md5s.end());
|
| - EXPECT_EQ(alpha_solid, true) << "RGBA frame had incorrect alpha";
|
| }
|
|
|
| // Output the frame delivery time to file
|
|
|