Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(761)

Side by Side Diff: cc/resources/video_resource_updater.cc

Issue 2763223003: Reland of cc: Don't use StreamVideoDrawQuad on any platform but Android. (Closed)
Patch Set: Fix tests. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/resources/video_resource_updater.h ('k') | cc/resources/video_resource_updater_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/resources/video_resource_updater.h" 5 #include "cc/resources/video_resource_updater.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 17 matching lines...) Expand all
28 #include "third_party/skia/include/core/SkCanvas.h" 28 #include "third_party/skia/include/core/SkCanvas.h"
29 #include "ui/gfx/geometry/size_conversions.h" 29 #include "ui/gfx/geometry/size_conversions.h"
30 30
31 namespace cc { 31 namespace cc {
32 32
33 namespace { 33 namespace {
34 34
35 const ResourceFormat kRGBResourceFormat = RGBA_8888; 35 const ResourceFormat kRGBResourceFormat = RGBA_8888;
36 36
37 VideoFrameExternalResources::ResourceType ResourceTypeForVideoFrame( 37 VideoFrameExternalResources::ResourceType ResourceTypeForVideoFrame(
38 media::VideoFrame* video_frame) { 38 media::VideoFrame* video_frame,
39 bool use_stream_video_draw_quad) {
39 switch (video_frame->format()) { 40 switch (video_frame->format()) {
40 case media::PIXEL_FORMAT_ARGB: 41 case media::PIXEL_FORMAT_ARGB:
41 case media::PIXEL_FORMAT_XRGB: 42 case media::PIXEL_FORMAT_XRGB:
42 case media::PIXEL_FORMAT_UYVY: 43 case media::PIXEL_FORMAT_UYVY:
43 switch (video_frame->mailbox_holder(0).texture_target) { 44 switch (video_frame->mailbox_holder(0).texture_target) {
45 case GL_TEXTURE_EXTERNAL_OES:
46 if (use_stream_video_draw_quad &&
47 !video_frame->metadata()->IsTrue(
48 media::VideoFrameMetadata::COPY_REQUIRED))
49 return VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE;
44 case GL_TEXTURE_2D: 50 case GL_TEXTURE_2D:
45 return (video_frame->format() == media::PIXEL_FORMAT_XRGB) 51 return (video_frame->format() == media::PIXEL_FORMAT_XRGB)
46 ? VideoFrameExternalResources::RGB_RESOURCE 52 ? VideoFrameExternalResources::RGB_RESOURCE
47 : VideoFrameExternalResources::RGBA_PREMULTIPLIED_RESOURCE; 53 : VideoFrameExternalResources::RGBA_PREMULTIPLIED_RESOURCE;
48 case GL_TEXTURE_EXTERNAL_OES:
49 return video_frame->metadata()->IsTrue(
50 media::VideoFrameMetadata::COPY_REQUIRED)
51 ? VideoFrameExternalResources::RGBA_RESOURCE
52 : VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE;
53 case GL_TEXTURE_RECTANGLE_ARB: 54 case GL_TEXTURE_RECTANGLE_ARB:
54 return VideoFrameExternalResources::RGB_RESOURCE; 55 return VideoFrameExternalResources::RGB_RESOURCE;
55 default: 56 default:
56 NOTREACHED(); 57 NOTREACHED();
57 break; 58 break;
58 } 59 }
59 break; 60 break;
60 case media::PIXEL_FORMAT_I420: 61 case media::PIXEL_FORMAT_I420:
61 return VideoFrameExternalResources::YUV_RESOURCE; 62 return VideoFrameExternalResources::YUV_RESOURCE;
62 break; 63 break;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 offset(0.0f), 166 offset(0.0f),
166 multiplier(1.0f), 167 multiplier(1.0f),
167 bits_per_channel(8) {} 168 bits_per_channel(8) {}
168 169
169 VideoFrameExternalResources::VideoFrameExternalResources( 170 VideoFrameExternalResources::VideoFrameExternalResources(
170 const VideoFrameExternalResources& other) = default; 171 const VideoFrameExternalResources& other) = default;
171 172
172 VideoFrameExternalResources::~VideoFrameExternalResources() {} 173 VideoFrameExternalResources::~VideoFrameExternalResources() {}
173 174
174 VideoResourceUpdater::VideoResourceUpdater(ContextProvider* context_provider, 175 VideoResourceUpdater::VideoResourceUpdater(ContextProvider* context_provider,
175 ResourceProvider* resource_provider) 176 ResourceProvider* resource_provider,
177 bool use_stream_video_draw_quad)
176 : context_provider_(context_provider), 178 : context_provider_(context_provider),
177 resource_provider_(resource_provider), 179 resource_provider_(resource_provider),
180 use_stream_video_draw_quad_(use_stream_video_draw_quad),
178 weak_ptr_factory_(this) {} 181 weak_ptr_factory_(this) {}
179 182
180 VideoResourceUpdater::~VideoResourceUpdater() { 183 VideoResourceUpdater::~VideoResourceUpdater() {
181 for (const PlaneResource& plane_resource : all_resources_) 184 for (const PlaneResource& plane_resource : all_resources_)
182 resource_provider_->DeleteResource(plane_resource.resource_id()); 185 resource_provider_->DeleteResource(plane_resource.resource_id());
183 } 186 }
184 187
185 VideoResourceUpdater::ResourceList::iterator 188 VideoResourceUpdater::ResourceList::iterator
186 VideoResourceUpdater::RecycleOrAllocateResource( 189 VideoResourceUpdater::RecycleOrAllocateResource(
187 const gfx::Size& resource_size, 190 const gfx::Size& resource_size,
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 if (!context_provider_) 626 if (!context_provider_)
624 return VideoFrameExternalResources(); 627 return VideoFrameExternalResources();
625 628
626 VideoFrameExternalResources external_resources; 629 VideoFrameExternalResources external_resources;
627 if (video_frame->metadata()->IsTrue( 630 if (video_frame->metadata()->IsTrue(
628 media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED)) { 631 media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED)) {
629 external_resources.read_lock_fences_enabled = true; 632 external_resources.read_lock_fences_enabled = true;
630 } 633 }
631 gfx::ColorSpace resource_color_space = video_frame->ColorSpace(); 634 gfx::ColorSpace resource_color_space = video_frame->ColorSpace();
632 635
633 external_resources.type = ResourceTypeForVideoFrame(video_frame.get()); 636 external_resources.type =
637 ResourceTypeForVideoFrame(video_frame.get(), use_stream_video_draw_quad_);
634 if (external_resources.type == VideoFrameExternalResources::NONE) { 638 if (external_resources.type == VideoFrameExternalResources::NONE) {
635 DLOG(ERROR) << "Unsupported Texture format" 639 DLOG(ERROR) << "Unsupported Texture format"
636 << media::VideoPixelFormatToString(video_frame->format()); 640 << media::VideoPixelFormatToString(video_frame->format());
637 return external_resources; 641 return external_resources;
638 } 642 }
639 if (external_resources.type == VideoFrameExternalResources::RGB_RESOURCE) 643 if (external_resources.type == VideoFrameExternalResources::RGB_RESOURCE)
640 resource_color_space = resource_color_space.GetAsFullRangeRGB(); 644 resource_color_space = resource_color_space.GetAsFullRangeRGB();
641 645
642 const size_t num_planes = media::VideoFrame::NumPlanes(video_frame->format()); 646 const size_t num_planes = media::VideoFrame::NumPlanes(video_frame->format());
643 for (size_t i = 0; i < num_planes; ++i) { 647 for (size_t i = 0; i < num_planes; ++i) {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 if (lost_resource) { 703 if (lost_resource) {
700 resource_it->clear_refs(); 704 resource_it->clear_refs();
701 updater->DeleteResource(resource_it); 705 updater->DeleteResource(resource_it);
702 return; 706 return;
703 } 707 }
704 708
705 resource_it->remove_ref(); 709 resource_it->remove_ref();
706 } 710 }
707 711
708 } // namespace cc 712 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/video_resource_updater.h ('k') | cc/resources/video_resource_updater_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698