| Index: cc/resources/video_resource_updater_unittest.cc
|
| diff --git a/cc/resources/video_resource_updater_unittest.cc b/cc/resources/video_resource_updater_unittest.cc
|
| index 135d14453b68d4109d21b7b7b3d614848d9ce157..dfa9fa2e4ec769ae85e086bdc4a50c63fd1b14df 100644
|
| --- a/cc/resources/video_resource_updater_unittest.cc
|
| +++ b/cc/resources/video_resource_updater_unittest.cc
|
| @@ -214,24 +214,25 @@ class VideoResourceUpdaterTest : public testing::Test {
|
| return video_frame;
|
| }
|
|
|
| - scoped_refptr<media::VideoFrame> CreateTestYuvHardwareVideoFrame() {
|
| + scoped_refptr<media::VideoFrame> CreateTestYuvHardwareVideoFrame(
|
| + media::VideoPixelFormat format,
|
| + unsigned target,
|
| + bool is_single_gmb) {
|
| const int kDimension = 10;
|
| gfx::Size size(kDimension, kDimension);
|
|
|
| const gpu::SyncToken sync_token(
|
| gpu::CommandBufferNamespace::GPU_IO, 0,
|
| gpu::CommandBufferId::FromUnsafeValue(0x123), 7);
|
| - const unsigned target = GL_TEXTURE_RECTANGLE_ARB;
|
| - const int kPlanesNum = 3;
|
| gpu::MailboxHolder mailbox_holders[media::VideoFrame::kMaxPlanes];
|
| - for (int i = 0; i < kPlanesNum; ++i) {
|
| + size_t num_plane = is_single_gmb ? 1 : media::VideoFrame::NumPlanes(format);
|
| + for (size_t i = 0; i < num_plane; ++i) {
|
| gpu::Mailbox mailbox;
|
| mailbox.name[0] = 50 + 1;
|
| mailbox_holders[i] = gpu::MailboxHolder(mailbox, sync_token, target);
|
| }
|
| scoped_refptr<media::VideoFrame> video_frame =
|
| - media::VideoFrame::WrapNativeTextures(media::PIXEL_FORMAT_I420,
|
| - mailbox_holders,
|
| + media::VideoFrame::WrapNativeTextures(format, mailbox_holders,
|
| base::Bind(&ReleaseMailboxCB),
|
| size, // coded_size
|
| gfx::Rect(size), // visible_rect
|
| @@ -488,7 +489,8 @@ TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes) {
|
| EXPECT_EQ(1u, resources.release_callbacks.size());
|
| EXPECT_EQ(0u, resources.software_resources.size());
|
|
|
| - video_frame = CreateTestYuvHardwareVideoFrame();
|
| + video_frame = CreateTestYuvHardwareVideoFrame(
|
| + media::PIXEL_FORMAT_I420, GL_TEXTURE_RECTANGLE_ARB, false);
|
|
|
| resources = updater.CreateExternalResourcesFromVideoFrame(video_frame);
|
| EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type);
|
| @@ -497,7 +499,39 @@ TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes) {
|
| EXPECT_EQ(0u, resources.software_resources.size());
|
| EXPECT_FALSE(resources.read_lock_fences_enabled);
|
|
|
| - video_frame = CreateTestYuvHardwareVideoFrame();
|
| + video_frame = CreateTestYuvHardwareVideoFrame(
|
| + media::PIXEL_FORMAT_I420, GL_TEXTURE_RECTANGLE_ARB, false);
|
| + video_frame->metadata()->SetBoolean(
|
| + media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED, true);
|
| +
|
| + resources = updater.CreateExternalResourcesFromVideoFrame(video_frame);
|
| + EXPECT_TRUE(resources.read_lock_fences_enabled);
|
| +}
|
| +
|
| +TEST_F(VideoResourceUpdaterTest, CreateForNV12HardwarePlanes) {
|
| + VideoResourceUpdater updater(context_provider_.get(),
|
| + resource_provider3d_.get());
|
| +
|
| + scoped_refptr<media::VideoFrame> video_frame =
|
| + CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_NV12,
|
| + GL_TEXTURE_EXTERNAL_OES, false);
|
| +
|
| + VideoFrameExternalResources resources =
|
| + updater.CreateExternalResourcesFromVideoFrame(video_frame);
|
| +
|
| + EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type);
|
| + EXPECT_EQ(2u, resources.mailboxes.size());
|
| + EXPECT_EQ(2u, resources.release_callbacks.size());
|
| + EXPECT_EQ(0u, resources.software_resources.size());
|
| + EXPECT_FALSE(resources.read_lock_fences_enabled);
|
| +
|
| + video_frame = CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_NV12,
|
| + GL_TEXTURE_EXTERNAL_OES, true);
|
| + resources = updater.CreateExternalResourcesFromVideoFrame(video_frame);
|
| + EXPECT_EQ(VideoFrameExternalResources::RGB_RESOURCE, resources.type);
|
| +
|
| + video_frame = CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_NV12,
|
| + GL_TEXTURE_EXTERNAL_OES, false);
|
| video_frame->metadata()->SetBoolean(
|
| media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED, true);
|
|
|
|
|