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

Side by Side Diff: cc/layers/video_layer_impl.cc

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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/layers/video_layer_impl.h ('k') | cc/output/begin_frame_args.h » ('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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/layers/video_layer_impl.h" 5 #include "cc/layers/video_layer_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "cc/layers/video_frame_provider_client_impl.h" 9 #include "cc/layers/video_frame_provider_client_impl.h"
10 #include "cc/quads/io_surface_draw_quad.h" 10 #include "cc/quads/io_surface_draw_quad.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 } 65 }
66 66
67 void VideoLayerImpl::PushPropertiesTo(LayerImpl* layer) { 67 void VideoLayerImpl::PushPropertiesTo(LayerImpl* layer) {
68 LayerImpl::PushPropertiesTo(layer); 68 LayerImpl::PushPropertiesTo(layer);
69 69
70 VideoLayerImpl* other = static_cast<VideoLayerImpl*>(layer); 70 VideoLayerImpl* other = static_cast<VideoLayerImpl*>(layer);
71 other->SetProviderClientImpl(provider_client_impl_); 71 other->SetProviderClientImpl(provider_client_impl_);
72 } 72 }
73 73
74 void VideoLayerImpl::DidBecomeActive() { 74 void VideoLayerImpl::DidBecomeActive() {
75 provider_client_impl_->set_active_video_layer(this); 75 provider_client_impl_->SetActiveVideoLayer(this);
76 } 76 }
77 77
78 bool VideoLayerImpl::WillDraw(DrawMode draw_mode, 78 bool VideoLayerImpl::WillDraw(DrawMode draw_mode,
79 ResourceProvider* resource_provider) { 79 ResourceProvider* resource_provider) {
80 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) 80 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE)
81 return false; 81 return false;
82 82
83 // Explicitly acquire and release the provider mutex so it can be held from 83 // Explicitly acquire and release the provider mutex so it can be held from
84 // WillDraw to DidDraw. Since the compositor thread is in the middle of 84 // WillDraw to DidDraw. Since the compositor thread is in the middle of
85 // drawing, the layer will not be destroyed before DidDraw is called. 85 // drawing, the layer will not be destroyed before DidDraw is called.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 external_resources.mailboxes[i], 125 external_resources.mailboxes[i],
126 SingleReleaseCallbackImpl::Create( 126 SingleReleaseCallbackImpl::Create(
127 external_resources.release_callbacks[i])); 127 external_resources.release_callbacks[i]));
128 frame_resources_.push_back(resource_id); 128 frame_resources_.push_back(resource_id);
129 } 129 }
130 130
131 return true; 131 return true;
132 } 132 }
133 133
134 void VideoLayerImpl::AppendQuads(RenderPass* render_pass, 134 void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
135 const Occlusion& occlusion_in_content_space,
136 AppendQuadsData* append_quads_data) { 135 AppendQuadsData* append_quads_data) {
137 DCHECK(frame_.get()); 136 DCHECK(frame_.get());
138 137
139 gfx::Transform transform = draw_transform(); 138 gfx::Transform transform = draw_transform();
140 gfx::Size rotated_size = content_bounds(); 139 gfx::Size rotated_size = content_bounds();
141 140
142 switch (video_rotation_) { 141 switch (video_rotation_) {
143 case media::VIDEO_ROTATION_90: 142 case media::VIDEO_ROTATION_90:
144 rotated_size = gfx::Size(rotated_size.height(), rotated_size.width()); 143 rotated_size = gfx::Size(rotated_size.height(), rotated_size.width());
145 transform.Rotate(90.0); 144 transform.Rotate(90.0);
(...skipping 19 matching lines...) Expand all
165 164
166 AppendDebugBorderQuad( 165 AppendDebugBorderQuad(
167 render_pass, rotated_size, shared_quad_state, append_quads_data); 166 render_pass, rotated_size, shared_quad_state, append_quads_data);
168 167
169 gfx::Rect quad_rect(rotated_size); 168 gfx::Rect quad_rect(rotated_size);
170 gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); 169 gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect());
171 gfx::Rect visible_rect = frame_->visible_rect(); 170 gfx::Rect visible_rect = frame_->visible_rect();
172 gfx::Size coded_size = frame_->coded_size(); 171 gfx::Size coded_size = frame_->coded_size();
173 172
174 Occlusion occlusion_in_video_space = 173 Occlusion occlusion_in_video_space =
175 occlusion_in_content_space.GetOcclusionWithGivenDrawTransform(transform); 174 draw_properties()
175 .occlusion_in_content_space.GetOcclusionWithGivenDrawTransform(
176 transform);
176 gfx::Rect visible_quad_rect = 177 gfx::Rect visible_quad_rect =
177 occlusion_in_video_space.GetUnoccludedContentRect(quad_rect); 178 occlusion_in_video_space.GetUnoccludedContentRect(quad_rect);
178 if (visible_quad_rect.IsEmpty()) 179 if (visible_quad_rect.IsEmpty())
179 return; 180 return;
180 181
181 // Pixels for macroblocked formats. 182 // Pixels for macroblocked formats.
182 const float tex_width_scale = 183 const float tex_width_scale =
183 static_cast<float>(visible_rect.width()) / coded_size.width(); 184 static_cast<float>(visible_rect.width()) / coded_size.width();
184 const float tex_height_scale = 185 const float tex_height_scale =
185 static_cast<float>(visible_rect.height()) / coded_size.height(); 186 static_cast<float>(visible_rect.height()) / coded_size.height();
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 void VideoLayerImpl::SetProviderClientImpl( 364 void VideoLayerImpl::SetProviderClientImpl(
364 scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl) { 365 scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl) {
365 provider_client_impl_ = provider_client_impl; 366 provider_client_impl_ = provider_client_impl;
366 } 367 }
367 368
368 const char* VideoLayerImpl::LayerTypeAsString() const { 369 const char* VideoLayerImpl::LayerTypeAsString() const {
369 return "cc::VideoLayerImpl"; 370 return "cc::VideoLayerImpl";
370 } 371 }
371 372
372 } // namespace cc 373 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/video_layer_impl.h ('k') | cc/output/begin_frame_args.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698