| Index: cc/resources/video_resource_updater.cc
|
| diff --git a/cc/resources/video_resource_updater.cc b/cc/resources/video_resource_updater.cc
|
| index 994b6eb2a3811a832050caf4ccf6404173e080da..dadc62a3719476fa2a27d0094e7dc7f08046aa14 100644
|
| --- a/cc/resources/video_resource_updater.cc
|
| +++ b/cc/resources/video_resource_updater.cc
|
| @@ -24,49 +24,6 @@
|
| namespace {
|
|
|
| const ResourceFormat kRGBResourceFormat = RGBA_8888;
|
| -
|
| -VideoFrameExternalResources::ResourceType ResourceTypeForVideoFrame(
|
| - media::VideoFrame* video_frame) {
|
| - switch (video_frame->format()) {
|
| - case media::PIXEL_FORMAT_ARGB:
|
| - case media::PIXEL_FORMAT_XRGB:
|
| - case media::PIXEL_FORMAT_UYVY:
|
| - switch (video_frame->mailbox_holder(0).texture_target) {
|
| - case GL_TEXTURE_2D:
|
| - return (video_frame->format() == media::PIXEL_FORMAT_XRGB)
|
| - ? VideoFrameExternalResources::RGB_RESOURCE
|
| - : VideoFrameExternalResources::RGBA_RESOURCE;
|
| - case GL_TEXTURE_EXTERNAL_OES:
|
| - return VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE;
|
| - case GL_TEXTURE_RECTANGLE_ARB:
|
| - return VideoFrameExternalResources::IO_SURFACE;
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| - break;
|
| - case media::PIXEL_FORMAT_I420:
|
| - return VideoFrameExternalResources::YUV_RESOURCE;
|
| - break;
|
| - case media::PIXEL_FORMAT_NV12:
|
| - DCHECK_EQ(static_cast<uint32_t>(GL_TEXTURE_RECTANGLE_ARB),
|
| - video_frame->mailbox_holder(0).texture_target);
|
| - return VideoFrameExternalResources::IO_SURFACE;
|
| - break;
|
| - case media::PIXEL_FORMAT_YV12:
|
| - case media::PIXEL_FORMAT_YV16:
|
| - case media::PIXEL_FORMAT_YV24:
|
| - case media::PIXEL_FORMAT_YV12A:
|
| - case media::PIXEL_FORMAT_NV21:
|
| - case media::PIXEL_FORMAT_YUY2:
|
| - case media::PIXEL_FORMAT_RGB24:
|
| - case media::PIXEL_FORMAT_RGB32:
|
| - case media::PIXEL_FORMAT_MJPEG:
|
| - case media::PIXEL_FORMAT_UNKNOWN:
|
| - break;
|
| - }
|
| - return VideoFrameExternalResources::NONE;
|
| -}
|
|
|
| class SyncPointClientImpl : public media::VideoFrame::SyncPointClient {
|
| public:
|
| @@ -418,21 +375,56 @@
|
| if (!context_provider_)
|
| return VideoFrameExternalResources();
|
|
|
| + const size_t textures = media::VideoFrame::NumPlanes(video_frame->format());
|
| + DCHECK_GE(textures, 1u);
|
| VideoFrameExternalResources external_resources;
|
| external_resources.read_lock_fences_enabled = true;
|
| -
|
| - external_resources.type = ResourceTypeForVideoFrame(video_frame.get());
|
| - if (external_resources.type == VideoFrameExternalResources::NONE) {
|
| - DLOG(ERROR) << "Unsupported Texture format"
|
| - << media::VideoPixelFormatToString(video_frame->format());
|
| - return external_resources;
|
| - }
|
| -
|
| - const size_t num_planes = media::VideoFrame::NumPlanes(video_frame->format());
|
| - for (size_t i = 0; i < num_planes; ++i) {
|
| + switch (video_frame->format()) {
|
| + case media::PIXEL_FORMAT_ARGB:
|
| + case media::PIXEL_FORMAT_XRGB:
|
| + case media::PIXEL_FORMAT_UYVY:
|
| + DCHECK_EQ(1u, textures);
|
| + switch (video_frame->mailbox_holder(0).texture_target) {
|
| + case GL_TEXTURE_2D:
|
| + external_resources.type =
|
| + (video_frame->format() == media::PIXEL_FORMAT_XRGB)
|
| + ? VideoFrameExternalResources::RGB_RESOURCE
|
| + : VideoFrameExternalResources::RGBA_RESOURCE;
|
| + break;
|
| + case GL_TEXTURE_EXTERNAL_OES:
|
| + external_resources.type =
|
| + VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE;
|
| + break;
|
| + case GL_TEXTURE_RECTANGLE_ARB:
|
| + external_resources.type = VideoFrameExternalResources::IO_SURFACE;
|
| + break;
|
| + default:
|
| + NOTREACHED();
|
| + return VideoFrameExternalResources();
|
| + }
|
| + break;
|
| + case media::PIXEL_FORMAT_I420:
|
| + external_resources.type = VideoFrameExternalResources::YUV_RESOURCE;
|
| + break;
|
| + case media::PIXEL_FORMAT_YV12:
|
| + case media::PIXEL_FORMAT_YV16:
|
| + case media::PIXEL_FORMAT_YV24:
|
| + case media::PIXEL_FORMAT_YV12A:
|
| + case media::PIXEL_FORMAT_NV12:
|
| + case media::PIXEL_FORMAT_NV21:
|
| + case media::PIXEL_FORMAT_YUY2:
|
| + case media::PIXEL_FORMAT_RGB24:
|
| + case media::PIXEL_FORMAT_RGB32:
|
| + case media::PIXEL_FORMAT_MJPEG:
|
| + case media::PIXEL_FORMAT_UNKNOWN:
|
| + DLOG(ERROR) << "Unsupported Texture format"
|
| + << media::VideoPixelFormatToString(video_frame->format());
|
| + return external_resources;
|
| + }
|
| + DCHECK_NE(VideoFrameExternalResources::NONE, external_resources.type);
|
| +
|
| + for (size_t i = 0; i < textures; ++i) {
|
| const gpu::MailboxHolder& mailbox_holder = video_frame->mailbox_holder(i);
|
| - if (mailbox_holder.mailbox.IsZero())
|
| - break;
|
| external_resources.mailboxes.push_back(
|
| TextureMailbox(mailbox_holder.mailbox, mailbox_holder.texture_target,
|
| mailbox_holder.sync_point, video_frame->coded_size(),
|
|
|