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 dce047cd523f382c989318a9bd421f9f2dc28710..9f7ab18b72cbe71e9f504bf7eab5da19d11bd883 100644 |
--- a/cc/resources/video_resource_updater_unittest.cc |
+++ b/cc/resources/video_resource_updater_unittest.cc |
@@ -172,7 +172,8 @@ class VideoResourceUpdaterTest : public testing::Test { |
static void ReleaseMailboxCB(const gpu::SyncToken& sync_token) {} |
scoped_refptr<media::VideoFrame> CreateTestHardwareVideoFrame( |
- unsigned target) { |
+ unsigned target, |
+ media::VideoPixelFormat format) { |
const int kDimension = 10; |
gfx::Size size(kDimension, kDimension); |
@@ -185,8 +186,7 @@ class VideoResourceUpdaterTest : public testing::Test { |
gpu::MailboxHolder mailbox_holders[media::VideoFrame::kMaxPlanes] = { |
gpu::MailboxHolder(mailbox, sync_token, target)}; |
scoped_refptr<media::VideoFrame> video_frame = |
- media::VideoFrame::WrapNativeTextures(media::PIXEL_FORMAT_ARGB, |
- mailbox_holders, |
+ media::VideoFrame::WrapNativeTextures(format, mailbox_holders, |
base::Bind(&ReleaseMailboxCB), |
size, // coded_size |
gfx::Rect(size), // visible_rect |
@@ -197,18 +197,28 @@ class VideoResourceUpdaterTest : public testing::Test { |
} |
scoped_refptr<media::VideoFrame> CreateTestRGBAHardwareVideoFrame() { |
- return CreateTestHardwareVideoFrame(GL_TEXTURE_2D); |
+ return CreateTestHardwareVideoFrame(GL_TEXTURE_2D, |
+ media::PIXEL_FORMAT_ARGB); |
} |
scoped_refptr<media::VideoFrame> CreateTestStreamTextureHardwareVideoFrame( |
bool needs_copy) { |
- scoped_refptr<media::VideoFrame> video_frame = |
- CreateTestHardwareVideoFrame(GL_TEXTURE_EXTERNAL_OES); |
+ scoped_refptr<media::VideoFrame> video_frame = CreateTestHardwareVideoFrame( |
+ GL_TEXTURE_EXTERNAL_OES, media::PIXEL_FORMAT_ARGB); |
video_frame->metadata()->SetBoolean( |
media::VideoFrameMetadata::COPY_REQUIRED, needs_copy); |
return video_frame; |
} |
+ scoped_refptr<media::VideoFrame> CreateTestUYVYTextureHardwareVideoFrame( |
+ unsigned target) { |
+ scoped_refptr<media::VideoFrame> video_frame = |
+ CreateTestHardwareVideoFrame(target, media::PIXEL_FORMAT_UYVY); |
+ video_frame->metadata()->SetBoolean( |
+ media::VideoFrameMetadata::COPY_REQUIRED, false); |
+ return video_frame; |
+ } |
+ |
scoped_refptr<media::VideoFrame> CreateTestYuvHardwareVideoFrame() { |
const int kDimension = 10; |
gfx::Size size(kDimension, kDimension); |
@@ -514,6 +524,31 @@ TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_StreamTexture) { |
EXPECT_FALSE(context3d_->WasImmutableTextureCreated()); |
} |
+TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_UYVYTexture) { |
+ VideoResourceUpdater updater(context_provider_.get(), |
+ resource_provider3d_.get()); |
+ |
+ scoped_refptr<media::VideoFrame> video_frame = |
+ CreateTestUYVYTextureHardwareVideoFrame(GL_TEXTURE_2D); |
+ |
+ VideoFrameExternalResources resources = |
+ updater.CreateExternalResourcesFromVideoFrame(video_frame); |
+ EXPECT_EQ(VideoFrameExternalResources::RGB_RESOURCE, resources.type); |
+ EXPECT_EQ(1u, resources.mailboxes.size()); |
+ EXPECT_EQ(1u, resources.release_callbacks.size()); |
+ EXPECT_EQ(0u, resources.software_resources.size()); |
+ |
+ video_frame = |
+ CreateTestUYVYTextureHardwareVideoFrame(GL_TEXTURE_EXTERNAL_OES); |
+ |
+ resources = updater.CreateExternalResourcesFromVideoFrame(video_frame); |
+ EXPECT_EQ(VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE, |
+ resources.type); |
+ EXPECT_EQ(1u, resources.mailboxes.size()); |
+ EXPECT_EQ(1u, resources.release_callbacks.size()); |
+ EXPECT_EQ(0u, resources.software_resources.size()); |
+} |
+ |
namespace { |
// Convert an IEEE 754 half-float to a double value |