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

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

Issue 2920893003: Revert of cc: Don't use StreamVideoDrawQuad on any platform but Android. (Closed)
Patch Set: Fix merge conflict. 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) {
40 switch (video_frame->format()) { 39 switch (video_frame->format()) {
41 case media::PIXEL_FORMAT_ARGB: 40 case media::PIXEL_FORMAT_ARGB:
42 case media::PIXEL_FORMAT_XRGB: 41 case media::PIXEL_FORMAT_XRGB:
43 case media::PIXEL_FORMAT_UYVY: 42 case media::PIXEL_FORMAT_UYVY:
44 switch (video_frame->mailbox_holder(0).texture_target) { 43 switch (video_frame->mailbox_holder(0).texture_target) {
45 case GL_TEXTURE_2D: 44 case GL_TEXTURE_2D:
46 return (video_frame->format() == media::PIXEL_FORMAT_XRGB) 45 return (video_frame->format() == media::PIXEL_FORMAT_XRGB)
47 ? VideoFrameExternalResources::RGB_RESOURCE 46 ? VideoFrameExternalResources::RGB_RESOURCE
48 : VideoFrameExternalResources::RGBA_PREMULTIPLIED_RESOURCE; 47 : VideoFrameExternalResources::RGBA_PREMULTIPLIED_RESOURCE;
49 case GL_TEXTURE_EXTERNAL_OES: 48 case GL_TEXTURE_EXTERNAL_OES:
50 if (use_stream_video_draw_quad && 49 return video_frame->metadata()->IsTrue(
51 !video_frame->metadata()->IsTrue( 50 media::VideoFrameMetadata::COPY_REQUIRED)
52 media::VideoFrameMetadata::COPY_REQUIRED)) 51 ? VideoFrameExternalResources::RGBA_RESOURCE
53 return VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE; 52 : VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE;
54 return VideoFrameExternalResources::RGBA_RESOURCE;
55 case GL_TEXTURE_RECTANGLE_ARB: 53 case GL_TEXTURE_RECTANGLE_ARB:
56 return VideoFrameExternalResources::RGB_RESOURCE; 54 return VideoFrameExternalResources::RGB_RESOURCE;
57 default: 55 default:
58 NOTREACHED(); 56 NOTREACHED();
59 break; 57 break;
60 } 58 }
61 break; 59 break;
62 case media::PIXEL_FORMAT_I420: 60 case media::PIXEL_FORMAT_I420:
63 return VideoFrameExternalResources::YUV_RESOURCE; 61 return VideoFrameExternalResources::YUV_RESOURCE;
64 break; 62 break;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 offset(0.0f), 165 offset(0.0f),
168 multiplier(1.0f), 166 multiplier(1.0f),
169 bits_per_channel(8) {} 167 bits_per_channel(8) {}
170 168
171 VideoFrameExternalResources::VideoFrameExternalResources( 169 VideoFrameExternalResources::VideoFrameExternalResources(
172 const VideoFrameExternalResources& other) = default; 170 const VideoFrameExternalResources& other) = default;
173 171
174 VideoFrameExternalResources::~VideoFrameExternalResources() {} 172 VideoFrameExternalResources::~VideoFrameExternalResources() {}
175 173
176 VideoResourceUpdater::VideoResourceUpdater(ContextProvider* context_provider, 174 VideoResourceUpdater::VideoResourceUpdater(ContextProvider* context_provider,
177 ResourceProvider* resource_provider, 175 ResourceProvider* resource_provider)
178 bool use_stream_video_draw_quad)
179 : context_provider_(context_provider), 176 : context_provider_(context_provider),
180 resource_provider_(resource_provider), 177 resource_provider_(resource_provider),
181 use_stream_video_draw_quad_(use_stream_video_draw_quad),
182 weak_ptr_factory_(this) {} 178 weak_ptr_factory_(this) {}
183 179
184 VideoResourceUpdater::~VideoResourceUpdater() { 180 VideoResourceUpdater::~VideoResourceUpdater() {
185 for (const PlaneResource& plane_resource : all_resources_) 181 for (const PlaneResource& plane_resource : all_resources_)
186 resource_provider_->DeleteResource(plane_resource.resource_id()); 182 resource_provider_->DeleteResource(plane_resource.resource_id());
187 } 183 }
188 184
189 VideoResourceUpdater::ResourceList::iterator 185 VideoResourceUpdater::ResourceList::iterator
190 VideoResourceUpdater::RecycleOrAllocateResource( 186 VideoResourceUpdater::RecycleOrAllocateResource(
191 const gfx::Size& resource_size, 187 const gfx::Size& resource_size,
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 if (!context_provider_) 623 if (!context_provider_)
628 return VideoFrameExternalResources(); 624 return VideoFrameExternalResources();
629 625
630 VideoFrameExternalResources external_resources; 626 VideoFrameExternalResources external_resources;
631 if (video_frame->metadata()->IsTrue( 627 if (video_frame->metadata()->IsTrue(
632 media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED)) { 628 media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED)) {
633 external_resources.read_lock_fences_enabled = true; 629 external_resources.read_lock_fences_enabled = true;
634 } 630 }
635 gfx::ColorSpace resource_color_space = video_frame->ColorSpace(); 631 gfx::ColorSpace resource_color_space = video_frame->ColorSpace();
636 632
637 external_resources.type = 633 external_resources.type = ResourceTypeForVideoFrame(video_frame.get());
638 ResourceTypeForVideoFrame(video_frame.get(), use_stream_video_draw_quad_);
639 if (external_resources.type == VideoFrameExternalResources::NONE) { 634 if (external_resources.type == VideoFrameExternalResources::NONE) {
640 DLOG(ERROR) << "Unsupported Texture format" 635 DLOG(ERROR) << "Unsupported Texture format"
641 << media::VideoPixelFormatToString(video_frame->format()); 636 << media::VideoPixelFormatToString(video_frame->format());
642 return external_resources; 637 return external_resources;
643 } 638 }
644 if (external_resources.type == VideoFrameExternalResources::RGB_RESOURCE) 639 if (external_resources.type == VideoFrameExternalResources::RGB_RESOURCE)
645 resource_color_space = resource_color_space.GetAsFullRangeRGB(); 640 resource_color_space = resource_color_space.GetAsFullRangeRGB();
646 641
647 const size_t num_planes = media::VideoFrame::NumPlanes(video_frame->format()); 642 const size_t num_planes = media::VideoFrame::NumPlanes(video_frame->format());
648 for (size_t i = 0; i < num_planes; ++i) { 643 for (size_t i = 0; i < num_planes; ++i) {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 if (lost_resource) { 699 if (lost_resource) {
705 resource_it->clear_refs(); 700 resource_it->clear_refs();
706 updater->DeleteResource(resource_it); 701 updater->DeleteResource(resource_it);
707 return; 702 return;
708 } 703 }
709 704
710 resource_it->remove_ref(); 705 resource_it->remove_ref();
711 } 706 }
712 707
713 } // namespace cc 708 } // 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